我正在尝试使用web服务。我需要获取令牌并在authorization头中发送此令牌,我正在获取令牌,但在服务器中有一个问题,因为令牌是v1,而他们正在使用v2。
这是我用来获取代码的url。
这是获取令牌的url。
使用authorization标头中第一个标注的代码执行https://login.microsoftonline.com/tenant/oauth2/v2.0/token。
这个调用返回一个令牌,但是当我将令牌发送到我需要使用的ws时,我得到了一个错误,当被问及错误时,他们告诉我,我发送的令牌是v1,is需要是v2。
这是我的令牌iss:"https://sts.windows.net/tenant/
但需要是: iss:"https://login.microsoftonline.com/tenant/v2.0
我的网站上的错误是:
Status=Unauthorized,StatusCode=401承载error="invalid_token",error_description=“签名无效”
在服务器中是:
未对Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler(Information):载体进行身份验证。
你有没有办法获得v2令牌。
发布于 2020-06-09 02:05:53
你需要将你的应用注册设置为使用v2终结点。
可以为您提供帮助微软文档是here.i.e。强制AzureAD向某些自定义WebApi颁发V2访问令牌是在其清单accessTokenAcceptedVersion中将其显式设置为2.0
发布于 2020-06-11 03:53:42
听起来你可能得到了默认的令牌(在JWT头中有一个'nonce‘字段),它被设计为供Graph API使用,并且在你自己的API中总是无法通过验证。
Azure AD 2.0设置非常令人困惑,但我有一篇博客文章和一些代码可以帮助你。请参阅博客文章的步骤3和7,以了解这两种类型的访问令牌的差异:
https://stackoverflow.com/questions/62267206
复制相似问题