Azure ADとG Suiteの認証連携

G Suiteの認証をAzure ADで行うための設定方法について記載します。
この設定を行うことでAzure ADのサインインに成功した場合にG SuiteにSSOができるようになります。

[はじめに]
Azure ADはSAMLに対応しており、Identity Provider(IdP)として様々なService Provider (SP)の認証ハブとして機能させることができます。
例えばOffice 365はすでにAzure ADと認証(およびユーザー)連携されている状態となっており、Azure ADで認証されることでExchange Onlineやその他のサービスにSSOできます。
G SuiteをSPとして設定する方法はMicrosoftから以下の公開情報があるのですがいくつかうまくいかなった設定がありましたのでそちらをヒックアッピしていきます。

なお、今回はG SuiteへのSSO設定のみ構成していきますのでAzure ADのユーザーをG Suiteにプロビジョニングする方法については記載しておりませんのでご注意ください。

参考:チュートリアル: Azure Active Directory と G Suite の統合
https://docs.microsoft.com/ja-jp/azure/active-directory/saas-apps/google-apps-tutorial

[前提条件]
今回の構成の前提条件を記載します。

1.独自ドメインでG Suiteを構成済みであること
今回は”pptdemo.site”というドメインでG Suiteを構成しております。
2.Azure ADに独自ドメインが登録済みであること
今回はAzure ADの[カスタムドメイン名]に”pptdemo.site”を登録し、所有確認済みの状態になります。
※ドメイン登録時にAzure ADで発行されるTXTレコードをご使用のドメインレジストラに登録すると[状態]が”確認済み”となります。
3.Azure ADとG Suiteに同一のサインインIDのユーザーが存在していること

[構成方法]
構成方法について記載します。
大まかな流れとしては次の通りです。

1.Azure ADにG Suiteアプリケーションを登録
2.Azure ADのシングルサインオン設定
2-1.サインオンURLの設定
2-2.識別子の設定
2-3.ユーザー属性の設定
3.G Suiteのシングルサインオン設定

1.Azure ADにG Suiteアプリケーションを登録
Azure ADにアクセスし、[エンタープライズアプリケーション] > [すべてのアプリケーション] > [新しいアプリケーション] の順にクリックします。
[ギャラリーから追加する] の一覧にG Suiteがありますのでそれをクリックし、名前を入力して [追加] をクリックして完了です。


2.Azure ADのシングルサインオン設定
個人的につまづいたポイントは”識別子”と”ユーザー識別子”の設定です。
Azure ADのシングルサインオンの設定を行うには[すべてのアプリケーション] から G Suiteを選択し、[シングル サインオン] をクリックします。
[シングルサインオン モード] から [SAML ベースのサインオン]を選択します。

2-1.サインオンURLの設定
[サインオン URL]に以下の通り入力します。
https://www.google.com/a/<独自ドメイン>/ServiceLogin?continue=https://mail.google.com

今回は”pptdemo.site”というドメインを利用しておりますので次のようになります。
https://www.google.com/a/pptdemo.site/ServiceLogin?continue=https://mail.google.com

2-2.識別子の設定
続いて[識別子]には以下の値を入力します。
google.com/a/<独自ドメイン>

こちらについても今回は”pptdemo.site”というドメインを利用しておりますので次のようになります。
google.com/a/pptdemo.site

この[識別子]個人的につまづきポイントです。
“http://google.com/a/pptdemo.site”という値を入力してG Suiteにアクセスしてみると次のエラーとなってしまいます。

原因はズバリAzure ADのG Sutieアプリに設定した[識別子]と、G Suiteアクセス時にG Suiteが要求する識別子で値が一致していないことになります。
そのためG Suiteが要求する識別子を確認する必要があるのですが、それはSAML要求の中身を見ることで確認可能です。
SAML要求を確認するツールは各種ブラウザ―の拡張機能で提供されております。今回はFirefoxのSAML-tracerを利用してSAML要求を確認しました。
以下の赤枠部分がG Suiteが要求する識別子になります。この値とAzure AD側で設定する[識別子]を一致させないといけません。

2-3.ユーザー属性の設定
続いてユーザー属性の設定を行います。既定では次のように設定されています。

Azure ADユーザーのuserPrincipalName属性(サインインID)とG Suiteユーザーのメールアドレス(G SuiteにおいてはサインインIDとなります)が一致している場合にはユーザー識別子は既定のままで問題ありません。
しかし上記が一致していない場合は別の属性をユーザー識別子に設定する必要があります。もし一致していない場合には次のエラーとなります。これはG Suiteにサインインはできたものの、Azure ADのユーザーとG Suiteのユーザーが一致していない場合のエラーです。

例えばAzure ADユーザーのmail属性がG Suiteユーザーのメールアドレスと一致している場合には次のように設定します。

ちなみに私が検証したときにはユーザー識別子がAzure ADとG Suiteで一致しているにも関わらずG Suiteにサインイン後先のユーザー不一致のエラーが表示されることがあり、以下赤枠の [SAML トークン属性] をすべて削除してユーザー識別子のみとしたところ正常にG Suiteにアクセスできたという事象がありました。

3.G Suiteのシングルサインオン設定
続いてG SuiteでSSOの設定を行います。
G Suiteの管理画面にアクセスし[セキュリティ]をクリックします。

[シングルサインオン(SSO)の設定]をクリックします。

次の設定をします。

[サードパーティの ID プロバイダで SSO を設定する]
チェックをオン

[ログインページのURL]
https://login.microsoftonline.com/b5a6d8eb-f481-4590-8872-2a0ced86cce1/saml2

[ログアウトページURL]
https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0

[認証の確認]
“証明書を更新”をクリックしてAzure ADで取得できるSSO用の証明書をアップロードする
こちらの証明書はAzure ADの[5.G Suite構成]>[G Suite構成]からダウンロードできます。

設定が完了しましたら[保存]をクリックします。
以上で設定は完了です。

[動作確認]
“test01@pptdemo.site”というユーザーでG Suiteにアクセスしてみます。
このユーザーはAzure ADとG Suite両方に存在しており、同一のサインインIDとなっています。
今回の検証環境におけるG Suiteのメール画面のURLは”https://mail.google.com/a/pptdemo.site”となります。

Azure ADにリダイレクトされました。

サインインIDとパスワードを入力します。

無事にAzure ADの認証情報でG Suiteにサインインすることができました。

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、弊社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。