我们需要从与Azure AD B2C集成的设备注销用户。
应用程序正在使用具有自定义策略的Azure AD B2C,在此组合中似乎存在吊销刷新令牌的问题。(我们使用的是授权码流)
我们已经尝试通过在用户上使用"Revoke session“以及使用Graph API的invalidateAllRefreshTokens来撤销访问权限,但是用户仍然登录,并且可以检索访问权限并刷新令牌。
我们是否需要在自定义策略中实现吊销逻辑,或者这是AD B2C中的错误吗?我们的自定义策略实施基于AD B2C文档中的示例。
发布于 2021-03-23 08:41:32
谢谢@Jason:
撤销与Azure AD B2C相关的会话的Graph API命令不会使B2C用户会话cookie无效。它只将refreshTokenLastValidFrom时间戳设置为当前时间。
参考资料:- https://docs.microsoft.com/en-us/graph/api/user-revokesigninsessions?view=graph-rest-1.0&tabs=http
当使用具有PKCE流的SPA应用程序、.Net应用程序时,用户访问令牌过期将确定随后何时使用刷新令牌。如果由于调用/revoke端点而导致此交换失败,则会要求用户重新登录。
当用户被要求再次登录时,Azure AD B2C web会话单点登录cookie可能会提供单点登录,如果存在且有效,如您所注意到的。否则,将要求用户重新进行身份验证。在这种情况下(当刷新令牌调用失败时),您可以通过将'prompt=login‘作为loginRedirect()方法的一部分传递来清除cookies,从而稍微强制执行此行为。
您还可以缩短web会话单点登录生命周期,以便cookie在较短的时间内有效,从而在一定程度上减轻用户在调用/revoke端点后仍可以访问而无需重新身份验证的时间。
请注意,SPA PKCE流中的刷新令牌仅在24小时内有效,缩短web会话SSO生存期也会影响未针对其调用/revoke端点的用户。例如,如果用户访问另一个应用程序,由于cookie生存期较短,他们可能无法获得SSO。
如果您需要更多信息,请告诉我们。
https://stackoverflow.com/questions/66704643
复制相似问题