こんにちは。サイオステクノロジーの小川です。
今回はAzure AD Connect(AADC)のソースアンカー属性に関するTipsを記載します。
Office365をSPとして、オンプレのIdPに認証を連携する際、Azure ADのアカウント属性のImmutable IDの値をIdP側に持っておく必要があります。ADからAzure ADへAADCを利用する際のソースアンカーの値がImmutable IDに連携されます。しかし、推奨設定ではmS-DS-ConsystencyGuidがソースアンカーとなっており、AADCで連携する際ADのmS-DS-ConsystencyGuidの値がBase64エンコードされて連携されてしまいます。
これではIdPで持っているImmutable IDの値とAzure ADのImmutable IDの値に差異が生まれ、認証ができなくなってしまいます。これを回避するために連携するADの属性に注意する必要があります。
構成
検証した構成は以下になります。
Azure AD Connectの動作
ソースアンカー属性の値はグローバルに一意である必要があり、特殊文字が含まれていないことなど、いくつか条件があります。
ソースアンカーがBinary属性の場合、ADからのインポート時に値がBase64エンコードされ、Azure ADへアカウントのエクスポート処理が実行されます。mS-DS-ConsystencyGuidはBinary属性になります。なぜBinary属性はBase64エンコードして連携されるかというと、Binary属性値をBase64エンコードすることで特殊文字が表示されないようにすることができるためにこのような動作になっています。
String属性ではBinary属性のようにBase64エンコードされません。なので、上記の制約を満たすようにADのソースアンカー属性とするString属性に値を設定します。ADからAzure ADへアカウント連携時にImmutable IDの属性値がADのソースアンカーに指定した属性値で連携することができます。
これでAD、Azure AD、認証プロバイダーでAzure ADのImmutable IDの値が一致するので、問題なくIdPで認証することが可能になります。