Povolení možností ověřování v desktopové aplikaci WPF pomocí Azure AD B2C

Tento článek popisuje způsoby, jak můžete přizpůsobit a vylepšit prostředí ověřování Azure Active Directory B2C (Azure AD B2C) pro desktopovou aplikaci Windows Presentation Foundation (WPF).

Než začnete, seznamte se s článkem Konfigurace ověřování v ukázkové desktopové aplikaci WPF pomocí Azure AD B2C.

Předem vyplníte přihlašovací jméno.

Během cesty uživatele přihlášení může vaše aplikace cílit na konkrétního uživatele. Když aplikace cílí na uživatele, může v žádosti o login_hint autorizaci zadat parametr dotazu s přihlašovacím jménem uživatele. Azure AD B2C automaticky vyplní přihlašovací jméno a uživatel musí zadat jenom heslo.

Pokud chcete předem naplnit přihlašovací jméno, postupujte takto:

  1. Pokud používáte vlastní zásadu, přidejte požadovanou vstupní deklaraci identity, jak je popsáno v tématu Nastavení přímého přihlášení.
  2. Vyhledejte objekt konfigurace knihovny MSAL (Microsoft Authentication Library) a přidejte metodu withLoginHint() s nápovědou pro přihlášení.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithLoginHint("bob@contoso.com")
    .ExecuteAsync();

Předběžný výběr zprostředkovatele identity

Pokud jste nakonfigurovali přihlašovací cestu pro vaši aplikaci tak, aby zahrnovala účty sociálních sítí, jako je Facebook, LinkedIn nebo Google, můžete zadat domain_hint parametr . Tento parametr dotazu poskytuje nápovědu pro Azure AD B2C o zprostředkovateli sociální identity, který by se měl použít pro přihlášení. Pokud například aplikace zadá domain_hint=facebook.com, tok přihlášení přejde přímo na přihlašovací stránku Facebooku.

Pokud chcete uživatele přesměrovat na externího zprostředkovatele identity, postupujte takto:

  1. Zkontrolujte název domény externího zprostředkovatele identity. Další informace najdete v tématu Přesměrování přihlášení k poskytovateli sociálních sítí.
  2. Vytvořte nebo použijte existující Dictionary objekt k uložení dalších parametrů dotazu.
  3. Přidejte do slovníku domain_hint parametr s odpovídajícím názvem domény (například facebook.com).
  4. Předejte objekt parametrů dotazu navíc do metody objektu WithExtraQueryParameters konfigurace MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("domain_hint", "facebook.com");

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Určení jazyka uživatelského rozhraní

Přizpůsobení jazyka v Azure AD B2C umožňuje toku uživatelů přizpůsobit různé jazyky tak, aby vyhovovaly potřebám vašich zákazníků. Další informace najdete v tématu Přizpůsobení jazyka.

Upřednostňovaný jazyk nastavíte takto:

  1. Nakonfigurujte vlastní nastavení jazyka.
  2. Vytvořte nebo použijte existující Dictionary objekt k uložení dalších parametrů dotazu.
  3. Přidejte do slovníku ui_locales parametr s odpovídajícím kódem jazyka (například en-us).
  4. Předejte objekt parametrů dotazu navíc do metody objektu WithExtraQueryParameters konfigurace MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("ui_locales", "en-us");

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Předání vlastního parametru řetězce dotazu

S vlastními zásadami můžete předat vlastní parametr řetězce dotazu. Dobrým příkladem použití je, když chcete dynamicky měnit obsah stránky.

Pokud chcete předat vlastní parametr řetězce dotazu, postupujte takto:

  1. Nakonfigurujte element ContentDefinitionParameters .
  2. Vytvořte nebo použijte existující Dictionary objekt k uložení dalších parametrů dotazu.
  3. Přidejte parametr vlastního řetězce dotazu, například campaignId. Nastavte hodnotu parametru (například germany-promotion).
  4. Předejte objekt parametrů dotazu navíc do metody objektu WithExtraQueryParameters konfigurace MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("campaignId", "germany-promotion");

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Nápověda k předání tokenu ID

Aplikace předávající strany může v rámci žádosti o autorizaci OAuth2 odeslat příchozí webový token JSON (JWT). Příchozí token představuje nápovědu k uživateli nebo žádosti o autorizaci. Azure AD B2C token ověří a pak deklaraci identity extrahuje.

Pokud chcete do žádosti o ověření zahrnout nápovědu tokenu ID, postupujte takto:

  1. Ve vlastních zásadách definujte technický profil nápovědy tokenu ID.
  2. V kódu vygenerujte nebo získejte token ID a pak token nastavte na proměnnou (například idToken).
  3. Vytvořte nebo použijte existující Dictionary objekt k uložení dalších parametrů dotazu.
  4. id_token_hint Přidejte parametr s odpovídající proměnnou, která ukládá token ID.
  5. Předejte objekt parametrů dotazu navíc do atributu objektu extraQueryParameters konfigurace MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("id_token_hint", idToken);

authResult = await app.AcquireTokenInteractive(App.ApiScopes)
    .WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
    .WithExtraQueryParameters(extraQueryParameters)
    .ExecuteAsync();

Konfigurace protokolování

Knihovna MSAL generuje zprávy protokolu, které můžou pomoct diagnostikovat problémy. Aplikace může nakonfigurovat protokolování. Aplikace vám také může poskytnout vlastní kontrolu nad úrovní podrobností a tím, jestli se protokolují osobní a organizační data.

Doporučujeme vytvořit zpětné volání protokolování MSAL a poskytnout uživatelům způsob, jak odesílat protokoly, když mají problémy s ověřováním. MSAL poskytuje tyto úrovně podrobností protokolování:

  • Chyba: Něco se nepovedlo a vygenerovala se chyba. Tato úroveň se používá k ladění a identifikaci problémů.
  • Upozornění: Nemusí nutně dojít k chybě nebo selhání, ale informace jsou určené pro diagnostiku a určení problémů.
  • Informace: MSAL protokoluje události, které jsou určené pro informační účely, a ne nutně pro ladění.
  • Podrobné: Toto je výchozí úroveň. MSAL protokoluje úplné podrobnosti o chování knihovny.

Ve výchozím nastavení protokolovací nástroj MSAL nezachycuje žádná osobní ani organizační data. Knihovna vám umožňuje povolit protokolování osobních a organizačních dat, pokud se tak rozhodnete.

Následující fragment kódu ukazuje, jak nakonfigurovat protokolování MSAL:

PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
    .WithB2CAuthority(AuthoritySignUpSignIn)
    .WithRedirectUri(RedirectUri)
    .WithLogging(Log, LogLevel.Info, false) // don't log P(ersonally) I(dentifiable) I(nformation) details on a regular basis
    .Build();

Konfigurace identifikátoru URI pro přesměrování

Při výběru identifikátoru URI přesměrování při registraci desktopové aplikace mějte na paměti následující důležité aspekty:

  • Vývoj: Pro účely vývoje v desktopových aplikacích můžete nastavit identifikátor URI přesměrování na http://localhosta Azure AD B2C bude respektovat jakýkoli port v požadavku. Pokud registrovaný identifikátor URI obsahuje port, Azure AD B2C použije pouze tento port. Pokud je http://localhostnapříklad registrovaný identifikátor URI přesměrování , může být http://localhost:<randomport>identifikátor URI přesměrování v požadavku . Pokud je http://localhost:8080registrovaný identifikátor URI přesměrování , musí být http://localhost:8080identifikátor URI přesměrování v požadavku .
  • Jedinečné: Schéma identifikátoru URI přesměrování musí být jedinečné pro každou aplikaci. V příkladu com.onmicrosoft.contosob2c.exampleapp://oauth/redirectcom.onmicrosoft.contosob2c.exampleapp je schéma. Měli byste postupovat podle tohoto vzoru. Pokud dvě aplikace sdílejí stejné schéma, uživatelé mají na výběr z aplikací. Pokud se uživatelé rozhodnou nesprávně, přihlášení se nezdaří.
  • Dokončeno: Identifikátor URI přesměrování musí mít schéma i cestu. Cesta musí obsahovat alespoň jedno lomítko za doménou. Například //oauth/ funguje a //oauth selže. Do identifikátoru URI nezahrnujte speciální znaky. Například znak podtržítka (_) není povolený.

Další kroky