はじめに
こんにちは、すかんくです。今回も Azure AD B2B に関する内容となります。
Azure AD B2B で自社テナントへ招待したゲストユーザーを用いて、連携サービスへ [シングルサインオン・プロビジョニング] するための構成方法や注意点についてご紹介します。
ゲストユーザーの UPN について
説明の前に Azure AD B2B におけるゲストユーザーの種類と、それぞれの UPN について再確認しましょう。
下表は、ゲストアカウントの招待元 UPN と、招待先(自社テナント)で設定される UPN を記載しています。

SSO・プロビジョニングを構成する際、問題となるのは以下の点です。
UPN が onmicrosoft.com ドメインに置き換わる
ゲストユーザーが作成される際、UPN プレフィックスは以下となります。
- <alias>_<domain>#EXT#@<your_domain>.onmicrosoft.com
ここで問題となるのが onmicrosoft.com ドメインが付与されることです。
これは Microsoft が所有するドメインですので、連携先サービスで利用することは出来ません。
つまり、他社 Azure AD から招待されたゲストユーザーを自社の連携サービスへプロビジョニングする場合、ゲストユーザーの UPN をそのまま利用することは不可ということになります。
どうする? – UPN マッピングで自社ドメインに変換
結論として、UPN をそのまま利用するのではなく、自社ドメインに変換した形で [シングルサインオン・プロビジョニング] を構成する必要があります。
表に直すと以下の通りです。

このようにベースとなる UPN を変換した上で、各サービスへ連携することを UPN マッピングと呼んだりします。
問題点と対処方法が明確になったところで、Azure AD での設定手順を追っていきましょう。
シングルサインオン
① Azure ポータル へアクセス。
② [Azure Active Directory] > [エンタープライズ アプリケーション] > [対象サービス] をクリック。
③ [シングル サインオン] を選択し、[属性とクレーム] > [編集] をクリック。

④ [一意のユーザー識別子 (名前 ID) ] をクリック。

⑤ [名前識別子の形式] から、[指定なし] を選択。

⑥ 要求条件から、ユーザータイプ [自社ユーザー・他社 Azure AD ユーザー・外部ユーザー] 毎にクレーム条件を設定。
自社ユーザー
⑦ 以下の通り設定。
- ユーザータイプ:メンバー
- ソース:属性
- 値:user.userprincipalname

他社 Azure AD ユーザー
⑧ 以下の通り設定し、[追加] をクリック。
- ユーザータイプ:AAD ゲスト
- ソース:変換
- 変換:Extract()、一致の前
- パラメータ 1 (入力):user.localuserprincipalname
- localuserprincipalname を指定します。userprincipalname と間違えないようご注意ください
- 値:#EXT#@<yourdomain>.onmicrosoft.com
- <yourdomian>は自社のドメインに書き換えます
- 値:user.userprincipalname


外部ユーザー(フェデレーション or メールベース OTP)
⑨ 以下の通り設定し、[追加] をクリック。
- ユーザータイプ:AAD ゲスト
- ソース:変換
- 変換:Extract()、一致の前
- パラメータ 1 (入力):user.userprincipalname
- こちらは userprincipalname なのでご注意ください
- 値:#EXT#@<yourdomain>.onmicrosoft.com
- <yourdomian>は自社のドメインに書き換えます
- 値:user.userprincipalname


⑩ 設定が完了したら、[保存] をクリック。

⑪ [属性とクレーム] 画面で、[+新しいクレームの追加] をクリック。
⑫ 以下の通り設定し、[保存] をクリック。
- 名前:_upn
- ソース:属性
- ソース属性:user.userprincipalname

以上で設定は完了です。
プロビジョニング
① Azure ポータル へアクセス。
② [Azure Active Directory] > [エンタープライズ アプリケーション] > [対象サービス] をクリック。
③ [プロビジョニング] > [プロビジョニングの編集] をクリック。

④ [マッピング] > [Provision Azure Active Directory Users] をクリック。

⑤ [属性マッピング] > [Azure Active Directory 属性] が “userPrincipalName” の行を選択。

⑥ 以下の通り設定し、[OK] をクリック。
- マッピングの種類:式
- 式:Replace([originalUserPrincipalName], “#EXT#@<your domain>.onmicrosoft.com”, , , “@<your primary domain>”, , )
- <yourdomian><your primary domain>は自社のドメインに書き換えます

⑦ [新しいマッピングの追加] を選択し、以下の通り設定したら [OK] をクリック。
- マッピングの種類:式
- 式:IIF(Instr([originalUserPrincipalName], “#EXT#”, , )=”0″, “/”, “/guests”)
- 対象の属性:


⑧ 設定内容に問題ないことを確認し、[保存] をクリック。
おわりに
以上で設定は完了です。
テスト用のゲストユーザーをご準備いただき、動作確認を実施してください。
今回は Azure AD B2B で自社テナントへ招待したゲストユーザーを用いて、連携サービスへ [シングルサインオン・プロビジョニング] するための構成方法や注意点についてご紹介しました。
是非参考にしてみてください。
【次回予告】 「Azure AD B2B ゲストユーザーの管理方法」についてご紹介します。 ゲスト招待やアプリケーションの割り当てといった、管理者作業を減らす方法・機能について解説する予定です。
※ 次回で Azure AD B2B シリーズは一旦終了予定です。
ではまた!