邮递员获得有效令牌,但从API获得401

时间:2019-09-17 16:22:45

标签: .net azure-active-directory msal

我正在尝试使用Postman测试我的ASP.NET Core 2.2 Web API。我的API受Azure AD保护。我一直在使用“ Web应用程序API” Microsoft Azure Sample on GitHub,并仔细检查了所有步骤。

使用邮递员,我要求它使用OAuth2隐式流程获取令牌,但确实获得了返回的令牌。如果我对令牌进行解码,它似乎包含了我想要的所有声明:ol.nicelist li, ul.nicelist li { position: relative; display: block; padding: .4em .4em .4em 2em; margin: .6em 0; background: #EFEFEF; text-decoration: none; border-radius: .3em; font-size: 0.94em; } audupn都是有意义的。

但是,当我随后使用返回的令牌向API发送请求时,我仍然收到401。

该API之所以有效,是因为如果删除scp属性,我将获得返回的数据。

如果我尝试通过Web客户端访问API,则会收到错误消息:[Authorize],但是鉴于令牌中返回了我的MsalUiRequiredException: No account or login hint was passed to the AcquireTokenSilent call.,这毫无意义。

任何人都可以建议采取进一步措施以找出问题所在。

更新

line 381 of TokenAcquisition.csupnaccount,因此,随后调用null时,结果是AcquireTokenSilent()

1 个答案:

答案 0 :(得分:0)

我放弃了Postman一段时间,并专注于Web客户端。我必须在Azure门户中将Application ID URIhttps://<company>.onmircrosoft.com/<myapi>/user_impersonation重命名为api://<application_guid>/access_as_user,并在应用程序代码中重命名。这使TokenAcquisition.cs开始返回令牌,并且让Web应用程序与API通讯。

我仍然没有邮递员在工作,尽管现在它返回一条消息:invalid_client。可能因为我需要使用其他流程。无论如何,我现在很开心。