Salesforceへのログインに使用されている接続アプリケーションに基づいてさまざまな画面を表示したい。ログインフローは、接続されているどのアプリが使用されているかをどういうわけか知ることができますか?
利用できるログインフロー変数は複数ありますが、どれも含まれていません接続されたアプリ。
このシナリオでは、次のいずれも役に立たないようです(ソース):
- LoginFlow_LoginType –この変数を使用すると、Flow / Orgのユーザータイプを指定できます。
- LoginFlow_IpAddress –この変数はユーザーのIPアドレスとして機能します。この変数を使用すると、ユーザー、プロファイル、およびその他のユーザー関連フィールドのIPアドレスを委任することができます。
- LoginFlow_UserAgent –この変数はユーザーのブラウザ文字列を表します。また、ユーザーがInternet
Explorerを使用して組織にログインするのを防ぐこともできます。- LoginFlow_Platform –この変数は、ユーザーがログインしているシステムの種類(Mac OSXなど)を示します。
- LoginFlow_Application –上記の変数と同様です。ただし、ユーザーがログインするデバイスの種類(iPhone、タブレット、デスクトップなど)が表示されるため、ユーザーを移動する終了場所がわかります。
- LoginFlow_Community –この変数は、該当する場合、ユーザーが現在参加しているコミュニティを示します。 LoginFlow_SessionLevel –この変数はセキュリティを担当し、高保証または標準保証のいずれかで機能します。
- LoginFlow_UserId –この変数は文字ID(最大18文字)を表示するように機能し、ユーザーを検索してシステムを検索し、同様のフィールドを見つけることもできます。
コメント
- 接続されている複数のアプリから組織にログインするために、1人のユーザーが割り当てられますか?また、SSOを使用してログインするのでしょうか、それともUserId / PWを使用するのでしょうか?
- はい、接続されている複数のアプリを使用してログインできます。 SalesforceはIDプロバイダーであるため、Salesforceのユーザー名/パスワードまたはFacebookまたはGoogle認証プロバイダーを使用できます。
- これはすべてのユーザーに適用されますか(内部&外部)またはコミュニティユーザーのみですか?コミュニティユーザーだけに解決策を提供できます。すべてのユーザーにとって、運が悪い可能性があります。
- コミュニティユーザーのみ。 IdPにはコミュニティログインライセンスを使用しています
回答
運が良かったかもしれません。 ExperienceIDまたはexpid
と呼ばれるものがあり、達成したいことを実行するために使用できる可能性があります。その主な目的は、顧客に応じて「ブランディングエクスペリエンス」をカスタマイズできるようにすることです。
Salesforce外部ID実装ガイドへのこのリンクを読むと、詳細を確認できます。また、 Winter18リリースノートからダイナミックブランディングを使用してユーザーのログインエクスペリエンスを変更するを読んでください。接続されている各アプリを異なる、各アプリに一意のexpidを割り当てることで、ConnectedAppsで必要なことを達成できるように思えます。
ExperienceIDを使用して、以下に示すように、2つの異なる戦略のいずれかを使用してエンドポイントを作成します。
次のエンドポイントをexpid_valueで拡張します。
- community-url / services / oauth2 / authorize / expid_value
- community-url / idp / endpoint / HttpPost / expid_value
- community-url / idp / endpoint / HttpRedirect / expid_value
expid = {value}で次のエンドポイントを拡張します。
- community-url_login_page?expid = {value}
- community-url / CommunitySelfReg?expid = {value}
- community-url / .well-known / auth-configuration?expid = {value}
自己登録ページに異なるexpid値を渡して、それぞれに異なる登録フローを提供しますブランド。
エクスペリエンスIDの値は、URLではなくCookieに取り込まれます。たとえば、expid_valueがCustomersに設定されている場合、関連付けられたCookieにはexpid_Customers値が含まれます。
コメント
- かなり賢い答え
- "ログインフローでexpidにアクセスする方法についての質問"
- @FernandoGavinho 'をCookieで渡したのか、コミュニティユーザーで保持できるexpid値の一部として渡したのかによって異なります。 'のプロファイル。 'を使用してログインエンドポイントを拡張したので、ログインフローの開始パラメータとして使用することもできます。'接続されたアプリから渡す方法に応じて、多くのオプションがあるように見えます。
- 私のユースケースでは、SSOエンドポイントを使用します" community-url / idp / endpoint / HttpPost / expid_value "。 ただし、'フローでこの値にアクセスする方法がわかりません。 それがvisualforceページである場合は可能ですが、フローでそれらにアクセスする方法はありますか? たぶん、入力専用の変数に名前を付けますか? " expid "と" ExpId "ですが、機能していないようです。
- 見つかりました。 ログインフローでexpIdにアクセスするには、System.Site.getExperienceId()メソッドを呼び出す必要があります。 これは、' Visualforceページの場合はコントローラーで、'ビジュアルフローの場合はInvocableMethodで実行できます。