刷新 Token 获取新的 Access Token
如果您在 Web 应用程序中使用授权码授权之类的授权,则一种方法可能是使用 aRefresh Token
来获取新的授权。Access Token
您可以在此处阅读有关它的更多信息 -刷新访问令牌
您的应用程序将需要决定何时获取新的访问令牌。因此,当它知道后端组件/管理员已更新组成员身份时,它可以这样做。
现在,您没有过多提及的另一个主题是,您的 Web 应用程序将如何在用户已经登录的情况下了解此类事件,但像 SingalR 通知之类的东西可能会有所帮助。
注意事项:
替代方法(而不是像您提到的那样尝试使用新信息强制刷新令牌)
如果groups
声明是您所追求的,那么请使用它Microsoft Graph API
来获取有关用户所属安全组的信息,而不仅仅是查看访问令牌。
根据您的示例,您的应用程序代码可以随时再次调用 Microsoft Graph API 以获取新的成员资格详细信息,即组 1 和组 2(当它知道组成员资格已由后端组件/管理员更新时)。SignalR 或其他通知您的应用此类更改的方式在这里也很重要。
相关的 Microsoft Graph API
优点
您可以解决用户属于多个组的任何超额情况,因此访问令牌不会以任何方式为您提供所需的所有组信息。
您无需强制注销并再次为用户重新登录,即可获取包含新信息的访问令牌。
groups
访问令牌中声明的超额场景详细信息
目前,您可能已经编辑了应用程序的清单并将"groupMembershipClaims"
属性设置为"All"
or"SecurityGroup"
以便访问令牌获得groups
用户所属的所有组 ID 的声明
为确保令牌大小不超过 HTTP 标头大小限制,Azure AD 限制它包含在组声明中的 objectId 的数量。如果用户是超过超额限制(SAML 令牌为 150,JWT 令牌为 200)的组的成员,则 Azure AD 不会在令牌中发出组声明。相反,它在令牌中包含一个超额声明,指示应用程序查询 Graph API 以检索用户的组成员资格。