OAuth2.0 연동
보이기
개요
OAuth2.0을 위키에 물리는 방법에 대해 다루는 문서.
이 문서는 미디어위키에 내가 직접 만든 OAuth2.0 인증 서버를 연동하여 로그인 기능을 구현하는 과정을 설명한다.
전제 조건
- 미디어위키 버전: 1.35 이상
- PHP 버전: 7.4 이상
- OAuth2 제공자(Authorization Server)는 RFC 6749를 준수
- 사용자 정보를 제공하는
/userinfo엔드포인트 존재
과정
| 과정 | 설명 | 비고 |
|---|---|---|
| 확장기능 설치 | PluggableAuth(인증 플러그인 인터페이스), OAuth2Client(OAuth2 인증 연동용)를 설치한다. | # extensions 디렉토리에서 다음의 코드를 차례대로 실행.
cd /var/www/html/mediawiki/extensions
# PluggableAuth 확장
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/PluggableAuth
cd PluggableAuth
git checkout REL1_43 # 버전 맞춰주는 과정.
composer install --no-dev
# OAuth2Client 확장
cd ..
git clone https://github.com/United-Earth-Team/MW-OAuth2Client.git OAuth2Client
cd OAuth2Client
composer install --no-dev --no-plugins --no-scripts # SSL 문제로.. 무시하기 위해서.
|
| LocalSettings.php | 일단 임시로 박아놓는다. | wfLoadExtension( 'PluggableAuth' );
wfLoadExtension( 'OAuth2Client' );
$wgPluggableAuth_Class = "OAuth2Client";
// 클라이언트 등록 정보
$wgOAuth2Client['client']['id'] = 'mediawiki-client-id';
$wgOAuth2Client['client']['secret'] = 'mediawiki-client-secret';
$wgOAuth2Client['client']['redirect_uri'] = 'https://smwiki.info/index.php/Special:PluggableAuthLogin';
// OAuth2 인증 서버 엔드포인트
$wgOAuth2Client['authorization']['endpoint'] = 'https://auth.example.com/oauth/authorize';
$wgOAuth2Client['token']['endpoint'] = 'https://auth.example.com/oauth/token';
$wgOAuth2Client['userinfo']['endpoint'] = 'https://auth.example.com/api/userinfo';
// 사용자 매핑 필드
$wgOAuth2Client['userinfo']['username'] = 'username';
$wgOAuth2Client['userinfo']['email'] = 'email';
$wgOAuth2Client['userinfo']['realname'] = 'realname'; // 선택
// 로그인 UI 설정
$wgPluggableAuth_EnableAutoLogin = false;
$wgPluggableAuth_ButtonLabel = "로그인 (OAuth2)";
|
| 확인 | 설치가 잘 되었는지 확인.
PluggableAuth와 OAuth2Client이 잘 있나 확인. |
특수:버전 |
| 값 기입 |
2단계: LocalSettings.php 설정
3단계: OAuth2 서버 설정
OAuth2 서버(내가 만든 인증 제공자)에 클라이언트 등록:
- 클라이언트 ID:
mediawiki-client-id - 리디렉션 URI:
https://smwiki.info/index.php/Special:PluggableAuthLogin - 권한 범위 (scope):
openid email profile등