今回は予告した通りID連携を、カスタムドメインの作成~SSO設定、OpenAMのIdP/SP/CoT(Circle of Trust)定義の順に実際に設定していきます。
◆OpenAM/IdP(Identity Provider)設定
今回の構成はOpenAM上のユーザでOffice365へログオンしたいので、OpenAMをIdentity Provider(IdP)として設定する必要があります。
尚、実際にはOffice365とOpenAMの間にAzureADが挟まっており、Office365/portal.office.com⇒(ws-federation)⇒AzureAD/login.microsoftonline.com⇒(SAML2.0)⇒OpenAMという流れになります。
前回も掲載した図を厳密に書くと以下のようになります。
早速設定を始めます。
OpenAMのインストールを終了し、管理コンソールの[共通タスク]より[ホストアイデンティティープロバイダの作成]をクリックし、IdP定義を作成します。
ここでの設定項目は署名に使う鍵とトラストサークルの2点だけです。
以下を設定します。
・署名鍵:test(実験なので。実際はちゃんとした証明書を使ってください)
・トラストサークル:新しいトラストサークルに追加、トラストサークル名「例)MSO365」
◆OpenAM/RP(Relying Party)設定
次はOffice365をOpenAMにRPとして設定します。
Office365はSAML2.0のメタデータを公開しているので、それをベースにRP設定をします。
まずは以下のURLにアクセスし、メタデータをダウンロードします。
https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml
※私はいつもIEで上記URLを開き、ファイルメニューの名前を付けて保存よりXMLファイルを保存しています。
早速ダウンロードしたメタデータをOpenAMにインポートと行きたいのですが、インポート前にXMLファイル内の最初の
以下を削除します。
メタデータの用意が出来たら、OpenAMの管理コンソールの[共通タスク]より[リモートサービスプロバイダを登録]をクリックし、先ほどのメタデータをベースにRP設定を行います。
以下を設定します。
・メタデータ:ファイル⇒先ほどのメタデータファイル(federationmetadata.xml)
・トラストサークル:先ほどIdP作成時に作ったCoT(MSO365)
・属性マッピング:表明内の名前⇒IDPEmail、ローカル属性名⇒mail
これでOpenAM側の設定は完了なので、OpenAMのIdP設定(IdPメタデータ)を出力しておきます。
以下のURLよりメタデータが取得できます。
http://
※realmやポートなどは環境によって異なります。
次はこのIdPメタデータを使ってOffice365/AzureAD側の設定を行います。
◆Office365/AzureADのカスタムドメインの認証設定を行う
ここではOffice365で使うカスタムドメインの認証をOpenAMとのFederationで行う様に設定を行います。
※ドメインの追加はOffice365の管理ポータルからでもAzureの管理ポータルからでも構いません。
※カスタムドメインを追加する手順は省略します。
具体的には、PowerShellの「Set-MsolDomainAuthentication」コマンドレットに以下のパラメータを付けて設定をします。
※当然ですがコマンドレット実行前に「Connect-MsolService」でAzureADへ接続しておいてください。
パラメータ | 設定する値 | 設定例 |
---|---|---|
DomainName | カスタムドメイン名 | example.com |
FederationBrandName | ブランド名(任意の値) | eIdentity |
Authentication | Federated固定 | Federated |
PassiveLogOnUri | IdPメタデータ内の ※Binding属性の値が「urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST」のもの | http://openam.example.com:8080/OpenAM-11.0.0/SSOPOST/metaAlias/idp |
SigningCertificate | IdPメタデータ内の | MIICQDCCAakCBEeNB0swDQYJ…. |
IssuerUri | IdPメタデータ内の | http://openam.example.com:8080/OpenAM-11.0.0 |
ActiveLogOnUri | IdPメタデータ内の ※Binding属性の値が「urn:oasis:names:tc:SAML:2.0:bindings:SOAP」のもの ※httpsでないと設定できないのでhttpsで設定(ブラウザを使ったアクセスではこの設定は使わないので、ダミーのURLでもよいのでとにかくhttpsのURLを設定すればOK) | https://openam.example.com:8080/OpenAM-11.0.0/SSOSoap/metaAlias/idp |
LogOffUri | IdPメタデータ内の ※Binding属性の値が「urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect」のもの | http://openam.example.com:8080/OpenAM-11.0.0/IDPSloRedirect/metaAlias/idp |
PreferredAuthenticationProtocol | 利用するID連携プロトコル(SAMLP) | SAMLP |
実際のコマンドは以下のように実行します。
$dom = "example.com" $url = "http://openam.example.com:8080/OpenAM-11.0.0/SSOPOST/metaAlias/idp" $cert = "MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09wZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAKBgNVB.............Fcfu2/PeYoAdiDAcGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC/FfwWigmrW0Y0Q==" $entity = "http://openam.example.com:8080/OpenAM-11.0.0" $ecp="https://openam.example.com:8080/OpenAM-11.0.0/SSOSoap/metaAlias/idp" $logout = "http://openam.example.com:8080/OpenAM-11.0.0/IDPSloRedirect/metaAlias/idp" Set-MsolDomainAuthentication -DomainName $dom -FederationBrandName eIdentity -Authentication Federated -PassiveLogOnUri $url -SigningCertificate $cert -IssuerUri $entity -ActiveLogOnUri $ecp -LogOffUri $logout -PreferredAuthenticationProtocol SAMLP
ちなみに設定結果は「Get-MsolDomainFederationSettings」コマンドレットで確認できます。
今回はここまでです。
次回はAzureAD上のユーザとOpenAM上のユーザの紐づけを行うためのプロビジョニング時の工夫について解説します。(単純に初期状態のディレクトリ同期だとImmutableIdでの紐づけがうまく行かないのでカスタマイズが一部必要になります)
0 件のコメント:
コメントを投稿