OAuth2.0 연동: 두 판 사이의 차이
보이기
새 문서: == 개요 == OAuth2.0을 위키에 물리는 방법에 대해 다루는 문서. 이 문서는 미디어위키에 내가 직접 만든 OAuth2.0 인증 서버를 연동하여 로그인 기능을 구현하는 과정을 설명한다. == 전제 조건 == * 미디어위키 버전: 1.35 이상 * PHP 버전: 7.4 이상 * OAuth2 제공자(Authorization Server)는 RFC 6749를 준수 * 사용자 정보를 제공하는 <code>/userinfo</code> 엔드포인트 존재 == 과정 == {| class=... |
|||
| (다른 사용자 한 명의 중간 판 3개는 보이지 않습니다) | |||
| 1번째 줄: | 1번째 줄: | ||
== 개요 == | == 개요 == | ||
OAuth2.0을 위키에 물리는 방법에 대해 다루는 문서. | OAuth2.0을 위키에 물리는 방법에 대해 다루는 문서. 충돌이 너무 많이 나서 구현에는 실패;;;; 언젠가 버전 더 올라가면 다시 시도해보자;;; | ||
이 문서는 미디어위키에 내가 직접 만든 OAuth2.0 인증 서버를 연동하여 로그인 기능을 구현하는 과정을 설명한다. | 이 문서는 미디어위키에 내가 직접 만든 OAuth2.0 인증 서버를 연동하여 로그인 기능을 구현하는 과정을 설명한다. | ||
| 18번째 줄: | 18번째 줄: | ||
|- | |- | ||
|확장기능 설치 | |확장기능 설치 | ||
|PluggableAuth(인증 플러그인 인터페이스), OAuth2Client(OAuth2 인증 연동용)를 설치한다. | |PluggableAuth(인증 플러그인 인터페이스), [[mediawikiwiki:Extension:OAuth2_Client|OAuth2Client]](OAuth2 인증 연동용)를 설치한다. | ||
|<syntaxhighlight lang="bash"> | |<syntaxhighlight lang="bash"> | ||
# extensions 디렉토리에서 다음의 코드를 차례대로 실행. | # extensions 디렉토리에서 다음의 코드를 차례대로 실행. | ||
| 31번째 줄: | 31번째 줄: | ||
# OAuth2Client 확장 | # OAuth2Client 확장 | ||
cd .. | cd .. | ||
## 일반적인 확장기능과 달라서... 공식 페이지 가서 따라하는 게 좋을듯. | |||
</syntaxhighlight> | </syntaxhighlight> | ||
|- | |- | ||
|LocalSettings.php | |LocalSettings.php | ||
|일단 임시로 박아놓는다. | |일단 임시로 박아놓는다. | ||
|<syntaxhighlight lang="php"> | |<syntaxhighlight lang="php">wfLoadExtension( 'PluggableAuth' ); | ||
wfLoadExtension( 'PluggableAuth' ); | wfLoadExtension( 'MW-OAuth2Client' ); | ||
wfLoadExtension( 'OAuth2Client' ) | |||
// 클라이언트 등록 정보 | // 클라이언트 등록 정보 | ||
$wgOAuth2Client['client']['id'] = 'mediawiki-client-id'; | $wgOAuth2Client['client']['id'] = 'mediawiki-client-id'; | ||
$wgOAuth2Client['client']['secret'] = 'mediawiki-client-secret'; | $wgOAuth2Client['client']['secret'] = 'mediawiki-client-secret'; | ||
// OAuth2 인증 서버 엔드포인트 | // OAuth2 인증 서버 엔드포인트 | ||
$wgOAuth2Client[' | $wgOAuth2Client['configuration']['authorize_endpoint'] = 'https://auth.example.com/oauth/authorize'; | ||
$wgOAuth2Client[' | $wgOAuth2Client['configuration']['access_token_endpoint'] = 'https://auth.example.com/oauth/token'; | ||
$wgOAuth2Client[' | $wgOAuth2Client['configuration']['api_endpoint'] = ''; // URL to fetch user JSON | ||
$wgOAuth2Client['configuration']['redirect_uri'] = 'https://smwiki.info/Special:OAuth2Client/callback'; | |||
// 사용자 매핑 필드 | // 사용자 매핑 필드 | ||
$wgOAuth2Client[' | $wgOAuth2Client['configuration']['username'] = 'username'; | ||
$wgOAuth2Client[' | $wgOAuth2Client['configuration']['email'] = 'email'; | ||
$wgOAuth2Client[' | $wgOAuth2Client['configuration']['scopes'] = 'openid email profile'; | ||
$wgOAuth2Client['configuration']['service_name'] = '과학커뮤니티'; // the name of your service | |||
$ | $wgOAuth2Client['configuration']['service_login_link_text'] = 'Login with 과학드립';</syntaxhighlight> | ||
$ | |||
</syntaxhighlight> | |||
|- | |- | ||
|확인 | |확인 | ||
| 75번째 줄: | 68번째 줄: | ||
|} | |} | ||
== | == OAuth2 서버 설정 == | ||
OAuth2 서버(내가 만든 인증 제공자)에 클라이언트 등록: | OAuth2 서버(내가 만든 인증 제공자)에 클라이언트 등록: | ||
2025년 7월 10일 (목) 09:06 기준 최신판
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 서버(내가 만든 인증 제공자)에 클라이언트 등록:
- 클라이언트 ID:
mediawiki-client-id - 리디렉션 URI:
https://smwiki.info/index.php/Special:PluggableAuthLogin - 권한 범위 (scope):
openid email profile등