SAML JITプロビジョニングの構成
SAMLジャストインタイム(JIT)プロビジョニングでは、ユーザーが最初にSSOを実行しようとしたときに、ユーザーがまだアイデンティティ・ドメインに存在しない場合、ユーザー・アカウントの作成が自動化されます。SAML JITプロビジョニングでは、自動ユーザー作成に加えて、プロビジョニングの一環としてグループ・メンバーシップの付与および取消しが可能です。SAML JITプロビジョニングは、サービス・プロバイダ(SP)ストア内のユーザーの属性をアイデンティティ・プロバイダ(IdP)のユーザー・ストア属性と同期できるように、プロビジョニングされたユーザーを更新するように構成できます。
SAML JITプロビジョニングを構成する場合、SAML IdPによって送信されるユーザー・データを使用してアイデンティティ・ドメイン内のユーザーを作成または更新する方法(あるいはその両方)を定義します。最初に、フェデレーテッドSSO用のSAML IdPを作成して構成し、次にそのIdP用のSAML JITプロビジョニング・オプションを有効化して構成します。
SAML JITプロビジョニングは、/admin/v1/IdentityProviders
REST APIエンドポイントでのみ構成できます。
IdentityProvider プロパティ |
説明 | JSONの例 |
---|---|---|
jitUserProvEnabled |
このIdPのSAML JITプロビジョニング機能を有効/無効にするブール・プロパティ。 このプロパティがtrue の場合、少なくともjitUserProvCreateUserEnabled またはjitUserProvAttributeUpdateEnabled のいずれかがtrue である必要があります。 |
|
jitUserProvCreateUserEnabled |
ユーザーがまだ存在しない場合に、受信するアサーションに基づいてユーザーを作成するかどうかを示すブール・プロパティ。 デフォルトでは、SAML JITプロビジョニングを使用して作成されたユーザーはフェデレーテッド・ユーザーです。フェデレーテッド・ユーザーにはアイデンティティ・ドメインに直接サインインするための資格証明はありませんが、かわりに外部アイデンティティ・プロバイダによって認証される必要があります。ユーザーのフェデレーテッド・ステータスは、管理コンソールを使用して、およびREST APIを使用して |
|
jitUserProvAttributeUpdateEnabled |
ユーザーがすでに存在する場合に、受信するアサーションに基づいてユーザーの属性を更新するかどうかを示すブール・プロパティ。 |
|
jitUserProvAttributes |
これは、動的なユーザー作成とユーザー属性の更新の両方について、IdP SAMLアサーション属性値とアイデンティティ・ドメイン・ユーザー属性のマッピングを定義する
|
|
jitUserProvGroupAssertionAttributeEnabled |
SAML属性のIdPから受信したグループ名のリストに基づいて、グループ・メンバーシップをユーザーに割り当てるかどうかを示すブール・プロパティ。 このプロパティが |
|
jitUserProvGroupMappingMode |
IdP内のグループをアイデンティティ・ドメイン内のグループにどのようにマップするかを制御する文字列プロパティ。値は次のいずれかである必要があります: 明示的 - IdPグループは、構成プロパティ 暗黙的 - SAMLアサーションのグループ名は、アイデンティティ・ドメイン内のグループ名と一致する必要があります。 値が指定されていない場合、デフォルトは explicitです。 |
|
jitUserProvGroupMappings |
IdPアサーション内のグループとアイデンティティ・ドメイン内のグループ間のマッピングの配列。 配列内のすべてのオブジェクトは、IdPグループとアイデンティティ・ドメイン・グループ間のマッピングを表します。
IdP当たりのグループ・マッピングの最大数は250です。 |
|
jitUserProvGroupSAMLAttributeName |
プロパティ アサーション属性は、次のいずれかで構成できます:
|
|
jitUserProvGroupStaticListEnabled |
グループ名の静的リストに基づいて、グループ・メンバーシップをユーザーに割り当てるかどうかを示すブール・プロパティ。 このプロパティが |
|
jitUserProvAssignedGroups |
プロパティ ノート:この配列に設定されている値はグループIDです(グループ名ではありません)。 |
|
jitUserProvGroupAssignmentMethod |
アイデンティティ・ドメイン内のユーザーへのグループ・メンバーシップの割当て方法を制御する文字列プロパティ。値は次のいずれかである必要があります:
|
|
jitUserProvIgnoreErrorOnAbsentGroups |
受信アサーション属性で存在しないグループまたはアイデンティティ・ドメインにグループ・マッピングが存在しないグループが指定されている場合に実行するアクションを決定するブール・プロパティ。 このプロパティがtrueの場合、欠落しているグループは無視され、ユーザーが作成されます。 このプロパティがfalseで、存在しないグループが指定されている場合、ユーザーの作成は失敗します。 デフォルトは、明示的モードではtrue、 |
|
jitUserProvAttributesマッピングの構成
IdentityProvider
を作成し、必要に応じてSAML JITプロビジョニング属性を構成した後、jitUserProvAttributes
リソースを更新してインバウンド属性マッピングを追加する必要があります。jitUserProvAttributes
によって参照されるMappedAttributes
リソースは、IdentityProvider
リソースを使用して自動的に作成および削除され、このプロパティにはimmutableのマークが付きます。SAML JITプロビジョニング属性マッピングは、置換するのではなく、既存のMappedAttributes
オブジェクトによって構成されます。
MappedAttributes
プロパティを示します。MappedAttributes プロパティ |
説明 | JSONの例 |
---|---|---|
attributeMappings |
SAMLアサーション属性とアイデンティティ・ドメイン・ユーザー属性間のマッピングのリスト。各マッピングの構成は次のとおりです:
ノート: SAMLアサーション属性名では、大/小文字が区別されます。 |
|
refResourceType |
このマップ済属性を使用している、または参照しているリソースの名前(SAML JITプロビジョニングの場合は常に |
|
idcsResourceType |
マッピング先のアイデンティティ・ドメイン・リソースのタイプ(SAML JITプロビジョニングの場合は常に |
|
direction |
問題のアイデンティティ・ドメイン・リソースに関するマッピングの方向(SAML JITプロビジョニングの場合は常に |
|
refResourceID |
この |
|
属性マッピングを更新するには、最初に、IdPの正しいMappedAttributes
リソースを識別する必要があります。これを行うには、IdentityProvider
リソースを取得し、jitUserProvAttributes
プロパティの$ref
属性を参照します。
たとえば、https://<domainURL>/admin/v1/MappedAttributes/6533d475754845a8b0e971c48b87edda
などのMappedAttributes
リソースがある場合は、PATCHを実行して、そのattributeMappings
プロパティを更新します。
MappedAttributesのサンプルPATCHペイロード
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
], "Operations": [
{
"op": "replace",
"path": "attributeMappings",
"value": [
{
"managedObjectAttributeName": "$(assertion.mail)",
"idcsAttributeName": "userName"
},
{
"managedObjectAttributeName": "$(assertion.firstname)",
"idcsAttributeName": "name.givenName"
},
{
"managedObjectAttributeName": "$(assertion.lastname)",
"idcsAttributeName": "name.familyName"
},
{
"managedObjectAttributeName": "$(assertion.mail)",
"idcsAttributeName": "emails[primary eq true and type eq \"work\"].value"
}
]
}
]
}
SAML JITプロビジョニング属性マッピングの使用方法とランタイムの動作
userName
、name.givenName
およびname.familyName
の値が存在しない場合、これらの属性はUser
スキーマでrequiredとしてマークされるため、実行時にエラーが発生します。テナントがオプションになるように構成されていないかぎり、プライマリ電子メール・アドレスについても同じことが当てはまります。
実行時に、アサーション属性値をマップ先のユーザー属性に割り当てることができるデータ型に変換できない場合、エラーは発生し、SSOは失敗します。
同じアイデンティティ・ドメイン・ユーザー属性をターゲットとする複数の属性マッピングが構成されている場合、位置の順序で評価および実行され、最後のマッピングの結果のみが保持されます。
jitUserProvAttributeUpdateEnabled
がtrue
の場合、値が含まれない受信アサーション属性によって、対応するマップ済アイデンティティ・ドメイン・ユーザー属性から値が削除されます。
${assertion.fed.issuerid)
$(assertion.fed.nameidvalue)
- 機密属性- スキーマ内で
"idcsSensitive: hash"
または"idcsSensitive: encrypt"
としてマークされている属性 - スキーマ内で
"idcsInternal: true"
としてマークされている属性 - readOnlyの属性
- ユーザー同期で禁止されているすべての属性
SAML JITプロビジョニングを使用してユーザーを作成すると、次の属性が設定されます。次の属性は構成できません:
bypassNotification : true
- たとえば、アカウントのアクティブ化の電子メールは、新しく作成されたユーザーに送信されません。syncedFromApp
- インバウンドSAMLアサーションの発行者に対応するアイデンティティ・プロバイダ・リソースへの参照。
isFederatedUser
属性がデフォルトでtrue
に設定されます。この動作は、SAML JITプロビジョニングのattributeMappings
構成でisFederatedUser
属性をfalse
に設定することで変更できます。このデフォルトの動作(
isFederatedUser = true
)は、ユーザー作成にのみ適用され、ユーザー更新には適用されません。attributeMappings
構成は、ユーザー作成とユーザー更新の両方に適用されます。FAQ
質問: SAML JITプロビジョニング中にグループ・メンバーシップを更新するために、アイデンティティ・ドメインにグループが存在する必要がありますか。
A: はい。グループ・メンバーシップを更新する前に、アイデンティティ・ドメインでグループを手動で同期または作成する必要があります。SAML JITプロビジョニングでは、グループは表示されません。
Q: 属性マッピングでリテラルをマップできますか。たとえば、ユーザーの作成中にisFederatedUser = true
をマップできますか。
A: はい。
質問: 属性マッピングで複数値属性はサポートされていますか。「はい」の場合、ペイロードにパッチを適用しますか、それとも上書きを実行しますか。
A: はい。アイデンティティ・ドメイン・ユーザー属性のすべての値は、SAML JITプロビジョニング属性マッピングの結果に置換されます。
質問: ユーザーがIdPのグループから削除された場合、どのように処理しますか。そのグループがアイデンティティ・ドメインで手動で割り当てられている場合はどうなりますか。置換とパッチ適用の動作を構成できますか。
回答: SAML JITプロビジョニング更新を使用したグループ割当ては、ユーザーのグループ割当て全体に対して、マージまたは上書きのいずれかの動作になるように構成できます。たとえば、更新が上書き用に構成されている場合、IdPアサーションに表示されない手動グループ割当ては削除されます。
Q: ユーザーの作成時にのみSAML JITプロビジョニングを実行し、後でユーザーを更新しないように構成できますか。
A: はい。jitUserProvCreateUserEnabled
がtrueで、jitUserProvAttributeUpdateEnabled
がfalseの場合、ユーザーが欠落していると、SAML JITプロビジョニングによって作成されますが、以降のログインでは更新されません。