我使用Azure AppRegistration配置为使用oauth2代码流对我的应用程序进行身份验证。.net 6 WebApi在Azure AppRegistration中,我为我的API设置了自定义范围:API://{clientId}/ApplicationName。
在startup.cs中,我已经使用AddOauth扩展配置了oauth 2的cookie身份验证。我设置了clientId、clientSecret、token endpoint和这个自定义范围。我还添加了offline_scope。
我对用户身份验证没有问题,重定向到MS授权端点,它返回并在反向通道代码中交换有效令牌。
我也有一个refresh_token。
在我的应用程序逻辑的后面,我在OBO流中使用这个访问令牌来调用外部服务。
当我在JWT.io中检查此令牌时,此访问令牌的受众与Portal Azure中公开的API相同,受众为API://{clientId}。
我想使用刷新令牌获取新的访问令牌。我找不到任何工作库,所以我向令牌端点发出简单的请求,提供所有必需的参数,grant_type,client_id,client_secret和刷新令牌。
问题是我无法获得有效的访问令牌。当我没有添加资源参数时,我得到了错误:“AADSTS 90009:应用程序“{clientId}”正在为其自身请求令牌。仅当使用基于XML的应用程序标识符指定资源时,才支持此方案。
当我以API://{clientId}格式设置资源时,我得到了相同的错误。当我将resource设置为与clientId相同时,我可以接收到一个新的令牌,但此令牌无效。
它的受众仅为{clientId},这是无效的,因为有效受众为API://{clientId}。
如何使用现有的有效的refresh_token获取新的access_token?
1条答案
按热度按时间bd1hkmkf1#
我发现我正在使用无效的令牌端点。(无版本)。当使用版本/oauth2/v2.0/token时,一切正常。