如何授权服务使用 Azure Active Directory 调用 API?



我有一个从 Azure AD 获取访问令牌的服务。 我有一个 API,我想接受该令牌作为授权。

我调用 API 的服务代码是

HttpClient client = new HttpClient()
{
BaseAddress = new Uri("https://localhost:44372/")
};
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, client.BaseAddress + "api/todolist");
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
HttpResponseMessage response = await client.SendAsync(request);

我得到的回复是401 - Unauthorized.

我有一种感觉,问题出在 APIConfigureServices函数中;具体来说(这是取自一个例子,所以我真的还不知道它是什么意思(:

services.Configure<JwtBearerOptions>(AzureADDefaults.JwtBearerAuthenticationScheme, options =>
{
options.TokenValidationParameters.RoleClaimType = "roles";
});    

我是 Azure 和身份验证的新手,所以我不知道哪些选项可用或合适。我也不确定如何在 Azure 中设置应用程序以允许这样做。我已将服务的应用程序 ID 设置为API 的授权客户端应用程序;它还列在 API 清单中的已知客户端应用程序中。

有这么多旋钮要转动,我不知道从这里开始。如果有人能让我知道一些要尝试的事情,那就太出色了。

谢谢

下面是有关如何使用 Azure AD 在 ASP.NET 核心 Web 应用中调用 Web API 的代码示例:

https://learn.microsoft.com/en-us/samples/azure-samples/active-directory-dotnet-webapp-webapi-openidconnect-aspnetcore/calling-a-web-api-in-an-aspnet-core-web-application-using-azure-ad/

此示例包含在受 Azure AD 保护 ASP.NET 核心 2.0 上运行的 Web API。Web API 由 ASP.NET Core 2.0 Web 应用程序代表登录用户访问。ASP.NET Web 应用程序使用 OpenID Connect 中间件和 Active Directory 身份验证库 (ADAL.NET( 为 OAuth 2.0 协议的登录用户获取 JWT 持有者令牌。持有者令牌将传递给 Web API,Web API 验证令牌并使用 JWT 持有者身份验证中间件授权用户。

相关内容

最新更新