【问题标题】:AD auth group changes not reflactingAD 身份验证组更改未反映
【发布时间】:2017-11-11 01:07:48
【问题描述】:

我正在使用带有 OIDCStrategy 的 node js passport-azure-ad。

当我从组中删除一个用户时,它并没有引用我的代码

req.user._json.groups[0]

返回所有组,包括已删除的组。

但是当我尝试重新启动时,我的节点 js 服务器组被删除了。

如何在不重新启动节点 js 服务器的情况下强制更新组?这是由于令牌缓存吗?我如何在护照天蓝色广告中刷新令牌。

我试图搜索如何在 passport-azure-ad 中刷新令牌,但没有找到与此相关的内容。

【问题讨论】:

  • 不知道如何刷新令牌,但这绝对与它有关 :) 由于组 ID 在访问令牌中(假设您在应用程序清单中设置了 groupMembershipClaims),它们将在令牌缓存中,直到刷新令牌。不过,通常访问令牌仅持续 1 小时。如果护照(或其他组件)使用刷新令牌来获取新令牌,则这些组不应该存在。如果这些组在令牌过期之前一直留在那里,这是一个大问题吗?
  • 是的,这是个大问题。我的整个仪表板取决于组访问和广告授权。如果我从组中删除用户,则用户无法访问该组的仪表板。
  • 这是 JSON Web 令牌的普遍问题。因为即使在令牌过期之前完全删除用户,令牌也将是“有效的”。我能想到的一种解决方案是将令牌的到期时间设置为更短的持续时间。你可以在这里找到信息:docs.microsoft.com/en-us/azure/active-directory/….

标签: node.js azure azure-authentication passport-azure-ad


【解决方案1】:

在您的场景中检查访问令牌中的声明将不可靠。相反,您可以调用 graph api 来检查用户是否在组内。您可以使用 microsoft graph api 来获取用户是直接成员的组:

POST https://graph.microsoft.com/beta/me/getMemberGroups
Content-type: application/json
Content-length: 33

{
  "securityEnabledOnly": true
}

或者您可以使用 azure ad graph api:在目录服务上调用 isMemberOf function 以检查指定的用户、组、联系人或服务主体是否是指定组的成员。

【讨论】:

    猜你喜欢
    • 2018-09-13
    • 2013-09-25
    • 1970-01-01
    • 2016-04-26
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    相关资源
    最近更新 更多