gpt4 book ai didi

c# - 使用带有客户端 key 的 Azure AD 通过 asp.net core 后端对 native 应用程序进行身份验证

转载 作者:行者123 更新时间:2023-11-30 12:40:20 27 4
gpt4 key购买 nike

我目前正在开发一个 Kiosk 终端,我需要在该终端中向使用 Azure AD 的 asp.net core 构建的 REST API 授予 UWP 应用的访问权限。由于没有用户,因为它是一个信息亭设置,因此我创建了一个 Azure AD 应用程序注册(Web 应用程序),并创建了一个用作客户端 key 的 key 。

我设法使用 POST 请求来获取承载访问 token https://login.microsoftonline.com/{myTenant}/oauth2/token 并提供 ClientIdClientSecret 和所需的资源(=我的应用程序注册的 AppId)。

在我的 asp.net core 应用程序中,我确实启用了 JWTBearerAuthentication,如下所示:

app.UseJwtBearerAuthentication(new JwtBearerOptions
{
Authority = Configuration["ClientAuthentication:AADInstance"] + Configuration["ClientAuthentication:TenantId"],
Audience = Configuration["ClientAuthentication:Audience"]
});

我在 API Controller 中使用 Authorize 属性。

在这个设置中我总是得到一个

401 unauthorized

使用 Authorization header 中的 Bearer token 调用此 API 时。

有什么想法吗?

最佳答案

代码示例仅用于检查代码问题,因为我无法重现此问题。

这是我的尝试:

  1. 从 Azure 经典门户注册应用

  2. 使用客户端凭据流程获取 token ,如下所示:

//7f39bae4-f852-41ae-8a7b-54d022cf65bd is the client_id of app
POST:https://login.microsoftonline.com/{tenantId}/oauth2/token
grant_type=client_credentials&client_id=7f39bae4-f852-41ae-8a7b-54d022cf65bd&client_secret={clientSecret}&resource=7f39bae4-f852-41ae-8a7b-54d022cf65bd
  • here 克隆代码示例
  • Startup 类修改为您提供的代码
  •  app.UseJwtBearerAuthentication(new JwtBearerOptions {
    Authority = String.Format(Configuration["AzureAd:AadInstance"], Configuration["AzureAD:Tenant"]),
    Audience = "7f39bae4-f852-41ae-8a7b-54d022cf65bd"
    });
  • 运行ToDoListService项目
  • TodoListControllerGet方法设置断点
  • 使用 Fiddler 发送请求,如下所示
  • GET:https://localhost:44321/api/TodoList
    Authorization: bearer {accessToken}

    这个断点对我来说打得很好。请确保受众群体是您应用的客户端 ID。如果问题仍然存在,建议您按照上述步骤检查是否有帮助。

    关于c# - 使用带有客户端 key 的 Azure AD 通过 asp.net core 后端对 native 应用程序进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42157090/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com