今回は、Azure ADでシングルサインオンの設定をしていきたいと思います。
使用する方式は、SAMLでAzure AD側から認証を開始するIdP initiatedの方式でSMALを設定していきます。
シングルサインオンの仕組みや、IdP initiated・SP initiatedの方式がわからない方は、以下の記事で解説をしているので、ぜひご覧ください。
期待する目標
本記事で期待する目標は以下の通りです。
- Azure ADをIdPとして、SAMLを構成できる
- My appsよりSPにシングルサインオンができる
- SAMLで必要な情報と取得できる情報を理解する
前提条件
本記事で使用している環境は以下の通りです。
- Azure AD プラン : Premium P2
- SP サイト : RSA Test Service Provider
本来であれば、実使用するサービスに対して、シングルサインオンをかけるべきなのですが、諸般の都合(金銭面)でSMALのテスト用のサイトを使用します。
テスト用のサイトといっても、IdP initiatedやSP initiatedのテストができるサイトとなっており、SAMLをすると、認証情報やアサーションなどの情報を表示してくれるサイトなので、SAMLを使用したシングルサインオンの理解にはもってこいなサイトだと思います。
URL : https://sptest.iamshowcase.com/
エンタープライズアプリケーションの作成
まず、SAMLによるシングルサインオンを行うために、ベースとなるアプリケーションを作成していきます。

[Azureポータル]にログインしたら、[Azure Active Directory]のサービスを検索または、選択します。

[Azure Active Directory]より、[管理]-[エンタープライズアプリケーション]を押下します。

[エンタープライズアプリケーション]より、[新しいアプリケーション]を押下します。

[Azure AD ギャラリーの参照]より、SAMLを行うアプリケーションを選択します。
アプリケーションギャラリー上にあるものであれば、テンプレートが用意されているため、簡単に設定することができます。
今回は、テスト用のSPを使用するため、[独自のアプリケーションの作成]を押下します。

[独自のアプリケーションの作成]より、以下の設定を行います。
- お使いのアプリの名前は何ですか? : 任意の名前を入力
- ギャラリーに見つからないその他のアプリケーションを統合します(ギャラリー以外) : ●
名前を入力すると、候補が表示されますが、テストのシングルサインオンサイトはギャラリーに存在しないため、無視して進めます。
設定が完了したら、[作成]を押下します。
以上でアプリケーションの作成は完了です。
ユーザの追加

アプリケーションの作成が完了したら、シングルサインオンを許可するユーザの選択していきます。
[概要]-[Getting Started]-[1.ユーザとグループの割り当て]を押下します。

[ユーザとグループ]より、[ユーザまたはグループの追加]を押下します。

[割り当ての追加]より、[ユーザとグループ]-[選択されていません]を押下します。

右ペインに[ユーザとグループ]が表示されるため、このアプリを使用するユーザまたはグループを選択します。
追加するユーザとグループを選択したら、[選択]を押下します。

[割り当ての追加]より、[ユーザとグループ]の追加が完了したら、[割り当て]を押下します。

[ユーザとグループ]より、割り当てを追加したユーザとグループが表示されていることを確認します。
以上でユーザの追加は完了です。
SAMLの設定

アプリケーションの作成とユーザの作成が完了したら、シングルサインオンの構成を行っていきます。
[管理]-[シングルサインオン]より、[SAML]を押下します。

SAMLを選択すると、SAMLの構成が表示されます。
ここに、SAMLの情報をいれていくとSAMLによるシングルサインオンができるようになります。
メタデータのダウンロード
今回は、SAMLのIdP initiatedを検証したいので、メタデータをSPから引っ張ってきます。
冒頭に記載のあったTEST Service Providerのページにアクセスします。
URL : https://sptest.iamshowcase.com/

[Test Service Provider]のトップページより、[Instructions]を押下します。

[Setting up IDP initiated SSO]より、[DOWNLOAD METADATA]を右クリックして保存します。

メタデータはXMLのため、このような構成のXMLファイルになっていれば問題ないです。
このファイルは、Azure ADのシングルサインオン構成で必要になるため、Azureポータルにアクセスできる端末に保存しておきます。
IdP initiatedの構成

TEST Service Providerより、メタデータのダウンロードが完了したら、Azure ADにメタデータをアップロードしていきます。
[管理]-[シングルサインオン]より、[メタデータファイルをアップロードする]を押下します。

[メタデータファイルをアップロードします]の右端にあるファイルマークより、ダウンロードしたメタデータファイルを選択してアップロードします。

ファイルの選択が完了したら、[追加]を押下します。

メタデータの追加を行うと、右ペインに[基本的なSAML構成]が表示されるため、[識別子(エンティティID)]の編集を行います。

エンティティIDを任意の文字列に設定し、[保存]を押下します。
エンティティIDについては、シングルサインオンを行うサイトで一意にする必要があります。
今回は、[IdP_TEST]というエンティティIDにしました。
名前とエンティティIDが重複していても問題はなく、ほかのアプリケーションのエンティティIDと重複していないければ問題ない模様。

SAMLの構成が完了すると、[基本的なSAML構成]が反映されるため、確認します。

[管理]-[シングルサインオン]の⑤にシングルサインオンのテストがあるので、[Test]を押下して一回テストを実行してみます。

[シングルサインオンをテスト]より、[サインオンのテスト]を押下します。

テストを開始すると、Azure ADへのサインオンを求められます。
既にログイン済みの場合は、シングルサインオンを行うアカウントを選択します。

アカウントの選択後、[この機能は有効になっていないか使用できません。]と表示され、正常にシングルサインオンが機能していなさそうです。
これだけだと何もわからないので、とりあえず、正規の手順で検証してみたいと思います。
IdP initiatedによるSSOの実行

IdP initiated ssoでは、IDプロバイダーからシングルサインオンを開始するため、初めにMicrosoftのMy Appsにログインします。
URL : https://myapps.microsoft.com/
My Appsにログイン後、作成したアプリケーションが存在することを確認します。
ここで、表示されない場合は、アプリケーションの作成時にユーザの割り当てが間違っている可能性があります。
アプリケーション一覧より、作成した[IdP_TEST]を押下します。

作成したアプリケーションを選択すると、[アカウントを選択する]より、シングルサインオンを有効化しているユーザのアカウントを選択します。

シングルサインオンが成功すると、[RSA Test Service Povider]のページにリダイレクトされます。
ここで、[Hello <ユーザ名>]と表示されていれば、シングルサインオンが成功し、SAMLの情報がSP側に渡されています。

Attribute Statementより、自身のユーザ名やAzure ADのアプリケーションで設定されているテナントIDなどが同一であることを確認します。

最後にアサーションの確認をしておきます。
アサーションでは[Status code]や[Issuer]、[Assertion ID]などが正常に取得できているかを確認します。
Azure ADによるSAMLを使ったシングルサインオンの設定手順(IdP)は以上となります。
まとめ
今回は、Azure ADを使用してSAMLベースのシングルサインオンを設定してみました。
IDプロバイダーからシングルサインオンを開始するIdP initiatedの設定を行いましたが、メタデータとエンティティIDを設定するだけで概ね設定が完了したので、SAMLを使用したシングルサインオンの設定難易度は低めなのかなと感じました。
また、ユーザから見れば、Azure ADにサインインして、My AppsからアクセスできるWebサービスを選択するだけでログインが自動的に行われるため、SP initiatedよりもIdP initiatedのほうが使いやすいユーザも多いのではないでしょうか。
ただ、個人的に思っているのは、どのユーザをどのサービスに紐づけるか?という分類のほうが大変だなーと思いました。
会社が大きければ部署ごとに使用するアプリケーションを標準化できたりしますが、小さな会社だと個別の利用権限の付与が大変になって結局全員利用できるようになる。みたいな流れになりそう・・・
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。
コメント