0

我正在将 Wildfly22 与 java EJB 客户端一起使用,并成功地让客户端使用具有单独域和 jdbc-realm 的 elytron 登录。

但是,我目前不得不在数据库中使用普通密码,这显然不利于生产。

我尝试使用 base64 和 md5 对它们进行哈希处理,并使用简单的摘要映射器:

jdbc-realm name="jdbcRealm">
                    <principal-query sql="SELECT passwd FROM users where username = ?" data-source="TechDS">
                        <simple-digest-mapper password-index="1"/>
                    </principal-query>
                    <principal-query sql="SELECT role FROM userroles WHERE username = ?" data-source="TechDS">
                        <attribute-mapping>
                            <attribute to="roles" index="1"/>
                        </attribute-mapping>
                    </principal-query>

但是现在我得到了 ELY05051:回调处理程序不支持凭证获取。

我认为这里更大的问题是我对客户端演示代码之间的关系缺乏了解:

 final RemoteCalculator statelessRemoteCalculator = lookupRemoteStatelessCalculator();
        
        
        AuthenticationContext.empty().with(
                MatchRule.ALL.matchHost("localhost").matchPort(8080),
                AuthenticationConfiguration.empty()
                    .useRealm("jdbcRealm")  
                    .setSaslMechanismSelector(SaslMechanismSelector.NONE.addMechanism("DIGEST-MD5"))              .useName("failquick")
                    .usePassword("mypassword")
            ).run(() -> {
                try {
                    
                    ...
                    
                } catch (Exception e) {
                    e.printStackTrace();
                    return;
                }
            });

以及数据库中的密码存储格式。重申一下,当我使用 clear-password-mapper 时,一切正常。

对此的任何帮助表示赞赏。

4

0 回答 0