SAML JITプロビジョニングの構成
SAMLジャストインタイム(JIT)プロビジョニングでは、ユーザーが最初にSSOを実行しようとしたときに、ユーザーがまだアイデンティティ・ドメインに存在しない場合、ユーザー・アカウントの作成が自動化されます。SAML JITプロビジョニングでは、自動ユーザー作成に加えて、プロビジョニングの一環としてグループ・メンバーシップの付与および取消しが可能です。SAML JITプロビジョニングは、サービス・プロバイダー(SP)ストア内のユーザーの属性をIDプロバイダー(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です。 ノート: グループ・マッピングを使用したSAMLジャストインタイム(JIT)プロビジョニングを使用して、ユーザーのグループ権限を割り当てたり削除したりする場合は、グループ・メンバーシップへの変更がすぐに反映されない可能性があることに注意してください。これは、特にOCIコンソールなどのアイデンティティ・データ・プレーンに依存する機能にアクセスする場合の、最終的な一貫性によるものです。その結果、ユーザー割当てまたは削除が関連グループに完全に伝播されるまでに遅延が発生する可能性があります。リージョン間のシナリオでは、伝播時間が長くなる場合があります。 |
|
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スキーマで必須のマークが付けられるため、実行時にエラーが発生します。テナントがオプションになるよう構成されていないかぎり、プライマリ電子メール・アドレスにも同じことが当てがまります。
実行時に、アサーション属性値をマップ先のユーザー属性に割り当てることができるデータ型に変換できない場合、エラーが発生し、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構成は、ユーザー作成とユーザー更新の両方に適用されます。よくある質問
質問: SAML JITプロビジョニング中にグループ・メンバーシップを更新するために、アイデンティティ・ドメインにグループが存在する必要がありますか。
A: はい。グループ・メンバーシップを更新する前に、アイデンティティ・ドメインでグループを同期または手動で作成する必要があります。SAML JITプロビジョニングでは、グループはオンザフライで作成されません。
質問: 属性マッピングでリテラルをマップできますか。たとえば、ユーザーの作成中にisFederatedUser = trueをマップできますか。
A: はい。
Q: 属性マッピングで複数値属性をサポートしていますか。「はい」の場合、ペイロードにパッチを適用するか、それとも上書きを実行しますか。
A: はい。アイデンティティ・ドメイン・ユーザー属性のすべての値は、SAML JITプロビジョニング属性マッピングの最終的な結果に置き換えられます。
質問: ユーザーがIdPのグループから削除された場合、どのように処理しますか。そのグループがアイデンティティ・ドメインで手動で割り当てられた場合はどうなりますか? 置換とパッチ適用の動作を構成できますか。
A: SAML JITプロビジョニング更新を使用したグループ割当ては、ユーザーのグループ割当て全体に対して、マージまたは上書きのいずれかの動作になるよう構成できます。たとえば、更新が上書き用に構成されている場合、IdPアサーションで表示されない手動グループ割当ては削除されます。
Q: ユーザーの作成時にのみSAML JITプロビジョニングを実行し、後でユーザーを更新しないように構成できますか。
A: はい。jitUserProvCreateUserEnabledがtrueで、jitUserProvAttributeUpdateEnabledがfalseの場合、ユーザーが欠落していると、SAML JITプロビジョニングによってユーザーが作成されますが、以降のログインでは更新されません。