你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
用于 .NET 的 Azure Active Directory 库
概述
使用 Azure Active Directory (Azure AD) 将用户登录并访问受保护的 Web API。
若要开始使用 Azure Active Directory 开发应用程序,请参阅 Microsoft 标识平台。
客户端库
结合使用 OpenID Connect 和 OAuth 2.0 与适用于 .NET 的 Microsoft 身份验证库 (MSAL.NET),提供对受 Azure AD 保护的 Web API 的范围限定访问。
直接从 Visual Studio 包管理器控制台或使用 .NET Core CLI 安装 NuGet 包。
Visual Studio 包管理器
Install-Package Microsoft.Identity.Client
.NET Core CLI
dotnet add package Microsoft.Identity.Client
代码示例
在桌面应用程序(公共客户端)中检索 Microsoft Graph API 的访问令牌。
/* Include this using directive:
using Microsoft.Identity.Client;
*/
string ClientId = "11111111-1111-1111-1111-111111111111"; // Application (client) ID
string Tenant = "common";
string Instance = "https://login.microsoftonline.com/";
string graphAPIEndpoint = "https://graph.microsoft.com/v1.0/me";
string[] scopes = new string[] { "user.read" };
AuthenticationResult authResult = null;
var app = PublicClientApplicationBuilder.Create(ClientId)
.WithAuthority($"{Instance}{Tenant}")
.WithRedirectUri("http://localhost")
.Build();
var accounts = await app.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
try
{
// Always first try to acquire a token silently.
authResult = await app.AcquireTokenSilent(scopes, firstAccount)
.ExecuteAsync();
}
catch (MsalUiRequiredException ex)
{
// If an MsalUiRequiredException occurred when AcquireTokenSilent was called,
// it indicates you need to call AcquireTokenInteractive to acquire a token.
System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");
try
{
authResult = await app.AcquireTokenInteractive(scopes)
.WithAccount(firstAccount)
.WithPrompt(Prompt.SelectAccount)
.ExecuteAsync();
}
catch (MsalException msalex)
{
System.Diagnostics.Debug.WriteLine($"Error acquiring Token:{System.Environment.NewLine}{msalex}");
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"Error acquiring token silently:{System.Environment.NewLine}{ex}");
return;
}
if (authResult != null)
{
System.Diagnostics.Debug.WriteLine($"Access token:{System.Environment.NewLine}{authResult.AccessToken}");
}
示例
浏览 Microsoft 标识平台代码示例的完整集合。