OAuth2.0 연동

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동

개요[편집 | 원본 편집]

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 ..
## 일반적인 확장기능과 달라서... 공식 페이지 가서 따라하는 게 좋을듯.
LocalSettings.php 일단 임시로 박아놓는다.
wfLoadExtension( 'PluggableAuth' );
wfLoadExtension( 'MW-OAuth2Client' );

// 클라이언트 등록 정보
$wgOAuth2Client['client']['id'] = 'mediawiki-client-id';
$wgOAuth2Client['client']['secret'] = 'mediawiki-client-secret';

// OAuth2 인증 서버 엔드포인트
$wgOAuth2Client['configuration']['authorize_endpoint'] = 'https://auth.example.com/oauth/authorize';
$wgOAuth2Client['configuration']['access_token_endpoint'] = 'https://auth.example.com/oauth/token';
$wgOAuth2Client['configuration']['api_endpoint'] = ''; // URL to fetch user JSON
$wgOAuth2Client['configuration']['redirect_uri'] = 'https://smwiki.info/Special:OAuth2Client/callback';

// 사용자 매핑 필드
$wgOAuth2Client['configuration']['username'] = 'username';
$wgOAuth2Client['configuration']['email'] = 'email';
$wgOAuth2Client['configuration']['scopes'] = 'openid email profile';

$wgOAuth2Client['configuration']['service_name'] = '과학커뮤니티'; // the name of your service
$wgOAuth2Client['configuration']['service_login_link_text'] = 'Login with 과학드립';
확인 설치가 잘 되었는지 확인.

PluggableAuth와 OAuth2Client이 잘 있나 확인.

특수:버전
값 기입

OAuth2 서버 설정[편집 | 원본 편집]

OAuth2 서버(내가 만든 인증 제공자)에 클라이언트 등록: