ゆるテックノート

SAML属性の扱いとマッピング

SAMLでは、ログイン結果と合わせてユーザー属性を渡せます。属性名の違いやマッピングのコツを押さえると、運用がぐっと楽になります。

📄 属性の基本

属性は通常AssertionのAttributeStatementに入ります。署名・発行元・宛先などを検証した後でアカウントや権限に対応付けます。以下のemail等は設定例で、全IdP共通の必須属性名ではありません。

代表的な属性

  • ✅ email: ログインIDや通知先に利用される
  • ✅ givenName / surname: 表示名として利用される
  • ✅ groups / roles: アクセス制御の根拠に

🧩 属性のマッピング

IdPから届く属性名と、アプリ内部のユーザー項目を対応づけます。

マッピング時の注意

  • 🔍 IdPごとに属性名・命名空間が異なる(例: Microsoft Entra ID(旧Azure AD), Okta, Google Workspace)
  • 🔍 必要な属性が欠けているとログインに失敗するため、必須項目を事前に合意する
  • 🔍 環境(本番/検証)で属性値が違う場合があるので、検証環境で確認する

⚙️ IdPごとの違いと設定のコツ

IdPによって属性名や命名空間が異なるため、事前に仕様をそろえることが重要です。

Attribute Profile

SAMLでは属性のスキーマを定義するAttribute Profileが用意されています(例: X.500/LDAP属性プロファイル)。標準プロファイルを前提にすると互換性が上がります。

  • X.500/LDAP Attribute Profile など標準プロファイルを参照し、属性名・命名空間を揃える
  • IdP依存の独自属性を使う場合は、対応するSP側のマッピングを明示する
  • 標準プロファイル準拠かどうかをIdP/ SPで合意しておく

IdPごとの特徴

  • 🔧 属性のNameとNameFormatを実際の連携設定で確認する。entityIDは発行元識別子であり属性名とは別
  • 🔧 FriendlyNameだけで属性を識別せず、連携で合意したNameを使う
  • 🔧 AttributeValueは複数値になり得る。groups等を単一文字列と決めつけず、欠落・空値・複数値を試験する

SP設定のヒント

  • 🛠️ 受け入れる属性名を明示し、ドキュメント化して共有する
  • 🛠️ メタデータにAttributeConsumingServiceを定義できる場合は設定しておく
  • 🛠️ テナントや環境ごとの差分を記録し、サポート窓口と共有しておく

仕様と関連する解説

OASIS SAML core / OASIS SAML profiles
関連するSAML解説