Jag vill visa olika skärmar baserat på vilken ansluten app som används för att logga in på Salesforce. Kan inloggningsflödet på något sätt veta vilken ansluten app som används?
Det finns flera Inloggningsflödesvariabler vi kan använda, men ingen av dem innehåller den anslutna appen.
Inget av följande verkar användbart för det här scenariot ( källa ):
- LoginFlow_LoginType – Denna variabel låter dig ange en användartyp för Flow / Org.
- LoginFlow_IpAddress – Denna variabel fungerar som en användares IP-adress. Genom denna variabel har du befogenhet att delegera en IP-adress till en användare, profil och andra användarrelaterade fält.
- LoginFlow_UserAgent – Denna variabel står som användarens webbläsarsträng. Det låter dig också hindra användare från att använda Internet
Explorer för att logga in på din organisation.- LoginFlow_Platform – Denna variabel visar vilken typ av system (dvs. Mac OSX) dina användare loggar in från.
- LoginFlow_Application – Liknar ovanstående variabel; det visar dock vilken typ av enhet dina användare loggar in från (dvs. iPhone, surfplatta, skrivbord etc.) så att du vet vilken målplats du ska flytta dem till.
- LoginFlow_Community – Denna variabel visar vilken grupp din användare för närvarande är i, om tillämpligt. LoginFlow_SessionLevel – Den här variabeln ansvarar för säkerheten och fungerar antingen med hög säkerhet eller standardförsäkring.
- LoginFlow_UserId – Denna variabel fungerar för att visa tecken-ID (upp till 18 tecken långa) och låter dig också slå upp dina användare och söka i systemet för att hitta liknande fält.
Kommentarer
- Kommer en enskild användare att logga in i din organisation från mer än en ansluten app? Kommer de också att logga in med SSO eller kommer de att använda sin UserId / PW?
- Ja, de kan använda flera anslutna appar för att logga in. Salesforce är identitetsleverantören, så de kan använda sitt Salesforce-användarnamn / lösenord eller Facebook eller Google Auth-leverantörer.
- Gäller detta för ALLA användare (internt & externt ) eller endast för community-användare? Om bara till community-användare kan jag ge en lösning. Om det gäller alla användare kanske du inte har tur.
- Endast community-användare. Vi använder Community Login-licensen för IdP
Svar
Du kan ha tur. Det finns något som kallas ExperienceID eller expid
som potentiellt kan användas för att göra vad du vill uppnå. Dess primära syfte är att kunna anpassa ”branding experience” för kunder beroende på om varifrån de skickas till din community.
Du kan läsa mer om det genom att läsa den här länken till Salesforce External Identity Implementation Guide och även genom att läsa Ändra användarnas inloggningsupplevelse med dynamisk branding från utgåvan av Winter 18 . Om du kopplar varje ansluten app till en annan expid
, det verkar för mig att du kan använda det för att uppnå vad du vill med dina anslutna appar genom att tilldela varje app ett unikt expid.
ExperienceID kan sedan användas för att förlänga en slutpunkt med en av två olika strategier som visas nedan.
Förläng följande slutpunkter med expid_value.
- community-url / services / oauth2 / authorize / expid_value
- community-url / idp / endpoint / HttpPost / expid_value
- community-url / idp / endpoint / HttpRedirect / expid_value
Förläng följande slutpunkter med expid = {value}.
- community-url_login_page? Expid = {value}
- community-url / CommunitiesSelfReg? Expid = {value}
- community-url / .well-known / auth-configuration? expid = {value}
Skicka ett annat expidvärde till självregistreringssidan för att leverera ett olika registreringsflöde för varje varumärke.
Upplevelse-ID-värdet fångas upp i en cookie snarare än i webbadressen. Till exempel, om expid_value är inställt på Customers, har en associerad cookie expid_Customers-värdet.
Kommentarer
- ganska smart svar
- Frågan de kommer till " hur får man tillgång till expid i ett inloggningsflöde? "
- @FernandoGavinho Det beror på om du ' har skickat den i en cookie eller som en del av expidvärdet som kan hållas i en community-användare ' s profil. Du kan också använda den som startparameter för ditt inloggningsflöde eftersom du ' har använt den för att utöka inloggningsslutpunkten.Det verkar som om du ' d har många alternativ beroende på hur du skickar det från din anslutna app.
- I mitt användningsfall använder jag SSO-slutpunkten " community-url / idp / endpoint / HttpPost / expid_value ". Men jag vet inte ' hur jag får åtkomst till detta värde i flödet. Jag kunde om det var en visualforce-sida, men finns det ett sätt att komma åt dem på flödet? Namnge en variabel bara för inmatning? Jag försökte " expid " och " ExpId ", men det verkar inte fungera.
- Hittade det. För att komma åt expId i inloggningsflödet måste du ringa metoden System.Site.getExperienceId (). Detta kan göras i styrenheten om den ' är en Visualforce-sida eller i en InvocableMethod om den ' är ett visuellt flöde.