Shibboleth SSO と Discourse の連携

皆さん、こんにちは!

ついに、私の Discourse サイトを Shibboleth と統合することができました。仕組みがわかれば、実はとても簡単だったんです :joy:

  1. 1台のウェブサーバーで Shibboleth を動作させてください(Discourse サーバーと同じである必要はありません)。これを shib.univ.edu と呼びましょう。

  2. shib.univ.eduDiscourse SSO 用のディレクトリを用意してください。これを discourse-sso と呼びましょう。

  3. このディレクトリを Shibboleth で保護します。Apache を使用している場合、通常は discourse-sso/.htaccess に以下のような設定を追加します。

     # Shibboleth ヘッダー
     AuthType Shibboleth
     ShibRequireSession On
     ShibApplicationId default
     ShibExportAssertion On
    
     require shib-user ~ ^.+@univ\.edu$
    
  4. 公式の Discourse SSO ガイド で説明されている署名処理を行うライブラリを取得してください。私は cviebrock/discourse-php を使用しています。使用方法の説明に従って、この中に sso.php を作成してください。

  5. usernameemail は環境変数 eppn に格納されます。したがって、上記の cviebrock/discourse-php の使用方法に従った場合、以下のように設定するだけで済みます。

     // ここにユーザー認証コードを挿入...
     // 必須項目であり、アプリケーションと一貫している必要があります
     $userEmail = getenv( 'eppn' );
    
     // 必須項目であり、アプリケーション固有の一意な値である必要があります
     $userId = strstr( $userEmail, '@', true );
    
  6. 公式の Discourse SSO ガイドに従って SSO を有効にしてください。sso urlhttps://shib.univ.edu/discourse-sso/sso.php に設定すれば、準備完了です。

GI

「いいね!」 7