如何用oauth2从微软获得token v2?

问题描述 投票:0回答:1

我正在尝试消费一个web服务。我需要获取令牌,并在授权头中发送这个令牌,我正在获取令牌,但在服务器中出现了问题,因为令牌是v1,而他们正在使用v2。

这是我用来获取代码的URL地址。

https:/login.microsoftonline.comtenantoauth2v2.0authorize?response_type=code&client_id=cliendId&redirect_uri=redirectURI&scope=openid+profile。

而这是获取token的url

https:/login.microsoftonline.comtenantoauth2v2.0token。 与授权头中第一个调用的代码。

这个调用返回了一个令牌,但是当我把这个令牌发送给我需要消费的ws时,我得到了一个错误,当问及这个错误时,他们告诉我,我发送的令牌是v1的,需要是v2的。

这是我的token ississ。"https:/sts.windows.nettenant。

但需要:iss。"https:/login.microsoftonline.comtenantv2.0

我网站上的错误是

Status=Unauthorized, StatusCode=401Bearer error="invalid_token", error_description="签名无效"

而在服务器中是。

Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler(Information): Bearer was not authenticated.JwtBearer.JwtBearerHandler(Information): Bearer was not authenticated.

你有什么办法来获得V2令牌吗。

web-services oauth-2.0 microsoft-graph
1个回答
0
投票

你需要将你的App注册设置为使用v2端点。

可以帮助你的微软文档是 此处.也就是说,要强制AzureAD向某些自定义WebApi发出V2访问令牌,需要在其清单中明确设置 accessTokenAcceptedVersion 到 2.0


0
投票

听起来你可能得到了默认的令牌(在 JWT 头中有一个 "nonce "字段),该令牌被设计成由 Graph API 使用,并且在你自己的 API 中总是无法通过验证。

Azure AD 2.0 的设置非常混乱,但我有一篇博文和一些代码可能会帮助你。请参阅博文中的步骤 3 和 7,了解两种类型的访问令牌的差异。

热门问题
推荐问题
最新问题