Jeg vil vise forskjellige skjermer basert på hvilken tilkoblet app som brukes til å logge på Salesforce. Kan påloggingsflyten på en eller annen måte vite hvilken tilkoblet app som brukes?
Det er flere Innloggingsflytvariabler vi kan utnytte, men ingen av dem inneholder den tilkoblede appen.
Ingen av følgende virker nyttige for dette scenariet ( kilde ):
- LoginFlow_LoginType – Denne variabelen lar deg angi en brukertype for Flow / Org.
- LoginFlow_IpAddress – Denne variabelen fungerer som brukerens IP-adresse. Gjennom denne variabelen har du makten til å delegere en IP-adresse til en bruker, profil og andre brukerrelaterte felt.
- LoginFlow_UserAgent – Denne variabelen står som brukerens nettleserstreng. Det lar deg også holde brukerne fra å bruke Internet
Explorer til å logge på organisasjonen din.- LoginFlow_Platform – Denne variabelen viser hva slags system (dvs. Mac OSX) brukerne dine logger på fra.
- LoginFlow_Application – I likhet med variabelen ovenfor; det viser imidlertid hva slags enhet brukerne dine logger på fra (dvs. iPhone, nettbrett, stasjonær PC osv.), slik at du vet hvilken sluttplassering de skal flytte dem til.
- LoginFlow_Community – Denne variabelen viser hvilket fellesskap brukeren din for øyeblikket er i, hvis aktuelt. LoginFlow_SessionLevel – Denne variabelen er ansvarlig for sikkerhet og fungerer enten med høy eller standard sikkerhet.
- LoginFlow_UserId – Denne variabelen fungerer for å vise tegn-IDer (opptil 18 tegn) og lar deg også slå opp brukeren (e) og søke i systemet for å finne lignende felt.
Kommentarer
- Vil en enkelt bruker bli tildelt til å logge på organisasjonen din fra mer enn en tilkoblet app? Vil de også logge på med SSO, eller vil de bruke UserId / PW?
- Ja, de kan bruke flere tilkoblede apper for å logge på. Salesforce er identitetsleverandøren, så de kan bruke Salesforce-brukernavnet / passordet eller Facebook- eller Google Auth-leverandører.
- Gjelder dette for ALLE brukere (interne & eksterne ) eller bare for fellesskapsbrukere? Hvis bare til fellesskapsbrukere, kan jeg gi en løsning. Hvis det er for alle brukere, kan det hende du har lykke til.
- Bare brukere av samfunnet. Vi bruker Community Login-lisensen for IdP
Svar
Du kan være heldig. Det er noe som kalles ExperienceID eller expid
som potensielt kan brukes til å gjøre det du vil oppnå. Det primære formålet er å kunne tilpasse «merkevareopplevelsen» for kunder, avhengig av om hvor de sendes til samfunnet ditt fra.
Du kan lære mer om det ved å lese denne lenken til Salesforce External Identity Implementation Guide og også ved å lese Endre brukernes påloggingsopplevelse med dynamisk merkevarebygging fra versjonsmerknadene for Winter 18 . Hvis du knytter hver tilkoblet app til en annen expid
, det ser ut til at du kan bruke det til å oppnå det du vil ha med dine Connected Apps ved å tildele hver app en unik utløp.
ExperienceID kan deretter brukes til å utvide en sluttpunkt ved å bruke en av to forskjellige strategier som vist nedenfor.
Utvid følgende sluttpunkter med expid_value.
- community-url / services / oauth2 / authorize / expid_value
- community-url / idp / endpoint / HttpPost / expid_value
- community-url / idp / endpoint / HttpRedirect / expid_value
Utvid følgende sluttpunkter med expid = {value}.
- community-url_login_page? Expid = {value}
- community-url / CommunitiesSelfReg? Expid = {value}
- community-url / .well-known / auth-configuration? expid = {value}
Send inn en annen expid-verdi til selvregistreringssiden for å levere en annen registreringsflyt for hver merkevare.
Opplevelses-ID-verdien blir registrert i en informasjonskapsel i stedet for i URL-en. For eksempel, hvis expid_value er satt til Kunder, har en tilknyttet informasjonskapsel verdien expid_Customers.
Kommentarer
- ganske smart svar
- Spørsmålet de kommer til " hvordan får du tilgang til expid i en påloggingsstrøm? "
- @FernandoGavinho Det avhenger av om du ' har gitt den i en informasjonskapsel eller som en del av ekspidverdien som kan holdes i en fellesskapsbruker ' s profil. Du kan også bruke den som en startparameter for påloggingsflyten siden du ' har brukt den til å utvide påloggingsendepunktet.Det ser ut til at du ' d har mange alternativer, avhengig av hvordan du sender den fra den tilkoblede appen.
- I mitt brukstilfelle bruker jeg SSO-endepunktet " community-url / idp / endpoint / HttpPost / expid_value ". Imidlertid vet jeg ikke ' hvordan jeg får tilgang til denne verdien i flyten. Jeg kunne hvis det var en visualforce-side, men er det en måte å få tilgang til dem på flyt? Kanskje du bare navngir en variabel for input? Jeg prøvde " expid " og " ExpId ", men det ser ikke ut til å fungere.
- Fant det. For å få tilgang til expId i påloggingsflyten må du ringe System.Site.getExperienceId () -metoden. Dette kan gjøres i kontrolleren hvis den ' er en Visualforce-side eller i en InvocableMethod hvis den ' er en visuell flyt.