And*_*ole 5 authentication token single-sign-on keycloak
我希望能够使身份验证流程中用户的任何操作令牌无效。
该场景是用户发送重置密码并收到带有关联操作令牌的电子邮件。然后,用户发送另一个重置密码并收到另一封带有不同操作令牌的电子邮件。对于第一个操作令牌到期时间的长度,用户可以利用两封电子邮件中的链接 - 但是我希望能够在我的自定义重置密码身份验证流程中识别出用户正在请求重复的操作请求并使他们之前的操作无效操作令牌,以便只有最新的重置密码链接才有效。
我一直在查看以下对象,但没有找到与所有用户活动关联的操作令牌存储,而不仅仅是与当前经过身份验证的会话关联。
AuthenticationFlowContext context;
List<UserSessionModel> sessions = context.getSession().sessions().getUserSessions(context.getRealm(), user);
RootAuthenticationSessionModel parentSessions = context.getAuthenticationSession().getParentSession();
ActionTokenStoreProvider actionTokenStore = session.getProvider(ActionTokenStoreProvider.class);
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我通过维护每个流程的用户和操作令牌表解决了这个问题。这意味着当用户启动新的操作流时,我可以获取之前的令牌(如果仍然有效),并使用 ActionTokenStoreProvider 使其无效,并将其替换为新令牌。我仍然希望 keycloak 有一些内部机制来管理这个而不是我自己的自定义代码。如果您知道这一点,请提供解决方案!
| 归档时间: |
|
| 查看次数: |
1392 次 |
| 最近记录: |