【发布时间】:2020-01-13 20:44:17
【问题描述】:
我在 Wildfly 10 / JBoss EAP 7.0.8 上运行 JEE 应用程序,其中用户通过 JAAS 登录模块进行身份验证。我的安全域定义如下:
<security-domain name="webapp" cache-type="default">
<authentication>
<login-module code="org.sso.keycloak.KeycloakLoginModule" flag="optional" module="deployment.ear">
<module-option name="keycloak-config-file" value="${keycloak.config}"/>
</login-module>
<login-module code="security.jboss.ServerLoginModule" flag="requisite" module="deployment.ear">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="unauthenticatedIdentity" value="nobody"/>
</login-module>
</authentication>
</security-domain>
然后我的登录模块计算给定用户的角色并通过作为 LoginModule 一部分的 getRoleSets() 方法返回它。
身份验证过程正常运行,但是我现在有一个要求,即我需要在经过身份验证的用户完成身份验证后更改他们的角色。
如果我尝试为已通过身份验证的用户再次调用 request.login(),则会引发用户已登录的异常。
从请求对象中检索委托人不会让我访问他的角色或组。我也找不到从 SecurityContext 中检索信息的方法。
如何为已通过身份验证的用户修改/添加角色?
【问题讨论】: