Använda MSAL4J för att logga in användare med sociala identiteter

Du kan använda MSAL4J för att logga in användare med sociala identiteter med hjälp av Azure Active Directory B2C (Azure AD B2C). Azure AD B2C bygger på begreppet principer. I MSAL4J innebär det att ange en policy att tillhandahålla en auktoritet – när du skapar en klientapplikation måste du ange policyn i auktoritetskonfigurationen

Auktoritet för en B2C-klientorganisation och policy

I allmänhet är behörigheten att använda https://login.microsoftonline.com/tfp/{tenant}/{policyName}, där:

  • tenant är namnet på Azure AD B2C-klientorganisationen
  • policyName namnet på principen som ska tillämpas (till exempel b2c_1_susi för inloggning/registrering).

Note

Den nuvarande rekommendationen från Azure AD B2C-teamet är att använda b2clogin.com som auktoritet. Till exempel https://{your-tenant-name}.b2clogin.com/tfp/{your-tenant-ID}/{policyname}. Mer information finns i Ange omdirigerings-URL:er till b2clogin.com för Azure Active Directory B2C.

Begränsningar för användarnamnet och lösenordsflödet

Microsoft rekommenderar att du inte använder autentiseringsuppgifterna för resursägares lösenord (ROPC), även kallat användarnamn och lösenordsflöde. I de flesta scenarier är säkrare alternativ tillgängliga och rekommenderas. Det här flödet kräver en mycket hög grad av förtroende för programmet och medför risker som inte finns i andra flöden. Du bör bara använda det här flödet när andra säkrare flöden inte är livskraftiga. Mer information om varför du vill undvika att använda det här bidraget finns i varför Microsoft arbetar för att göra lösenord till ett minne blott.

Om du använder användarnamns- och lösenordsflöden med MSAL4J bör du vara medveten om följande begränsningar:

  • Flödet fungerar bara för lokala konton, där du registrerar dig med Azure AD B2C med ett e-postmeddelande eller användarnamn. Det här flödet fungerar inte om du federerar till någon av de identitetsprovidrar som stöds av B2C (Facebook, Google osv.).
  • För närvarande returneras ingen id_token från B2C när du implementerar ROPC-flödet från MSAL. Det innebär att ett kontoobjekt inte kan skapas, så i cacheminnet finns det inget konto och ingen användare. Flödet acquireTokenSilently fungerar inte i det här scenariot. Ropc visar dock inget användargränssnitt, så användarupplevelsen påverkas inte.

Instansiering av en applikation

För konfidentiella klientapplikationer:

 ConfidentialClientApplication cca = ConfidentialClientApplication.builder(APP_ID, credential)
    .b2cAuthority(B2C_AUTHORITY)
    .build();

För offentliga klientprogram:

PublicClientApplication pca = new PublicClientApplication.Builder(APP_ID)
    .b2cAuthority(B2C_AUTHORITY)
    .build();