はじめに
こんにちは。Microsoft Tech Summit 2016に参加してきましたが、やはり皆さんAzure ADに興味があるようで、セミナーはほぼ満席でした。
今回はセミナー受講時に試してみたいと思ったAure ADとShibboleth IdP(OSS)を認証連携する方法をご説明します。
ゴールは、Azure ADで認証し学認(テストフェデレーション)にSSOできる事とします。学認との認証連携はShibboleth IdPがします。
前提条件として、Shibboleth IdPサーバの構築が完了し学認に認証連携できている事とShibboleth SPの構築が完了している事とします。構築手順は学認サイトを参考にしてください。
参考サイト(IdP):https://meatwiki.nii.ac.jp/confluence/pages/viewpage.action?pageId=12158179
参考サイト(SP):https://meatwiki.nii.ac.jp/confluence/display/GakuNinShibInstall/SP
また、Shibboleth IdPはAzure ADのアプリケーション一覧にないため、カスタムアプリケーションを利用します。そのため、Azure AD Premiumのライセンスが必要です。
Azure AD(Premium)でShibboleth IdPへのSSOを有効にする
- Azureの旧ポータルにログインします。
https://manage.windowsazure.com/ - Shibboleth IdPと認証連携するAzure Active Directoryを選択し、「アプリケーション」をクリックします。
- 画面下の「追加」をクリックします。
- 「ギャラリーからアプリケーションを追加します」をクリックします。
- 「カスタム」を選択し、「名前」に任意の値を入力します。
- 「シングルサインオンの構成」をクリックします。
- 「Microsoft Azure ADのシングルサインオン」を選択します。
- アプリケーション設定の構成で必要な情報を入力します。
※「詳細設定を表示します(オプション)」にチェックを付けると、サインオンURLが表示されます。myappsの画面で表示されるアイコンのリンク先を設定できます。
※サインオンURLなどhttpsで指定するとエラーとなり次の画面に進めません。httpsで指定します。
- 「証明書のダウンロード(Base 64)」をクリックし、IdPの証明書をダウンロードします。ここでダウンロードした証明書をShibboleth SPに設定します。
- Azure ADとShibboleth IdPの認証連携設定は完了です。
- 「アカウントの割り当て」をクリックし、Shibbolethへのアクセスを許可するアカウントを指定します。
学認にSSOする
- ブラウザを起動、https://myapps.microsoft.com にアクセスし、先ほどShibbolethの権限を割り当てユーザでログインします。
- アプリより、「Shibboleth」をクリックします。ユーザ名/パスワードを入力することなく学認(テストフェデレーション)にログインします。
補足
今回は、Azure ADが渡すデフォルトのnameid formatはemailAddressです。そのため、Shibboleth SPに以下設定が必要です。
■attribute-map.xml
<Attribute name=”urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress” id=”emailAddress”>
<AttributeDecoder xsi:type=”ScopedAttributeDecoder”/>
</Attribute>
<Attribute name=”urn:oid:0.9.2342.19200300.100.1.3″ id=”emailAddress”>
<AttributeDecoder xsi:type=”ScopedAttributeDecoder”/>
</Attribute>
■shibboleth2.xml
<ApplicationDefaults entityID=”https://ShibbolethSPのFQDN/shibboleth-sp”
REMOTE_USER=”emailAddress eppn persistent-id targeted-id”>
シングルサインオン や 統合認証 などの導入イメージ については下記をご覧ください!
https://sios.jp/products/oss-integration/service/oss_on_cloud/authentication.html