SAML属性の扱いとマッピング
SAMLでは、ログイン結果と合わせてユーザー属性を渡せます。属性名の違いやマッピングのコツを押さえると、運用がぐっと楽になります。
📄 属性の基本
メールアドレスや氏名、ロールなどをSAML Responseに載せることで、アプリ側でアカウント紐づけや権限付与ができます。
代表的な属性
- ✅ email: ログインIDや通知先に利用される
- ✅ givenName / surname: 表示名として利用される
- ✅ groups / roles: アクセス制御の根拠に
🧩 属性のマッピング
IdPから届く属性名と、アプリ内部のユーザー項目を対応づけます。
マッピング時の注意
- 🔍 IdPごとに属性名・命名空間が異なる(例: AzureAD, Okta, Google Workspace)
- 🔍 必要な属性が欠けているとログインに失敗するため、必須項目を事前に合意する
- 🔍 環境(本番/検証)で属性値が違う場合があるので、検証環境で確認する
⚙️ IdPごとの違いと設定のコツ
IdPによって属性名や命名空間が異なるため、事前に仕様をそろえることが重要です。
Attribute Profile
SAMLでは属性のスキーマを定義するAttribute Profileが用意されています(例: X.500/LDAP属性プロファイル)。標準プロファイルを前提にすると互換性が上がります。
- X.500/LDAP Attribute Profile など標準プロファイルを参照し、属性名・命名空間を揃える
- IdP依存の独自属性を使う場合は、対応するSP側のマッピングを明示する
- 標準プロファイル準拠かどうかをIdP/ SPで合意しておく
IdPごとの特徴
- 🔧 AzureAD: EntityIDがURL形式。属性名に独自の命名空間が入ることが多い
- 🔧 Google Workspace: 独自の名前空間で、属性名を調整する必要がある
- 🔧 Okta/Keycloak: 柔軟だが設定項目が多い。AttributeStatementの設定範囲が広い
SP設定のヒント
- 🛠️ 受け入れる属性名を明示し、ドキュメント化して共有する
- 🛠️ メタデータにAttributeConsumingServiceを定義できる場合は設定しておく
- 🛠️ テナントや環境ごとの差分を記録し、サポート窓口と共有しておく