一つのIdP(AzureAD)で複数のGoogle WorkspaceにSAML連携してみた
一つのAzureADをIdPとして複数のGoogle WorkspaceにSAML連携する手順と、Provisioningでドメインをまたいだアカウント同期を行う設定方法をまとめたメモ。
とある事業で、一つのAzureADをIdPとして複数のGoogle WorkspaceとSAML連携する事になったので、雑にメモを残します。必要になる人がでるかはわからないですが、参考になればと
前提
- example.comドメインのAzureAD
- example.comドメインのGoogle Workspace
- example.co.jpDomainのGoogle Workspace
このように example.comのAzureADとGoogle Workspace、そしてexample.co.jpのGoogle Workspaceがあると前提です
AzureAD側の設定
SAMLベースのサインオン
ポイントは、識別子をデフォルトの、userprincipalnameから、カスタム値に変更する所です。

通常のままですと、IdP側と同じexample.comをSP側に求める事になりますが、ここでやりたいことは、SP側はexample.co.jpです。
ここでは例えば、hoge@example.comであれば、最初の変換で、ExtractMailPrefix()で、hogeを抽出。2つ目の変換で、join()を利用して区切り文字に@を指定して、example.co.jpをjoinさせてます。
これによりhoge@example.comは、SP側のhoge@example.co.jpと同一アカウントで有ることが定義できます。

上記はIDでしたので、ここでは作成されるアカウントのEmail Addressを変換します。内容はIDと同じです。

IdPとSPの設定だけならこれでOK。いやいやせっかくAzureAD使うならGoogle Workspace側のアカウント作りたいよ、Provisioningしようぜ!とのことでしたら次の設定
Provisioningの設定
以下の設定が超重要
AzureADの属性 Replace([userPrincipalName], "example.com", , , "example.co.jp", , )
G Suiteの属性 primaryEmail
上記の通りマッピングする設定で、example.comをexample.co.jpに置換します。これによりexample.co.jp側にアカウントが作成されます。
最後に
これによりGoogleのログイン画面で、hoge@example.comと入力したら、AzureAD側でhoge@example.comでログインすることを求められ、パスワードを入力したら、hoge@example.comにログインする事ができます。
これはまだ普通のSAMLですね。
更に、Googleログイン画面で、hoge@example.co.jpと入力したら上記と同様に、hoge@example.comでログインを求められ、入力したらGoogleにもどって、hoge@example.co.jpにもログインできます。
これによりGoogle IDを2つ以上もっていたメンバーは、大本のexample.comだけ抑えておけば良くなるので、管理コストも下がります。
未来の自分に向けたメモくらいな雑さで :bow: