繁体   English   中英

获取访问令牌和登录时出现Azure AD错误

[英]Azure AD error when fetching access token & login

当我试图获取其中一个API的访问密钥时,我收到了错误。 “AADSTS65001:用户或管理员未同意使用ID为”{GUID}“的应用程序

我首先尝试在登录期间提示=同意,认为我在登录期间没有提示新的同意。 我收到以下错误。 “AADSTS65005:应用程序'{GUID}'要求访问已删除或不再可用资源的权限。请与应用程序供应商联系。” 我删除了prompt = consent并开始摆弄Azure中的权限,现在我遇到了同样的错误。

我改变了一切,但我仍然得到错误,但这只发生在我的用户身上。 其他人仍然可以毫无问题地登录。

所以我的问题实际上分为两部分:

  1. 尝试获取API的访问令牌时的第一个错误。 不知何故,我需要提示用户同意,但我使用的是adal.js,它使用隐形的iframe静态检索键。 我想在用户登录Web应用程序时同意。 这可能吗?

  2. 我的用户无法再登录我们的网络应用程序了。 其他人都可以,之前有人遇到过这个吗?

该产品是使用React编写的SPA Web应用程序,我们使用adal.js(adal-vanilla)作为对azure广告进行身份验证的库。

更新最后得到了一些工作。 不是所有的方式,但至少它是一个开始。

  1. 问题是在其他租户(这是一个多租户应用程序)上注册的用户未获得使用API​​的同意。 这些用户收到错误。 但是,我在同一个租户上注册了一个用户,一切都按预期工作。
  2. 通过删除所有权限并逐个添加它们并在中间进行测试来解决问题二。 不知何故,这在两次三次尝试之后起作用。

现在的问题是来自其他租户的用户未获得访问API的同意。

可以使用prompt = admin_consent修复同意。

至于第二个问题,您可以将Web应用程序添加为API的已知客户端应用程序 当用户对Web应用程序进行身份验证时,这将允许同时同意。

为此,请在Azure Portal的Azure AD刀片中找到API应用程序注册。 然后打开它的清单(应用刀片上有一个Manifest按钮)。 应该有一个“knownClientApplications”属性。 在阵列中添加Web应用程序的客户端ID并保存清单。

例如:

"knownClientApplications": [
  "bda6ffff-ffff-ffff-ffff-ffff8bf8c57f"
],

不知怎的,问题得到解决,我不是百分之百确定如何或为什么但是这里是我执行的步骤,如果有人发现自己处于类似情况:

  1. 确保所有权限都正确(API作为委派权限添加到客户端)
  2. 所有服务(网络应用程序和apis)都是多租户
  3. 更新清单:

  "availableToOtherTenants": true, "knownClientApplications": [ "{client app application id}" ], 
(尽管API在设置中被标记为多租户,但API的availableToOtherTenants为false)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM