前回のおさらい
前回まででOpenAM側のSAML連携受け入れ態勢が整いました。
今回はSAML連携を行う対象のOffice365テナントに対して、OpenAMとの連携するための設定を行っていきます。
なお、この手順はOffice365テナントの取得が完了していることを前提とします。
取得の仕方は色々な方たちが記事にアップしていますので検索してもらえればと思います。
Office365へ設定するIdPの情報を確認
Office365へ登録するIdPの設定を確認しておきます。
前回の記事に記載したURLにアクセスして設定値を確認します。
【仕事メモ】OpenAM(Ver13) Office365との認証連携(1)
https://qiita.com/Blue2012/items/457de2e1e8595cd01adf
アクセス先のURLは下記になります。
http://【OpenAMホスト名】:8080/openam/saml2/jsp/exportmetadata.jsp
Office365テナントへの接続
まずはOffice365へ接続するためのPowershellモジュールをインストールします。
現在はMSOnline (Azure AD v1)からAzure AD for Graph (Azure AD v2)に変更されています。
※既にインストール済みである方はこの手順はスキップしてOKです。
モジュールをインストールするところから始めます。
WindowsのPCからPowershellを管理者権限で立ち上げて、以下のコマンドを実行します。
Install-Module -Name AzureAD
実行すると下記のような感じでリポジトリにアクセスするためのプロバイダーが必要だとか、信頼されていないリポジトリをインストールすることについて確認されますが、全てY(はい)を実行してください。
Y(はい)を実行するとやがてインストールが完了します。
上記の画像みたいにPowerShell上でプロンプトが返ってくればOKです。
インストールが完了したら、以下のコマンドを実行します。
Connect-AzureAD
上記のコマンドを実行すると以下のようにテナントへの接続画面が表示されます。
サインイン画面にて「アカウント」を入力し「次へ」をクリックし、
次の画面でパスワードを入力します。
接続が完了するとPowershell画面に以下のように接続アカウントの情報が出力されます。
Account Environment TenantId TenantDomain AccountType
------- ----------- ------- ------------ -----------
xxxx@xxxx.onmicrosoft.com AzureCloud xxxxx xxxx.onmicrosoft.com User
これだけではOffice365サービスの各種サブスクリプションも含めたコマンド全てを実行できないため、さらに以下のコマンド実行します。
私は1回目のコマンドはAzureADに接続するため、2回目のコマンドはOffice365サービスに接続するために実施すると覚えました。
Connect-MsolService
これで各種コマンドを実行できるようになりましたので、以下のコマンドを実行して、現在のテナント認証設定を確認します。
Get-MsolDomain
コマンドを実行すると以下のような出力結果となるはずです。
Name Status Authentication
---- ------ --------------
xxxx.onmicrosoft.com Verified Managed
xxxx.xxxx.info(独自ドメイン) Verified Managed
onmicrosoft.comと独自ドメインの「Authentication」が両方とも「Managed」になっていることを確認します。(Federationになっていないことを確認します)
※大事な注意点※
onmicrosoft.comドメインはフェデレーションを有効化することができないため、Office365の管理センターから独自ドメインを「既定ドメイン」に設定しておく必要があります。これはonmicrosoft.comドメインに対してフェデレーションを有効化できないことに加えて、フェデレーションを有効にするには「既定のドメイン」を指定する必要があるためです。
管理センターの左側に表示されているメニューのなかから「セットアップ」‐「ドメイン」を選択します。
以下のようにonmicrosoft.comドメイン名の右隣に(既定)と表示されていればOKです。
Office365のフェデレーション認証設定
2018/08/16 追記 大事な注意点としてOffice365に既定で用意されているonmicrosoft.comドメインではフェデレーションを有効にできないです。Office365への独自ドメイン登録が必要になるのでご注意ください。
ここからは簡単です。
Powershellからコマンドを実行してOpenAMとのフェデレーション有効にします。
実行するコマンドは以下のコマンドになります。
Set-MsolDomainAuthentication -DomainName $dom -FederationBrandName eIdentity -Authentication Federated -PassiveLogOnUri $url -SigningCertificate $cert -IssuerUri $entity -ActiveLogOnUri $ecp -LogOffUri $logout -PreferredAuthenticationProtocol SAMLP
使用するオプションは以下になります。
DomainName: フェデレーションを設定するドメイン名
FederationBrandName: 任意の名称
Authentication: 認証形式(Federatedで固定)
PassiveLogOnUri: IdPメタデータ内のタグ内のLocation属性の値
SigningCertificate: IdPメタデータ内の証明書タグの中身
IssuerUri: IdPメタデータ内のタグ内のentityID属性の値
ActiveLogOnUri: IdPメタデータ内のタグ内のLocation属性の値(Binding属性の値が「urn:oasis:names:tc:SAML:2.0:bindings:SOAP」のもの) ※HTTPSでないと設定できないため、ダミーのURLでも構わないのでHTTPSを指定する
LogOffUri: IdPメタデータ内のタグ内のLocation属性の値(※Binding属性の値が「urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect」のもの)
PreferredAuthenticationProtocol:利用するプロトコルを指定(SAMLの場合はSAMLP)
上記のオプションで使用する値は「Office365へ設定するIdPの情報を確認」の手順で確認した値を使用します。
Powershell上でテナントへ接続した状態で↓のようにコマンドオプションを指定した上で↑で記載したSet-MsolDomainAuthenticationコマンドを実行します。
$dom="フェデレーション設定を有効にするドメイン名"
$url="http://【OpenAMサーバホスト名】:8080/openam/SSOPOST/metaAlias/idp"
$cert="証明書の鍵情報(中身)"
$ecp="https://【OpenAMサーバホスト名】:8080/openam/SSOSoap/metaAlias/idp"
$logout = "http://【OpenAMサーバホスト名】:8080/openam/IDPSloRedirect/metaAlias/idp"
以下のコマンドでフェデレーション設定が有効になっていることを確認します。
Get-MsolDomain
実行結果として以下のように「Authentication」の値に「Federated」が出力されるようになればOKです。
Name Status Authentication
---- ------ --------------
xxxx.xxxx.info(独自ドメイン) Verified Federated
xxxx.onmicrosoft.com Verified Managed
Office365ユーザーの登録
ここまででOffice365とOpenAMのフェデレーション有効化が完了したため、あとはOpenAMに作成したユーザーとマッピングするためのOffice365ユーザーを作成してやればOKです。
以下のコマンドでOffice365にユーザーを作成することが出来ます。
New-MsolUser -UserPrincipalName 【作成するユーザーのUPN】-ImmutableId 【OpenAM上の社員番号】 -DisplayName 【任意の値】 -FirstName 【任意の値】-LastName 【任意の値】-AlternateEmailAddresses 【ユーザーのメールアドレス】-UsageLocation "JP"
ログイン確認
最後に作成したユーザーでSSOが有効になるかを確認します。
ログイン画面が切り替わります。
切り替わった後にOpenAMのログイン画面が表示されるので、マッピングしたユーザーのアカウント情報(UPN)とパスワードを入力します。