gpt4 book ai didi

azure - 使用服务主体的 oAuth token 进行身份验证会产生 "the audience is invalid"错误

转载 作者:行者123 更新时间:2023-12-03 02:19:45 25 4
gpt4 key购买 nike

我正在使用另一个开发人员设置的服务主体进行身份验证。我正在尝试针对内部开发的 API 进行身份验证。当其他开发人员使用 SDK 进行身份验证时,ASP 正在工作。但是当我尝试使用 Postman 时,我收到了带有此错误的 401。

enter image description here

问题是我真的不知道该使用哪个资源。我相信客户端 ID、密码和范围是正确的。但我似乎找不到有关要使用的资源类型的任何信息。对于内部开发的 API 有什么方法可以确定这一点吗?我已经使用了大量的公开可用的。就像测试一样,我找不到任何信息。并且将其留空是行不通的。

enter image description here

最佳答案

假设您在 azure ad 应用程序注册中创建了两个应用程序,一个代表客户端应用程序,另一个代表 api 应用程序(或者在应用程序注册中您必须选择所需的客户端应用程序),然后您必须使用客户端应用程序调用Web api应用程序。注意:当您调用 Web API 时,请确保您发送的是访问 token (而不是 Id token )

  1. 您跟踪在 jwt.io 中获得的 token 。Azure AD 受众必须符合“aud”声明。Audience 必须等于为应用程序设置的 AppId 或客户端 ID。检查 jwt.io 中 token 的 iss 值并查看登录 url 的版本。如果是 v2,则将 API 的应用程序注册中的 list json 设置为 2,因为默认情况下可能是 2。“accessTokenAcceptedVersion”:2
  2. 在应用注册时,如果您公开的 api 类似于: api://xxxx-xxx-xxx ,则您应用的 appsettings.json 中的客户端 ID 必须相同。

Note:Client id may be configured differently according to application.If above doesn't work try client ID : instead of api://

  • 您可能需要向您的客户端应用程序授予应用程序权限(这是您自己定义的角色权限,您可以在添加权限时在我的API中找到它)。然后您需要点击管理员同意按钮,用于授予管理员对此权限的同意。
  • enter image description here

    enter image description here

    enter image description here

    enter image description here

    这里我公开了范围>> api://xxx-xxx-xxx/access_as_user。确保使用应用程序配置中包含的与门户中配置的范围相同的范围。范围也应在代码中包含公开资源的标识符(应用程序 ID URI)。这里例如:范围:“api://xxxx-xxx-xxxx/access_as_user”

    在 postman 中设置授权 header 以引用全局变量“Bearer {{bearerToken}}”并将授权数据添加到请求 header 中,如果您使用 postman 回调 uri ,请在 postman 配置中取消选中使用浏览器授权回调url。(参见 enable-azure-ad-authentication| csharpcorner )

    关于azure - 使用服务主体的 oAuth token 进行身份验证会产生 "the audience is invalid"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69562450/

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