获取访问令牌时的Azure AD错误&登录

时间:2017-06-22 06:35:47

标签: javascript reactjs azure authentication azure-active-directory

当我尝试获取其中一个API的访问密钥时,我收到了错误消息。 " AADSTS65001:用户或管理员未同意使用带有ID' {GUID}'

的应用程序

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

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

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

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

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

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

    更新 终于搞定了一些东西。不是所有的方式,但至少它是一个开始。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

E.g:

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

答案 1 :(得分:0)

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

  1. 确保所有权限都正确(将API作为委派权限添加到客户端)
  2. 所有服务(网络应用和apis)都是多租户
  3. 使用以下内容更新清单:
  4.   "availableToOtherTenants": true,
      "knownClientApplications": [
        "{client app application id}"
      ],
    (即使在设置中将其标记为多租户,API的availableToOtherTenants也为false)

相关问题