とある事業で、一つの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から、カスタム値に変更する所です。
![[貼り付けた画像_2022_01_31_21_11.png]]
通常のままですと、IdP側と同じexample.comをSP側に求める事になりますが、ここでやりたいことは、SP側はexample.co.jpです。
ここでは例えば、
[email protected]であれば、最初の変換で、ExtractMailPrefix()で、hogeを抽出。2つ目の変換で、join()を利用して区切り文字に@を指定して、example.co.jpをjoinさせてます。
これにより
[email protected]は、SP側の
[email protected]と同一アカウントで有ることが定義できます。
![[Untitled 13.png|Untitled 13.png]]
上記はIDでしたので、ここでは作成されるアカウントのEmail Addressを変換します。内容はIDと同じです。
![[貼り付けた画像_2022_01_31_21_13.png]]
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: