gpt4 book ai didi

asp.net-core - 您如何从 Azure Active Directory 获取脚手架 Weather Forecast Api 将接受的访问 token ?

转载 作者:行者123 更新时间:2023-12-04 03:49:42 27 4
gpt4 key购买 nike

我正在尝试构建一个使用来自 Azure 事件目录的访问 token 保护的新 WebApi。

我正在使用 .net core v3.1 和 visual studio 2019。

我使用“Asp.net 核心 Web 应用程序”模板创建了一个新项目并选择了一个“API”项目并将身份验证类型更改为“工作或学校帐户”并将 App ID Url 设置为 Api://Automation/测试接口(interface)

然后 Visual Studio 为我构建了一个带有模拟天气预报服务的 Web API,如果我注释掉 [Authorize] 属性,它会按预期在浏览器中很好地旋转。它还在 AzureActive Directory 中为我创建了一个应用程序注册。

在恢复 [Authorize] 属性后,我无法从客户端应用程序调用 API,因此我决定使用 postman 调用 API 以查看发生了什么。

我在 visual studio 创建的应用程序注册中添加了一个客户端密码,并使用应用程序(客户端)ID 和 api://Automation/TestApi/.default 作为范围将 postman 请求放在一起,如下所示。

Postman Call to token endpoint

这工作正常并返回一个访问 token ,但是当我尝试使用该访问 token 调用默认的天气预报端点时,我在 WWW-Authenticate 响应 header 中收到 HTTP 401 未经授权的错误

"Bearer error="invalid_token", error_description="受众'api://Automation/TestApi'无效"

有什么我想念的吗?我找不到任何关于观众预期的线索,也没有明显的控制方法。

根据要求,这里是公开 API 屏幕的内容

Expose an API

以及我正在使用的解码后的 jwt token

enter image description here

更新

我在下面尝试了@CarlZhao 的回答,但它并没有真正奏效。但是我记得a question I asked a while ago about the wrong issuer in the token结果是在 API 注册中手动编辑 list json 并设置“accessTokenAcceptedVersion”:2

现在我得到一个以 clientId guid 作为观众的 v2 函数

V2 JWT

但是,使用这个token还是不行!!我现在收到有关发行人的错误信息:

Bearer error="invalid_token", error_description="颁发者'https://login.microsoftonline.com/{{guid}}/v2.0'无效

最佳答案

您错过了一些重要步骤,您的访问 token 也有误,缺少必要的权限。你可以试试我的方法:

您需要创建2个应用程序,一个代表客户端应用程序,另一个代表api应用程序,然后使用客户端应用程序调用Web api应用程序。

首先需要暴露代表web api的应用的api,可以按照以下流程进行配置:

Azure 门户>应用程序注册>公开 API>添加范围>添加客户端应用程序

因为你使用的是client credential flow,接下来,你需要定义api应用的ma​​nifest,并为你的客户端应用授予应用权限(这是作用您自己定义的权限,您可以在添加权限时在我的API中找到)。然后您需要点击admin consent按钮授予管理员同意该权限。

This是定义manifest的过程。

enter image description here

这是为客户端应用程序授予权限:

enter image description here

最后,您可以为您的 api 应用程序请求 token :

enter image description here

解析 token ,你会看到:

enter image description here

关于asp.net-core - 您如何从 Azure Active Directory 获取脚手架 Weather Forecast Api 将接受的访问 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64600292/

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