学認のIdPを用いた学内サービス用SPを構築する


学認のIdPを構築することで、学認で利用可能な外部のSPを利用可能となりますし、学認の多くのユーザに使ってもらうSPを構築することも可能です。一方で、作成したいSPの中には、外部のユーザに公開することが適切ではないサービスもあります。

そのようなサービスでは単に外部のユーザには使用できないだけではなく、学認の公式メタデータにもリストアップされず、認証に用いるIdPの選択画面なども表示されないようにする必要があります。

学認公式サイトの技術ガイドではこの辺りの手順がよくわからないので、以下にまとめてみます。

IdP側の設定

まずは、SPのメタデータを生成します。学認申請システム(運用フェデレーション用テストフェデレーション用は別です)にログインし、「新規SP申請」から「SPメタデータ情報」のところに必要なデータを入力し、そこにある「以下の内容でエンティティメタデータをテスト生成」をクリックすることでメタデータを生成できます。

この際、XMLファイル冒頭の<EntityDescriptor>のID属性は、適当に修正しましょう(他と同じでも特に問題はなさそうですが)。

これを適当なファイル名で、IdPの/opt/shibboleth-idp/metadata/に置きます(ここでは仮にtestsp.xmlというファイル名を仮定します)。そして、IdPのrelying-party.xmlの、/rp:RelyingPartyGroup/metadata:MetadataProviderの中にある

の前か後に、次のようにしてローカルメタデータへの参照を追加します。ここでも、id属性は適当に設定してください。複数のSPを登録したければこれを並べていけば問題ありません。

あとは通常通りattribute-filter.xmlに属性フィルタを追加してあげればIdP側の設定は問題ありません。

学内利用であればuApprove.jpの利用は不要と思われますので、uApprove.jpの設定ファイルの1つであるsp-blacklistに該当SPを追加すれば良いと思います。面倒であれば次のように正規表現で自ドメインごと許可してもよいかもしれません。

SP側の設定

まずは接続対象となるIdPのメタデータを取得します。これも学認申請システムからダウンロード可能です。承認済みIdPリストの「詳細」から、「以下の内容のエンティティメタデータを取得」で取得します。これをSPに転送し、CentOS等なら/etc/shibboleth/metadata、FreeBSDなら/usr/local/etc/shibboleth/metadataあたりに置きます(ここではファイル名としてmyidp-metadata.xmlを仮定します)。

そして、shibboleth2.xml内の「Example of locally maintained metadata」のところに、このメタデータのファイルを設定します。

なお、学認の技術ガイドにある、DSサーバの参照設定やメタデータの自動更新設定は必要ないので、設定する必要はありませんが、利用するIdPの定義は行う必要があります。具体的には、

の部分を<!– … –>でコメントアウトして、代わりに自サイトのデフォルトIdP情報として

を入れておけばいいと思います(SAML1は使う必要ないので外しました)。

あとは通常通りにSPを設定すれば問題ありません。たとえば、

のentityIDをSP自信のEntity IDに変更し、REMOTE_USERの部分には必要な属性のリストを並べます。そして、

の部分にSPの秘密鍵と証明書を設定します。なお、これらのファイルは元の場所から別の場所にコピーして、Shibbolethの実行ユーザ以外からは読めないようなパーミッションにするのが良いと思います。具体的にはLinuxでもFreeBSDでもユーザ名はshibdなので、

のように設定すれば良いのではないでしょうか(ただしFreeBSDの場合は、/etc/shibbolethのパス名を、/usr/local/etc/shibbolethに読み替えてください)。この場合のshibboleth2.xmlの設定は、

になります。

このくらい設定すれば、とりあえずShibboleth SPとして動作してくれると思います。

更新履歴

DSとメタデータの自動更新設定が不要であることとデフォルトのIdPの設定に関して追記しました。(2014/06/03)

SPの設定方法をより具体的に説明しました。(2014/06/04)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です