Kurz: Volání rozhraní Microsoft Graph API z aplikace Univerzální platforma Windows (UPW)
V tomto kurzu vytvoříte nativní aplikaci Univerzální platforma Windows (UPW), která přihlásí uživatele a získá přístupový token pro volání rozhraní Microsoft Graph API.
Na konci této příručky vaše aplikace volá chráněné rozhraní API pomocí osobních účtů. Příklady jsou outlook.com, live.com a další. Vaše aplikace také volá pracovní a školní účty z libovolné společnosti nebo organizace, která má ID Microsoft Entra.
V tomto kurzu:
- Vytvoření projektu Univerzální platforma Windows (UPW) v sadě Visual Studio
- Registrace aplikace na webu Azure Portal
- Přidání kódu pro podporu přihlášení a odhlášení uživatele
- Přidání kódu pro volání rozhraní Microsoft Graph API
- Otestování aplikace
Požadavky
- Visual Studio 2019 s nainstalovanou úlohou vývoje Univerzální platforma Windows
Jak funguje tento průvodce
Tato příručka vytvoří ukázkovou aplikaci pro UPW, která se dotazuje rozhraní Microsoft Graph API. V tomto scénáři se token přidá do požadavků HTTP pomocí autorizační hlavičky. Microsoft Authentication Library zpracovává získání a obnovení tokenů.
Balíčky NuGet
Tato příručka používá následující balíček NuGet:
Knihovna | Popis |
---|---|
Microsoft.Identity.Client | Microsoft Authentication Library |
Microsoft.Graph | Klientská knihovna Microsoft Graphu |
Nastavení projektu
Tato část obsahuje podrobné pokyny k integraci desktopové aplikace .NET (XAML) windows s přihlášením s Microsoftem. Aplikace pak může dotazovat webová rozhraní API, která vyžadují token, například rozhraní Microsoft Graph API.
Tato příručka vytvoří aplikaci, která zobrazí tlačítko, které se dotazuje rozhraní Microsoft Graph API a tlačítko pro odhlášení. Zobrazí se také textová pole, která obsahují výsledky volání.
Tip
Pokud chcete zobrazit dokončenou verzi projektu, který vytvoříte v tomto kurzu, můžete si ho stáhnout z GitHubu.
Vytvořte si svoji aplikaci
Otevřete Visual Studio a vyberte Vytvořit nový projekt.
V části Vytvořit nový projekt zvolte Prázdnou aplikaci (Univerzální windows) pro C# a vyberte Další.
V části Konfigurace nového projektu pojmenujte aplikaci a vyberte Vytvořit.
Pokud se zobrazí výzva, v aplikaci Nový Univerzální platforma Windows Project vyberte libovolnou verzi pro cílové a minimální verze a vyberte OK.
Přidání knihovny Microsoft Authentication Library do projektu
V aplikaci Visual Studio zvolte Nástroje>Správce balíčků NuGet>Konzola Správce balíčků.
Zkopírujte a vložte do okna konzoly Správce balíčků následující příkazy:
Install-Package Microsoft.Identity.Client Install-Package Microsoft.Graph
Poznámka:
První příkaz nainstaluje knihovnu Microsoft Authentication Library (MSAL.NET). MSAL.NET získává, ukládá do mezipaměti a aktualizuje tokeny uživatelů, které přistupují k rozhraním API, která jsou chráněná platformou Microsoft Identity Platform. Druhý příkaz nainstaluje klientskou knihovnu Microsoft Graph .NET k ověření požadavků na Microsoft Graph a volání služby.
Vytvoření uživatelského rozhraní aplikace
Visual Studio vytvoří MainPage.xaml jako součást šablony projektu. Otevřete tento soubor a pak nahraďte uzel Grid vaší aplikace následujícím kódem:
<Grid>
<StackPanel Background="Azure">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<Button x:Name="CallGraphButton" Content="Call Microsoft Graph API" HorizontalAlignment="Right" Padding="5" Click="CallGraphButton_Click" Margin="5" FontFamily="Segoe Ui"/>
<Button x:Name="SignOutButton" Content="Sign-Out" HorizontalAlignment="Right" Padding="5" Click="SignOutButton_Click" Margin="5" Visibility="Collapsed" FontFamily="Segoe Ui"/>
</StackPanel>
<TextBlock Text="API Call Results" Margin="2,0,0,-5" FontFamily="Segoe Ui" />
<TextBox x:Name="ResultText" TextWrapping="Wrap" MinHeight="120" Margin="5" FontFamily="Segoe Ui"/>
<TextBlock Text="Token Info" Margin="2,0,0,-5" FontFamily="Segoe Ui" />
<TextBox x:Name="TokenInfoText" TextWrapping="Wrap" MinHeight="70" Margin="5" FontFamily="Segoe Ui"/>
</StackPanel>
</Grid>
Získání tokenu pro rozhraní Microsoft Graph API pomocí knihovny Microsoft Authentication Library
Tato část ukazuje, jak pomocí knihovny Microsoft Authentication Library získat token pro rozhraní Microsoft Graph API. Proveďte změny v souboru MainPage.xaml.cs .
V souboru MainPage.xaml.cs přidejte následující odkazy:
using Microsoft.Identity.Client; using Microsoft.Graph; using Microsoft.Graph.Models; using System.Diagnostics; using System.Threading.Tasks; using System.Net.Http.Headers;
Nahraďte třídu
MainPage
následujícím kódem:public sealed partial class MainPage : Page { //Set the scope for API call to user.read private string[] scopes = new string[] { "user.read" }; // Below are the clientId (Application Id) of your app registration and the tenant information. // You have to replace: // - the content of ClientID with the Application Id for your app registration private const string ClientId = "[Application Id pasted from the application registration portal]"; private const string Tenant = "common"; // Alternatively "[Enter your tenant, as obtained from the Azure portal, e.g. kko365.onmicrosoft.com]" private const string Authority = "https://login.microsoftonline.com/" + Tenant; // The MSAL Public client app private static IPublicClientApplication PublicClientApp; private static string MSGraphURL = "https://graph.microsoft.com/v1.0/"; private static AuthenticationResult authResult; public MainPage() { this.InitializeComponent(); } /// <summary> /// Call AcquireTokenAsync - to acquire a token requiring user to sign in /// </summary> private async void CallGraphButton_Click(object sender, RoutedEventArgs e) { try { // Sign in user using MSAL and obtain an access token for Microsoft Graph GraphServiceClient graphClient = await SignInAndInitializeGraphServiceClient(scopes); // Call the /me endpoint of Graph User graphUser = await graphClient.Me.GetAsync(); // Go back to the UI thread to make changes to the UI await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { ResultText.Text = "Display Name: " + graphUser.DisplayName + "\nBusiness Phone: " + graphUser.BusinessPhones.FirstOrDefault() + "\nGiven Name: " + graphUser.GivenName + "\nid: " + graphUser.Id + "\nUser Principal Name: " + graphUser.UserPrincipalName; DisplayBasicTokenInfo(authResult); this.SignOutButton.Visibility = Visibility.Visible; }); } catch (MsalException msalEx) { await DisplayMessageAsync($"Error Acquiring Token:{System.Environment.NewLine}{msalEx}"); } catch (Exception ex) { await DisplayMessageAsync($"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}"); return; } } /// <summary> /// Signs in the user and obtains an access token for Microsoft Graph /// </summary> /// <param name="scopes"></param> /// <returns> Access Token</returns> private static async Task<string> SignInUserAndGetTokenUsingMSAL(string[] scopes) { // Initialize the MSAL library by building a public client application PublicClientApp = PublicClientApplicationBuilder.Create(ClientId) .WithAuthority(Authority) .WithUseCorporateNetwork(false) .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient") .WithLogging((level, message, containsPii) => { Debug.WriteLine($"MSAL: {level} {message} "); }, LogLevel.Warning, enablePiiLogging: false, enableDefaultPlatformLogging: true) .Build(); // It's good practice to not do work on the UI thread, so use ConfigureAwait(false) whenever possible. IEnumerable<IAccount> accounts = await PublicClientApp.GetAccountsAsync().ConfigureAwait(false); IAccount firstAccount = accounts.FirstOrDefault(); try { authResult = await PublicClientApp.AcquireTokenSilent(scopes, firstAccount) .ExecuteAsync(); } catch (MsalUiRequiredException ex) { // A MsalUiRequiredException happened on AcquireTokenSilentAsync. This indicates you need to call AcquireTokenAsync to acquire a token Debug.WriteLine($"MsalUiRequiredException: {ex.Message}"); authResult = await PublicClientApp.AcquireTokenInteractive(scopes) .ExecuteAsync() .ConfigureAwait(false); } return authResult.AccessToken; } }
Interaktivní získání tokenu uživatele
Výsledkem AcquireTokenInteractive
metody je okno s výzvou k přihlášení uživatelů. Aplikace obvykle vyžadují, aby se uživatelé při prvním přístupu k chráněnému prostředku přihlásili interaktivně. Při neúspěšném získání tokenu se můžou také muset přihlásit. Příkladem je vypršení platnosti hesla uživatele.
Získání tokenu uživatele bez upozornění
Metoda AcquireTokenSilent
zpracovává získání a obnovení tokenů bez zásahu uživatele. Po AcquireTokenInteractive
prvním spuštění se uživateli zobrazí výzva k zadání přihlašovacích údajů, použijte metodu AcquireTokenSilent
k vyžádání tokenů pro pozdější volání. Tato metoda získá tokeny bezobslužně. Microsoft Authentication Library zpracovává mezipaměť tokenů a obnovení.
Nakonec metoda AcquireTokenSilent
selže. Mezi důvody selhání patří uživatel, který se odhlásil nebo změnil heslo na jiném zařízení. Když Microsoft Authentication Library zjistí, že problém vyžaduje interaktivní akci, vyvolá MsalUiRequiredException
výjimku. Vaše aplikace může tuto výjimku zpracovat dvěma způsoby:
Vaše aplikace volá
AcquireTokenInteractive
okamžitě. Výsledkem tohoto volání je výzva, aby se uživatel přihlásil. Tento přístup obvykle používejte pro online aplikace, u kterých není k dispozici offline obsah pro uživatele. Ukázka vygenerovaná tímto nastavením s asistencí se řídí vzorem. Při prvním spuštění ukázky se zobrazí v akci.Vzhledem k tomu, že aplikace nepoužil žádný uživatel,
accounts.FirstOrDefault()
obsahuje hodnotu null a vyvoláMsalUiRequiredException
výjimku.Kód v ukázce pak zpracuje výjimku voláním
AcquireTokenInteractive
. Výsledkem tohoto volání je výzva, aby se uživatel přihlásil.Aplikace zobrazí uživatelům vizuální označení, že se potřebují přihlásit. Pak můžou vybrat správný čas pro přihlášení. Aplikace se může opakovat
AcquireTokenSilent
později. Tento přístup použijte, když uživatelé můžou bez přerušení používat jiné funkce aplikace. Příkladem je, když je v aplikaci k dispozici offline obsah. V takovém případě se uživatelé můžou rozhodnout, kdy se chtějí přihlásit. Aplikace se může po dočasné nedostupnosti sítě opakovatAcquireTokenSilent
.
Vytvoření instance klienta služby Microsoft Graph získáním tokenu z metody SignInUserAndGetTokenUsingMSAL
V projektu vytvořte nový soubor s názvem TokenProvider.cs: Klikněte pravým tlačítkem myši na projekt a vyberte Přidat>novou prázdnou stránku položky.>
Do nově vytvořeného souboru přidejte následující kód:
using Microsoft.Kiota.Abstractions.Authentication;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace UWP_app_MSGraph {
public class TokenProvider : IAccessTokenProvider {
private Func<string[], Task<string>> getTokenDelegate;
private string[] scopes;
public TokenProvider(Func<string[], Task<string>> getTokenDelegate, string[] scopes) {
this.getTokenDelegate = getTokenDelegate;
this.scopes = scopes;
}
public Task<string> GetAuthorizationTokenAsync(Uri uri, Dictionary<string, object> additionalAuthenticationContext = default,
CancellationToken cancellationToken = default) {
return getTokenDelegate(scopes);
}
public AllowedHostsValidator AllowedHostsValidator { get; }
}
}
Tip
Po vložení kódu se ujistěte, že obor názvů v souboru TokenProvider.cs odpovídá oboru názvů projektu. To vám umožní snadněji odkazovat na TokenProvider
třídu v projektu.
Třída TokenProvider
definuje vlastního zprostředkovatele přístupového tokenu, který spustí zadanou metodu delegáta pro získání a vrácení přístupového tokenu.
Do souboru MainPage.xaml.cs přidejte následující novou metodu:
/// <summary>
/// Sign in user using MSAL and obtain a token for Microsoft Graph
/// </summary>
/// <returns>GraphServiceClient</returns>
private async static Task<GraphServiceClient> SignInAndInitializeGraphServiceClient(string[] scopes)
{
var tokenProvider = new TokenProvider(SignInUserAndGetTokenUsingMSAL, scopes);
var authProvider = new BaseBearerTokenAuthenticationProvider(tokenProvider);
var graphClient = new GraphServiceClient(authProvider, MSGraphURL);
return await Task.FromResult(graphClient);
}
V této metodě používáte zprostředkovatele TokenProvider
vlastního přístupového tokenu k připojení SignInUserAndGetTokenUsingMSAL
metody k sadě Microsoft Graph .NET SDK a vytvoření ověřeného klienta.
Chcete-li použít BaseBearerTokenAuthenticationProvider
, v souboru MainPage.xaml.cs přidejte následující odkaz:
using Microsoft.Kiota.Abstractions.Authentication;
Další informace o volání REST proti chráněnému rozhraní API
V této ukázkové aplikaci vytvoří GetGraphServiceClient
metoda instanci GraphServiceClient
pomocí přístupového tokenu. GraphServiceClient
Pak se použije k získání informací o profilu uživatele z koncového bodu me.
Přidání metody pro odhlášení uživatele
Pokud se chcete odhlásit uživatele, přidejte do souboru MainPage.xaml.cs následující metodu:
/// <summary>
/// Sign out the current user
/// </summary>
private async void SignOutButton_Click(object sender, RoutedEventArgs e)
{
IEnumerable<IAccount> accounts = await PublicClientApp.GetAccountsAsync().ConfigureAwait(false);
IAccount firstAccount = accounts.FirstOrDefault();
try
{
await PublicClientApp.RemoveAsync(firstAccount).ConfigureAwait(false);
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
ResultText.Text = "User has signed out";
this.CallGraphButton.Visibility = Visibility.Visible;
this.SignOutButton.Visibility = Visibility.Collapsed;
});
}
catch (MsalException ex)
{
ResultText.Text = $"Error signing out user: {ex.Message}";
}
}
MSAL.NET používá asynchronní metody k získání tokenů nebo manipulaci s účty. Proto podporují akce uživatelského rozhraní ve vlákně uživatelského rozhraní. To je důvod volání Dispatcher.RunAsync
a opatření k volání ConfigureAwait(false)
.
Další informace o odhlášení
Metoda SignOutButton_Click
odebere uživatele z mezipaměti uživatele Microsoft Authentication Library. Tato metoda efektivně říká knihovně Microsoft Authentication Library, aby zapomněla aktuálního uživatele. Budoucí požadavek na získání tokenu bude úspěšný pouze v případě, že je interaktivní.
Aplikace v této ukázce podporuje jednoho uživatele. Microsoft Authentication Library podporuje scénáře, kdy se uživatel může přihlásit k více účtům. Příkladem je e-mailová aplikace, ve které má uživatel několik účtů.
Zobrazení základních informací o tokenu
Přidejte následující metodu do Souboru MainPage.xaml.cs pro zobrazení základních informací o tokenu:
/// <summary>
/// Display basic information contained in the token. Needs to be called from the UI thread.
/// </summary>
private void DisplayBasicTokenInfo(AuthenticationResult authResult)
{
TokenInfoText.Text = "";
if (authResult != null)
{
TokenInfoText.Text += $"User Name: {authResult.Account.Username}" + Environment.NewLine;
TokenInfoText.Text += $"Token Expires: {authResult.ExpiresOn.ToLocalTime()}" + Environment.NewLine;
}
}
Další informace
Tokeny ID získané pomocí OpenID Připojení obsahují také malou podmnožinu informací, které se týkají uživatele. DisplayBasicTokenInfo
zobrazí základní informace obsažené v tokenu. Tyto informace zahrnují zobrazované jméno a ID uživatele. Zahrnuje také datum vypršení platnosti tokenu a řetězec, který představuje samotný přístupový token. Pokud několikrát vyberete tlačítko Volat rozhraní Microsoft Graph API , uvidíte, že se stejný token znovu použil pro pozdější žádosti. Můžete se také podívat na datum vypršení platnosti rozšířené, když knihovna Microsoft Authentication Library rozhodne, že je čas token obnovit.
Zobrazit zprávu
Do souboru MainPage.xaml.cs přidejte následující novou metodu:
/// <summary>
/// Displays a message in the ResultText. Can be called from any thread.
/// </summary>
private async Task DisplayMessageAsync(string message)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
ResultText.Text = message;
});
}
Registrace aplikace
Tip
Postup v tomto článku se může mírně lišit v závislosti na portálu, od který začínáte.
Teď zaregistrujte aplikaci:
- Přihlaste se do Centra pro správu Microsoft Entra jako alespoň vývojář aplikací.
- Pokud máte přístup k více tenantům, pomocí ikony Nastavení v horní nabídce přepněte na tenanta, ve kterém chcete aplikaci zaregistrovat z nabídky Adresáře a předplatná.
- Přejděte k aplikacím> identit>Registrace aplikací.
- Vyberte Nová registrace.
- Zadejte název aplikace, například
UWP-App-calling-MSGraph
. Uživatelé vaší aplikace můžou vidět tento název a později ho můžete změnit. - V části Podporované typy účtů vyberte Účty v libovolném adresáři organizace (libovolný adresář Microsoft Entra – Víceklient) a osobní účty Microsoft (např. Skype, Xbox).
- Vyberte Zaregistrovat.
- Na stránce přehledu vyhledejte hodnotu ID aplikace (klienta) a zkopírujte ji. Vraťte se do sady Visual Studio, otevřete MainPage.xaml.cs a nahraďte hodnotu
ClientId
touto hodnotou.
Konfigurace ověřování pro vaši aplikaci:
- V Centru pro správu Microsoft Entra vyberte Možnost Přidat platformu a>pak vyberte Mobilní a desktopové aplikace.
- V části Identifikátory URI pro přesměrování zadejte
https://login.microsoftonline.com/common/oauth2/nativeclient
. - Vyberte Konfigurovat.
Konfigurace oprávnění rozhraní API pro vaši aplikaci:
- Vyberte Oprávnění rozhraní API>Přidat oprávnění.
- Vyberte Microsoft Graph.
- Vyberte Delegovaná oprávnění, vyhledejte User.Read a ověřte, že je vybraná možnost User.Read .
- Pokud jste provedli nějaké změny, vyberte Přidat oprávnění a uložte je.
Povolení integrovaného ověřování ve federovaných doménách (volitelné)
Pokud chcete povolit integrované ověřování systému Windows při použití s federovanou doménou Microsoft Entra, musí manifest aplikace povolit další možnosti. Vraťte se do aplikace v sadě Visual Studio.
Otevřete Package.appxmanifest.
Vyberte Možnosti a povolte následující nastavení:
- Podnikové ověřování
- Privátní sítě (klient &server)
- Sdílené uživatelské certifikáty
Důležité
Integrované ověřování systému Windows není pro tuto ukázku ve výchozím nastavení nakonfigurované. Aplikace, které vyžadují Enterprise Authentication
nebo Shared User Certificates
mají možnosti, vyžadují vyšší úroveň ověřování ve Windows Storu. Ne všichni vývojáři také chtějí provést vyšší úroveň ověřování. Toto nastavení povolte jenom v případě, že potřebujete integrované ověřování systému Windows s federovanou doménou Microsoft Entra.
Alternativní přístup k používání withDefaultRedirectURI()
V aktuální ukázce se WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
použije metoda. Chcete-li použít WithDefaultRedirectURI()
, proveďte následující kroky:
V souboru MainPage.XAML.cs nahraďte
WithRedirectUri
:WithDefaultRedirectUri
Aktuální kód
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId) .WithAuthority(Authority) .WithUseCorporateNetwork(false) .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient") .WithLogging((level, message, containsPii) => { Debug.WriteLine($"MSAL: {level} {message} "); }, LogLevel.Warning, enablePiiLogging: false, enableDefaultPlatformLogging: true) .Build();
Aktualizovaný kód
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId) .WithAuthority("https://login.microsoftonline.com/common") .WithUseCorporateNetwork(false) .WithDefaultRedirectUri() .WithLogging((level, message, containsPii) => { Debug.WriteLine($"MSAL: {level} {message} "); }, LogLevel.Warning, enablePiiLogging: false, enableDefaultPlatformLogging: true) .Build();
Vyhledejte identifikátor URI zpětného volání pro vaši aplikaci tak, že do souboru MainPage.xaml.cs přidáte
redirectURI
pole a nastavíte na ni zarážku:public sealed partial class MainPage : Page { ... string redirectURI = Windows.Security.Authentication.Web.WebAuthenticationBroker .GetCurrentApplicationCallbackUri().ToString(); public MainPage() { ... } ... }
Spusťte aplikaci a zkopírujte hodnotu
redirectUri
, kdy se zarážka dosáhne. Hodnota by měla vypadat podobně jako následující hodnota:ms-app://s-1-15-2-1352796503-54529114-405753024-3540103335-3203256200-511895534-1429095407/
Řádek kódu pak můžete odebrat, protože se vyžaduje jenom jednou, abyste mohli načíst hodnotu.
V Centru pro správu Microsoft Entra přidejte vrácenou hodnotu v identifikátoru RedirectUri v podokně Ověřování.
Testování kódu
Pokud chcete aplikaci otestovat, vyberte klávesu F5 a spusťte projekt v sadě Visual Studio. Zobrazí se hlavní okno:
Až budete připraveni k testování, vyberte Volat rozhraní Microsoft Graph API. Pak se přihlaste pomocí účtu organizace Microsoft Entra nebo účtu Microsoft, například live.com nebo outlook.com. Při prvním spuštění tohoto testu zobrazí aplikace okno s výzvou, aby se uživatel přihlásil.
Souhlas
Při prvním přihlášení k aplikaci se zobrazí obrazovka souhlasu podobná následujícímu obrázku. Pokud chcete explicitně udělit souhlas s přístupem, vyberte ano :
Očekávané výsledky
Informace o profilu uživatele vrácené voláním rozhraní Microsoft Graph API se zobrazí na obrazovce Výsledky volání rozhraní API:
Zobrazí se také základní informace o tokenu získaném prostřednictvím AcquireTokenInteractive
nebo AcquireTokenSilent
v poli Informace o tokenu:
Vlastnost | Formát | Popis |
---|---|---|
Username |
user@domain.com |
Uživatelské jméno, které uživatele identifikuje. |
Token Expires |
DateTime |
Čas vypršení platnosti tokenu. Knihovna Microsoft Authentication Library prodlužuje datum vypršení platnosti obnovením tokenu podle potřeby. |
Další informace o oborech a delegovaných oprávněních
Rozhraní Microsoft Graph API vyžaduje user.read
obor pro čtení profilu uživatele. Tento obor se ve výchozím nastavení přidá do každé aplikace, která je zaregistrovaná na portálu pro registraci aplikací. Další rozhraní API pro Microsoft Graph a vlastní rozhraní API pro back-endový server můžou vyžadovat další obory. Rozhraní Microsoft Graph API například vyžaduje Calendars.Read
obor pro výpis kalendářů uživatele.
Pokud chcete získat přístup ke kalendářům uživatele v kontextu aplikace, přidejte Calendars.Read
delegovaná oprávnění k informacím o registraci aplikace. Pak do volání přidejte Calendars.Read
obor acquireTokenSilent
.
Uživatelům se může zobrazit výzva k zadání dalších souhlasů, když zvýšíte počet oborů.
Známé problémy
Problém 1
Při přihlášení k aplikaci ve federované doméně Microsoft Entra se zobrazí jedna z následujících chybových zpráv:
- V požadavku nebyl nalezen platný klientský certifikát.
- V úložišti certifikátů uživatele se nenašly žádné platné certifikáty.
- "Zkuste znovu zvolit jinou metodu ověřování."
Příčina: Možnosti podnikového a certifikátu nejsou povolené.
Řešení: Postupujte podle kroků v části Povolení integrovaného ověřování ve federovaných doménách (volitelné).
Problém 2
V federovaných doménách povolíte integrované ověřování a pokusíte se pomocí Windows Hello na počítači s Windows 10 přihlásit k prostředí s nakonfigurovaným vícefaktorovým ověřováním. Zobrazí se seznam certifikátů. Pokud se rozhodnete použít pin kód, okno PIN se nikdy nezobrazí.
Příčina: Tento problém je známým omezením zprostředkovatele webového ověřování v aplikacích UPW, které běží na stolních počítačích s Windows 10. Funguje dobře ve Windows 10 Mobile.
Alternativní řešení: Vyberte Přihlásit se s dalšími možnostmi. Pak vyberte Přihlásit se pomocí uživatelského jména a hesla. Vyberte Zadat heslo. Pak projděte proces ověřování telefonem.
Nápověda a podpora
Pokud potřebujete pomoc, chcete nahlásit problém nebo se chcete dozvědět o možnostech podpory, přečtěte si nápovědu a podporu pro vývojáře.
Další kroky
Přečtěte si další informace o používání knihovny MSAL (Microsoft Authentication Library) pro autorizaci a ověřování v aplikacích .NET: