Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

SAML シングルサインオンのジャストインタイムプロビジョニングの理解

公開日: Oct 4, 2024
説明
ジャストインタイム (JIT) プロビジョニングのガイドライン

注意: この記事は SAML SSO の標準 JIT プロビジョニングに適用されます。Apex コードで SamlJitHandler インターフェースが実装されるカスタム設定については、ステップ 1 がデフォルトで適用され、ステップ 2 ~ 7 は Apex コードで処理されます。

1.   Salesforce が SAML アサーション (例: 12345) の件名の統合 ID と既存のユーザーレコードの FederationIdentifier 項目との照合を試みます。 
2.   一致するユーザーレコード見つかった場合、JIT プロビジョニングは属性を使って、属性で指定された項目を更新します。 
3.  一致するユーザーレコードが見つからないユーザーの場合、Salesforce は取引先責任者 ID (User.Contact) またはメール (Contact.Email) に基づいて一致する取引先責任者を検索します。
Contact.Email と Contact.LastName は User.Contact が指定されていない場合、どちらも必要なプロパティです。ただし、どちらのプロパティも存在する場合、一致は Contact.Email に基づいてのみ行われます。
4.   一致する取引先責任者レコード見つかった場合、JIT プロビジョニングは属性を使って、属性で指定された取引先責任者項目を更新してから、新規ユーザーレコードを挿入します。
5.  一致する取引先責任者レコードが見つからない場合、Salesforce は Contact.Account または Account.AccountNumber に基づいて一致する取引先を検索します。
Account.AccountNumber と Account.Name は Contact.Account が指定されていない場合、どちらも必要なプロパティです。ただし、どちらのプロパティも存在する場合、一致は Account.AccountNumber に基づいてのみ行われます。
6.   一致するアカウントレコードが見つかった場合、JIT プロビジョニングは指定された属性に基づいて新規取引先責任者レコードを挿入し、新規ユーザーレコードを挿入します。
7.   一致するアカウントレコードが見つからなかった場合JIT プロビジョニングは指定された属性に基づいて新規取引先レコードを挿入し、新規取引先責任者レコードを挿入し、新規ユーザーレコードを挿入します。
以下の例と、それによるさまざまなシナリオでの結果を参照してください。
例 1: 
ユーザレコードが存在する場合:  取引先責任者項目 (LastName、Email など) およびユーザー項目 (Email、LastName など) が更新されます。 
ユーザレコードは存在しないが、取引先責任者レコードが存在する場合:  SFDC は挿入された LastName と Email.New ユーザーレコードに基づいて取引先責任者を照合します。
ユーザーレコードと取引先責任者レコードが存在しない場合:  新規取引先責任者レコードとユーザーレコードが挿入されます
Contact.Account=00130000011Qx7i;
Contact.LastName=PortalUser; Contact.Email=testPortal1@test.com;
User.ProfileId=00e30000000wAhX; User.PortalRole=Worker; User.Username=testPortal1@test.com; User.Email=testPortal1@test.com;
User.LastName=PortalUser;
  
上の例では、ハードコード化された取引先 ID を使用して新規ポータルユーザーと取引先責任者を作成できます。このため、取引先の ID を知らない場合は、取引先の名前と取引先番号を使用して検索できます。
例 2: 
ユーザレコードが存在する場合:  取引先項目 (Name、Owner など)、取引先責任者項目 (LastName、Email など)、ユーザー項目 (Email、LastName など) が更新されます。 
ユーザレコードは存在しないが、取引先責任者レコードが存在する場合:  SFDC は LastName と Email に基づいて取引先責任者を照合します。 取引先項目 (Name、Owner) が更新されます。 新規ユーザーレコードが挿入されます
ユーザーレコードと取引先責任者レコードが存在しない場合:  SFDC は AccountNumber と Name に基づいて取引先を照合します。新規取引先責任者レコードとユーザーレコードが挿入されます
ユーザーレコード、取引先責任者レコード、取引先レコードが存在しない場合:  新規取引先、取引先責任者、ユーザーレコードが挿入されます
Account.AccountNumber=9999;
Account.Name=TestCompany; Account.Owner=005J0000000yvS0;
Contact.LastName=PortalUser2; Contact.Email=testPortal2@test.com; User.ProfileId=00eU0000000ZLQe;
 
User.PortalRole=Worker;
User.Username=testPortal2@test.com;
User.Email=testPortal2@test.com; User.LastName=PortalUser2;
上の例では、新規取引先レコードを作成するには所有者 ID が必要です。
JIT プロビジョニングで新規取引先レコードを作成しない場合、または IDP に取引先の詳細がない場合は、取引先属性をまとめて空白のままにすることができます。
例 3: 
ユーザレコードが存在する場合:  取引先責任者項目 (LastName、Email など) およびユーザー項目 (Email、LastName など) が更新されます。 
ユーザレコードは存在しないが、取引先責任者レコードが存在する場合:  SFDC は LastName と Email に基づいて取引先責任者を照合します。 新規ユーザーレコードが挿入されます
ユーザーレコードと取引先責任者レコードが存在しない場合:  SFDC は AccountNumber と Name に基づいて取引先を照合します。新規取引先責任者レコードとユーザーレコードが挿入されます
ユーザーレコード、取引先責任者レコード、取引先レコードが存在しない場合:  取引先が取引先責任者とポータルユーザーレコードを作成する必要があるため、プロセスによって新規レコードは挿入されません。
 
Contact.LastName=PortalUser3;
Contact.Email=testPortal3@test.com; User.ProfileId=00e30000000wAhX; User.PortalRole=Worker; User.Username=testPortal3@test.com;
User.Email=testPortal3@test.com; User.LastName=PortalUser3;
 
上の例に示すのは必要最小限の属性のみです。ただし、ユーザーレコード、取引先責任者レコード、取引先レコードで標準項目に対応する追加の属性を含めることができます。 

参考資料:
Single Sign-On Implementation Guide (シングルサインオン実装ガイド)
JIT Provisioning Requirements and SAML Assertion Fields (JIT プロビジョニング要件と SAML アサーション項目)
Just-in-Time Provisioning and SAML Assertion Fields for Portals (ポータルのジャストインタイムプロビジョニングとSAML アサーション項目) 
ナレッジ記事番号

000385744

 
読み込み中
Salesforce Help | Article