繁体   English   中英

Keycloak Action Tokens:当用户请求多个(例如重置密码)时如何使用户之前的操作无效

[英]Keycloak Action Tokens: How to invalidate user's previous action when they request multiple (e.g. Reset Password)

我希望能够使身份验证流程中用户的任何操作令牌无效。

该场景是用户发送重置密码并收到带有关联操作令牌的 email。 然后,用户发送另一个重置密码并获得另一个 email,其中关联了不同的操作令牌。 对于第一个操作令牌到期时间的长度,用户可以使用两封电子邮件中的链接 - 但是我希望能够在我的自定义重置密码身份验证流程中识别用户正在请求重复的操作请求并使他们之前的无效操作令牌,以便只有他们最新的重置密码链接有效。

我一直在查看以下对象,但没有找到与所有用户活动关联的操作令牌存储,而不仅仅是他们当前经过身份验证的 session。

AuthenticationFlowContext context;

            List<UserSessionModel> sessions = context.getSession().sessions().getUserSessions(context.getRealm(), user);

            RootAuthenticationSessionModel parentSessions = context.getAuthenticationSession().getParentSession();

            ActionTokenStoreProvider actionTokenStore = session.getProvider(ActionTokenStoreProvider.class);

提前致谢。

我通过为每个流维护一个用户表和操作令牌来解决这个问题。 这意味着当用户启动一个新的操作流程时,我可以获取之前的令牌(如果仍然有效)并使用 ActionTokenStoreProvider 使其无效并用新令牌替换它。 我仍然希望 keycloak 有一些内部机制来管理这个而不是我自己的自定义代码。 如果您知道这一点,请放弃解决方案!

暂无
暂无

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

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