当前位置: 首页 > 知识库问答 >
问题:

安全域的Wildfly刷新缓存

公羊俭
2023-03-14

Im有一个war项目,在wildfly上部署了JAX-RS接口,并配置了一个安全域,从db加载用户密码和角色。安全域使用缓存类型=默认值。安全域无法识别经过身份验证的用户的更新,因为旧数据会被缓存。我用jboss cli验证了这一点。sh.那么如何从缓存中删除特定用户呢?我希望在部署的应用程序中执行此操作,而不是通过jboss cli。嘘。

共有3个答案

燕成双
2023-03-14

如果从安全域中删除属性“缓存类型=默认”,将不会使用缓存。请参阅这里:https://docs.jboss.org/author/display/WFLY8/Security子系统配置

郤望
2023-03-14

在使用域模式的Wildfly 10中,您可以通过以下方式使用jboss cli轻松清除安全域的缓存:

首先使用连接到域控制器

./jboss-cli.sh --connect controller={domainhost}:9990 --user={username} --password={password}

然后执行命令

/host={hostname}/server={instancename}/subsystem=security/security-domain={securityname}:flush-cache

如果安全域的定义如下:

<security-domain name="ldap-test" cache-type="default">

命令将如下所示:

/host=wf-server-1/server=instance-1/subsystem=security/security-domain=ldap-test:flush-cache

类似的解决方案应该适用于独立模式。

施季
2023-03-14

您的问题可能与WildFly中的一个bug有关:https://issues.jboss.org/browse/WFLY-3221.

有一种方法可以显式刷新身份验证缓存:

@WebListener
public class SessionInvalidationListener implements HttpSessionListener {

    @Inject
    private Principal principal;

    @Resource(name = "java:jboss/jaas/mydomain/authenticationMgr")
    private CacheableManager<?, Principal> authenticationManager;

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        // not used
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        authenticationManager.flushCache(principal);
    }
}

我在一个稍微不同的用例中测试了这种方法。有趣的一点是访问authenticationManager——这应该很容易适应您的情况。

这个错误应该在WildFly 9中修复。x(我没有检查)。

 类似资料:
  • WildFly中安全域和安全域的主要区别是什么? 独立的。xml 和

  • 在这里,我已经设置了默认的安全域 以下是我在web.xml中的配置: 以下是AIS.Properties中的配置: UserBean登录功能: 它给了我以下例外:

  • 我正在将一个JBoss5.1.0应用程序迁移到Wildfly8.1.0。在我的中,我有以下元素: 但是,schma不支持该元素,导致:

  • 运行Wildfly16,我在应用程序的WEB-INF/jboss-web.xml中指定一个安全域,如下所示: 在Wildfly的standalone.xml中,我将该安全域指定为应用程序安全域,如下所示: 当然,随后还定义了OAuth2Realm,并且Wildfly毫无怨言地启动。但是,当通过http访问应用程序时,Wildfly总是在legacy security部分使用安全域“Other”,而

  • 直到现在(遗留),身份验证工作所需的全部工作就是在subsystems->Security中创建一个具有正确名称的安全域(“referencesapplicationdomain”)。 我的web.xml: 我的jboss-web.xml: 我遵循Wildfly Elytron文档使用JBoss-CLI创建了安全域和http工厂。 当我签入jboss-cli时,我看到安全域已经创建。 然而,当我尝

  • 我有一个http-connector级别的安全领域(ApplicationRealm ),还有一个用于远程出站连接的安全领域,名为MyRealm。当我设置jboss-ejb-client属性时,我设置了以下两个属性: remote.connection.default.username=${用户名} remote.connection.default.password=${密码} 这有助于我向远程