SAML アサーション属性の設定
SAML 属性は、認証されたユーザーに関する特定の情報を運ぶ SAML アサーションの主要な構成要素です。これらの属性には、ユーザー識別子、ロール (Roles)、権限 (Permissions)、およびサービスプロバイダー (SP) が認可 (Authorization) やパーソナライズのために必要とするその他の関連ユーザーデータが含まれます。
SAML 属性の理解
SAML 認証 (Authentication) では:
- 属性はユーザー情報を含む名前と値のペアです
- これらはアイデンティティプロバイダー (Logto) からサービスプロバイダーへ送信される SAML アサーションに含まれます
- サービスプロバイダーがユーザーアクセスやパーソナライズに関する判断を行うのに役立ちます
Logto における属性マッピング
属性マッピングを使用すると、Logto からのユーザー情報を SAML アサーション内の特定の属性にどのようにマッピングするかを定義できます。このマッピングにより、サービスプロバイダーが期待する形式と属性名でユーザー情報を受け取れるようになります。
属性マッピングを設定すると:
- Logto から SAML アサーションに含めるユーザーのプロパティを指定します
- サービスプロバイダーが期待するカスタム属性名を定義します
- マッピングされた属性は認証 (Authentication) 時に自動的に SAML アサーションに含まれます
よく使われる属性
一般的によく使われる SAML 属性には次のものがあります:
- Sub (ユーザー ID)
- 組織 (Organizations)
- Name
- Preferred username
属性マッピングを適切に設定することで、サービスプロバイダーが必要なユーザー情報をすべて受け取り、適切なアクセスやパーソナライズを提供できるようになります。
Logto で利用可能なすべてのユーザー情報を、属性マッピング設定を使ってサービスプロバイダーの期待する属性にマッピングできます。
静的属性
一部のサービスプロバイダーは、すべてのユーザーに対して同じ値を持つ属性(サービスプロバイダー側でアカウントやサイトを識別する ID など)を期待します。静的属性は、Logto がアプリケーションのすべての SAML アサーションに、マッピングされたユーザー属性とともに追加する固定の名前と値のペアです。
たとえば、NetSuite SuiteCommerce 連携では account および site 属性が必要な場合があります:
| 属性名 | 値 |
|---|---|
account | NetSuite アカウント ID |
site | ウェブサイト ID |
Console で静的属性を設定する
- Console > Applications に移動し、SAML アプリケーションを開きます。
- Attribute mappings タブを開き、Base attribute mappings の下にある Static attributes カードを見つけます。
- Key に属性名、Value に値を入力します。Add another をクリックして属性を追加できます。最後の属性を削除するには、そのキーと値を空にします。
- Save changes をクリックします。
Management API で静的属性を設定する
Management API で SAML アプリケーションを 作成 または 更新 する際に staticAttributes を設定します:
curl \
--request PATCH \
--header 'Authorization: Bearer <access-token>' \
--header 'Content-Type: application/json' \
--data '{"staticAttributes": {"account": "<your-account-id>", "site": "<your-site-id>"}}' \
'https://[tenant-id].logto.app/api/saml-applications/<application-id>'
staticAttributes を含む更新はオブジェクト全体を置き換えるため、保持したいすべての静的属性を含めてください。変更しない場合はフィールドを省略し、すべて削除する場合は {} を送信します。
静的属性のルール
- 属性名には ASCII の英字、数字、および
_ - . : / # @の文字が使用できます。そのため、http://schemas.example.com/claims/siteやurn:oid:1.3.6.1.4.1.5923.1.1.1.6のような URI や OID 名も利用可能です。 - 各静的属性は、空でない 1 つの文字列値を持ちます。
- 名前は互いに、またはアサーション内のユーザー属性名と競合してはなりません:属性マッピングの Value name of your application 列、または何もマッピングされていない場合は
sub、email、nameと競合しない必要があります。Logto は名前を camel case に変換し、.,_,-を単語区切りとして比較します。そのため、site_id、site.id、SiteIdは競合し、accountとAccountも同様です。このチェックは属性マッピングを変更した際にも実行されます。保存時に競合が報告された場合は、いずれかの属性名を変更してください。
アサーション内のすべての属性(マッピング済みおよび静的)は、urn:oasis:names:tc:SAML:2.0:attrname-format:basic の NameFormat を使用し、xs:string 値として送信されます。サービスプロバイダーが urn:oasis:names:tc:SAML:2.0:attrname-format:uri の NameFormat で URI や OID 名を期待する場合は、basic も受け入れられるか確認してください。