とある事業で、一つの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です。
ここでは例えば、[email protected]であれば、最初の変換で、ExtractMailPrefix()で、hogeを抽出。2つ目の変換で、join()を利用して区切り文字に@を指定して、example.co.jpをjoinさせてます。
これにより[email protected]は、SP側の[email protected]と同一アカウントで有ることが定義できます。
上記は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のログイン画面で、[email protected]と入力したら、AzureAD側で[email protected]でログインすることを求められ、パスワードを入力したら、[email protected]にログインする事ができます。
これはまだ普通のSAMLですね。
更に、Googleログイン画面で、[email protected]と入力したら上記と同様に、[email protected]でログインを求められ、入力したらGoogleにもどって、[email protected]にもログインできます。
これによりGoogle IDを2つ以上もっていたメンバーは、大本のexample.comだけ抑えておけば良くなるので、管理コストも下がります。
未来の自分に向けたメモくらいな雑さで :bow: