gpt4 book ai didi

.net - 使用客户端凭据的 Azure AD .NET 6 中的 token 无效

转载 作者:行者123 更新时间:2023-12-02 06:35:50 30 4
gpt4 key购买 nike

我有一个 .NET 6 API,我尝试使用客户端凭据从 Azure 中使用 token 进行访问,但在通过 API 调用传递 token 时收到错误:

error="invalid_token",但没有描述。

这看起来非常类似于:

.NET 6 Problem: Bearer error="invalid_token"
Invalid JWT bearer token on .net 6.0 web api

但是,添加上述软件包并没有解决问题。所有 NuGet 包都是最新的。

查看 Kestrel 中的日志,似乎没有任何真正的错误:

info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
Microsoft.IdentityModel Version: 6.25.1.0.....
IDX10242: Security token: *** has a valid signature.
info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10239: Lifetime of the token is valid.
info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10234: Audience Validated.Audience: '*'
info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10245: Creating claims identity from the validated token: '***'.
info: Microsoft.IdentityModel.LoggingExtensions.IdentityLoggerAdapter[0]
IDX10241: Security token validated. token: '*'.

重要提示:如果我将 token 请求从“客户端凭据”更改为“授权代码”,它会完美运行并且 token 会被接受(在我使用指定用户帐户登录后)。我已经三次检查了客户端 ID 和密码,它们是正确的。

对于 token 请求中的范围名称,我使用应用程序的 URL,并以/.default 作为后缀。

在 Azure 方面,我有两个应用程序注册:一个用于 API,一个用于客户端。在 API 应用程序注册中,我将具有适用范围的客户端客户端 ID 添加到“公开和 API”部分内的“授权客户端应用程序”部分。

我使用 Postman 和 Swagger 作为前端客户端时收到相同的错误。

不确定这里还要查找什么,或者问题到底出在哪里(代码与 Azure 设置)。

如有任何建议,我们将不胜感激。

提前致谢。

最佳答案

问题出在 MS Azure 的配置中。我需要在 API 应用程序注册中添加应用程序角色,并授予组织新角色的同意。从那里,我在客户端应用程序注册的 API 权限部分添加了该角色,并再次授予同意。几分钟后一切都按预期进行。

关于.net - 使用客户端凭据的 Azure AD .NET 6 中的 token 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74902043/

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