Sdílet prostřednictvím


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

Důležité

Od 1. května 2025 už nebude Azure AD B2C k dispozici k nákupu pro nové zákazníky. Další informace najdete v našich nejčastějších dotazech.

Tento článek popisuje způsoby přizpůsobení a vylepšení 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 konfigurací ověřování v ukázkové desktopové aplikaci WPF pomocí článku Azure AD B2C .

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

Během cesty uživatele přihlašování 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.

Chcete-li předvyplnit přihlašovací jméno, postupujte takto:

  1. Pokud používáte vlastní zásadu, přidejte požadovanou vstupní deklaraci, jak je popsáno v Nastavte přímé přihlášení.
  2. Vyhledejte objekt konfigurace knihovny MSAL (Microsoft Authentication Library) a pak 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ředem vyberte zprostředkovatele identity

Pokud jste nakonfigurovali cestu přihlášení pro aplikaci tak, aby zahrnovala sociální účty, 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ích identit, který by se měl použít pro přihlášení. Pokud například aplikace určí 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 vašeho 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. domain_hint Přidejte parametr s odpovídajícím názvem domény do slovníku (napříkladfacebook.com).
  4. Předejte další objekt parametrů dotazu 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 podle potřeb vašich zákazníků. Další informace naleznete v tématu Přizpůsobení jazyka.

Pokud chcete nastavit upřednostňovaný jazyk, postupujte takto:

  1. Nakonfigurujte přizpůsobení jazyka.
  2. Vytvořte nebo použijte existující Dictionary objekt k uložení dalších parametrů dotazu.
  3. ui_locales Přidejte parametr s odpovídajícím kódem jazyka do slovníku (napříkladen-us).
  4. Předejte další objekt parametrů dotazu 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

Pomocí vlastních zásad můžete předat vlastní parametr řetězce dotazu. Dobrým příkladem použití je, když chcete dynamicky změ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 vlastní parametr řetězce dotazu, například campaignId. Nastavte hodnotu parametru (například germany-promotion).
  4. Předejte další objekt parametrů dotazu 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 jako součást žádosti o autorizaci OAuth2 odeslat příchozí webový token JSON (JWT). Příchozí token je indikátorem o uživateli nebo žádosti o autorizaci. Azure AD B2C ověří token a pak extrahuje deklaraci identity.

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

  1. Ve vlastní zásadě definujte technický profil nápovědy ID tokenu.
  2. V kódu vygenerujte nebo získejte token ID a pak nastavte token 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ů extra dotazu 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();

Konfigurujte protokolování

Knihovna MSAL generuje zprávy protokolu, které můžou pomoct s diagnostikou problémů. Aplikace může nakonfigurovat protokolování. Aplikace vám také může poskytnout vlastní kontrolu nad úrovní podrobností a o tom, 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 odesílání protokolů, 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í se nutně jednat o chybu nebo selhání, ale informace jsou určené pro diagnostiku a určení problémů.
  • Informace: MSAL protokoluje události, které jsou určeny pro informační účely, a ne nutně pro ladění.
  • Podrobné: Jedná se o výchozí úroveň. MSAL protokoluje podrobnosti chování knihovny.

Ve výchozím nastavení protokolovací nástroj MSAL nezachytává žá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 přesměrování

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

  • Vývoj: Pro vývoj v desktopových aplikacích můžete nastavit identifikátor URI přesměrování na http://localhosta Azure AD B2C bude respektovat libovolný port v požadavku. Pokud registrovaný identifikátor URI obsahuje port, Azure AD B2C tento port použije pouze. Například pokud je zaregistrovaný identifikátor URI přesměrování http://localhost, může být v požadavku identifikátor URI přesměrování http://localhost:<randomport>. Pokud je registrovaný identifikátor URI přesměrování http://localhost:8080, musí být identifikátor URI přesměrování v požadavku http://localhost:8080.
  • 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. Tento vzor by se měl dodržovat. Pokud dvě aplikace sdílejí stejné schéma, uživatelům se přidělí volba aplikací. Pokud se uživatel rozhodne nesprávně, přihlášení se nezdaří.
  • Dokončeno: URI přesměrování musí mít schéma i cestu. Cesta musí obsahovat alespoň jeden znak lomítka 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