一つのIdP(AzureAD)で複数のGoogle WorkspaceにSAML連携してみた

Date
January 31, 2022
Private

とある事業で、一つの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から、カスタム値に変更する所です。

image

通常のままですと、IdP側と同じexample.comをSP側に求める事になりますが、ここでやりたいことは、SP側はexample.co.jpです。

ここでは例えば、[email protected]であれば、最初の変換で、ExtractMailPrefix()で、hogeを抽出。2つ目の変換で、join()を利用して区切り文字に@を指定して、example.co.jpをjoinさせてます。

これにより[email protected]は、SP側の[email protected]と同一アカウントで有ることが定義できます。

image

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

image

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: