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:
- 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í.
- 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:
- 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í.
- Vytvořte nebo použijte existující
Dictionary
objekt k uložení dalších parametrů dotazu. - Přidejte do slovníku
domain_hint
parametr s odpovídajícím názvem domény (napříkladfacebook.com
). - 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:
- Nakonfigurujte vlastní nastavení jazyka.
- Vytvořte nebo použijte existující
Dictionary
objekt k uložení dalších parametrů dotazu. - Přidejte do slovníku
ui_locales
parametr s odpovídajícím kódem jazyka (napříkladen-us
). - 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:
- Nakonfigurujte element ContentDefinitionParameters .
- Vytvořte nebo použijte existující
Dictionary
objekt k uložení dalších parametrů dotazu. - Přidejte parametr vlastního řetězce dotazu, například
campaignId
. Nastavte hodnotu parametru (napříkladgermany-promotion
). - 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:
- Ve vlastních zásadách definujte technický profil nápovědy tokenu ID.
- V kódu vygenerujte nebo získejte token ID a pak token nastavte na proměnnou (například
idToken
). - Vytvořte nebo použijte existující
Dictionary
objekt k uložení dalších parametrů dotazu. -
id_token_hint
Přidejte parametr s odpovídající proměnnou, která ukládá token ID. - 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://localhost
a 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 jehttp://localhost
například registrovaný identifikátor URI přesměrování , může býthttp://localhost:<randomport>
identifikátor URI přesměrování v požadavku . Pokud jehttp://localhost:8080
registrovaný identifikátor URI přesměrování , musí býthttp://localhost:8080
identifiká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/redirect
com.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
- Další informace najdete v tématu MSAL pro .NET, UPW, NetCore a možnosti konfigurace Xamarinu.