我有一个. NET 6 API,我尝试使用Azure中的令牌(使用客户端凭据)访问该API,但在通过API调用传入令牌时收到错误:
错误="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: '*'.
重要提示:如果我将令牌请求从"客户端凭据"更改为"授权码",它将正常工作,令牌将被接受(在我使用命名用户帐户登录后)。我已经三次检查了客户端ID和密码,它们是正确的。
对于令牌请求中作用域的名称,我使用应用程序的URL,后缀为/. default。
在Azure端,我有两个应用程序注册:在API应用程序注册时,我将客户端的客户端ID和适用的范围添加到"Expose and API"部分中的"Authorized Client Applications"部分。
我收到同样的错误都使用 Postman 和斯瓦格作为前端客户端。
不确定这里还需要查找什么,或者问题到底出在哪里(代码vs. Azure设置)。
如有任何建议,我们将不胜感激。
先谢了。
1条答案
按热度按时间j8yoct9x1#
如果您使用AddJwtBearer保护您的API,则可以启用此标志:
如果您启用它,那么您将获得一个响应头,其中包含有关令牌未被接受的原因的更多详细信息,例如: