皆さん、こんにちは!
ついに、私の Discourse サイトを Shibboleth と統合することができました。仕組みがわかれば、実はとても簡単だったんです
。
-
1台のウェブサーバーで Shibboleth を動作させてください(Discourse サーバーと同じである必要はありません)。これを
shib.univ.eduと呼びましょう。 -
shib.univ.eduに Discourse SSO 用のディレクトリを用意してください。これをdiscourse-ssoと呼びましょう。 -
このディレクトリを Shibboleth で保護します。Apache を使用している場合、通常は
discourse-sso/.htaccessに以下のような設定を追加します。# Shibboleth ヘッダー AuthType Shibboleth ShibRequireSession On ShibApplicationId default ShibExportAssertion On require shib-user ~ ^.+@univ\.edu$ -
公式の Discourse SSO ガイド で説明されている署名処理を行うライブラリを取得してください。私は cviebrock/discourse-php を使用しています。使用方法の説明に従って、この中に
sso.phpを作成してください。 -
usernameとemailは環境変数eppnに格納されます。したがって、上記の cviebrock/discourse-php の使用方法に従った場合、以下のように設定するだけで済みます。// ここにユーザー認証コードを挿入... // 必須項目であり、アプリケーションと一貫している必要があります $userEmail = getenv( 'eppn' ); // 必須項目であり、アプリケーション固有の一意な値である必要があります $userId = strstr( $userEmail, '@', true ); -
公式の Discourse SSO ガイドに従って SSO を有効にしてください。
sso urlをhttps://shib.univ.edu/discourse-sso/sso.phpに設定すれば、準備完了です。
GI