はじめに
こんにちは、Identityチームのすかんくです。最近フロランタンが好きということを自覚しました。
今回は小ネタとして、Microsoft EntraでSAMLを構成する際にちょっと便利なRegexReplace関数についてお届けしたいと思います。
こんなシナリオ
- EntraのUPNとSAML連携対象アプリで利用しているIDが異なる
- NameIDの不一致
- Entra上にUPN以外で当該NameIDと一致する完全一致する属性は無いが、ローカルパートは共通
- Entra:xxx@example.com
- アプリ:xxx@example.net
- クレーム要求時にEntra側のドメインをアプリ側のドメインに捻じ曲げて処理したい
→ RegexReplace関数でSAMLトークンのクレームをカスタマイズしよう!という話。
手順
- Microsoft Entra 管理センター(https://entra.microsoft.com/)にて、[アプリケーション] – [エンタープライズ アプリケーション] – [連携対象のアプリ] をクリック
- アプリケーションの構成ページにて、[シングル サインオン] – [SAML によるシングル サインオンのセットアップ] – [属性とクレーム] の “編集” ボタンをクリック
- 属性とクレームページにて、[一意のユーザー識別子 (名前 ID)] をクリック
- 要求の管理ページにて、[変換] をクリック
- 変換の管理ページにて、以下の通り入力する
- 変換:
RegexReplace()
- パラメータ1:
属性
- 属性名:
user.userprincipalname
- 正規表現パターン:
@.*$
- 置換パターン:
@example.net(変換したいドメイン名)
- 変換:
- 変換の管理ページ下部にある [テスト変換] をクリックし、変換のテストを実施します
- Entra側のUPNを [正規表現の入力をテスト] へ入力し、[テストの実行] をクリックした際に表示される “テスト変換の結果” がアプリ側のドメイン名になっていることを確認する
- テスト結果に問題が無ければ、変換の管理ページにて [追加]、要求の管理ページにて [保存] をクリックする
- その他のSAML構成はアプリケーション側の指示に従って構成し、動作テストを行う
おわりに
今回はNameIDのクレームを正規表現でカスタマイズする手順についてご紹介しました。
RegexReplaceは正規表現ベースで様々なことが出来るため、NameIDに限らず、アプリ側のちょっとしたトークンのクレームカスタマイズ要件に対応しやすくなるので是非ご活用いただければと思います。ではまた!
参考資料とリンク
https://learn.microsoft.com/ja-jp/entra/identity-platform/saml-claims-customization