如何将 PicketBox 自定义登录模块迁移到 Elytron?
Posted
技术标签:
【中文标题】如何将 PicketBox 自定义登录模块迁移到 Elytron?【英文标题】:How to migrate PicketBox custom login module to Elytron? 【发布时间】:2021-10-02 07:14:25 【问题描述】:我有一个部署在 Wildfly 上的应用程序,在独立版本中有这个条目:
<subsystem xmlns="urn:jboss:domain:security:2.0">
<security-domains>
<security-domain name="customLoginModule" cache-type="default">
<authentication>
<login-module code="com.mypackage.MyLoginModule flag="required"/>
</authentication>
</security-domain>
...
还有这个类:
public class MyLoginModule extends UsernamePasswordLoginModule
public static void authenticateUser(HttpServletRequest request, String principalName)
try
request.login(principalName, "PasswordKey");
catch (ServletException ex)
throw new RuntimeException("...");
public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState, Map<String, ?> options)
super.iniitalize(subject, callbackHandler, sharedState, options);
private static Group[] createUserGroup()
SimpleGroup group = new SimpleGroup("Roles");
group.addMember(new SimplePrincipal("MyUser"));
return new Group[]group;
@Override
protected String getUsersPassword()
return "PasswordKey";
@Override
protected boolean validatePassword(String input, String expected)
return input.equals(expected);
@Override
protected Group[] getRoleSets()
return createUserGroup();
在我们的登录 servlet 中,调用了静态方法 authenticateUser()。
我不明白这门课的意义何在,以及安全性是如何工作的。需要删除提供 UsernamePasswordLoginModule 的 PicketBox 依赖项,因为它使用了这个已弃用的 Group 类。如何修改standalone.xml 中的上述逻辑和安全域以使用Elyton 安全性?我读了这个migration guide,但我无法理解它如何应用于我的案例。请帮忙,提前谢谢
【问题讨论】:
我不是专家,但也许这会有所帮助mastertheboss.com/jbossas/jboss-security/… 【参考方案1】:该登录模块似乎将密码硬编码为 PasswordKey。
但是,如果您希望将其转换为 Elytron,自定义领域应该以与您的扩展 UserNamePasswordLoginModule
相同的方式扩展 org.wildfly.security.auth.server.SecurityRealm
。请参阅MasterTheBoss
,如上所述。
【讨论】:
以上是关于如何将 PicketBox 自定义登录模块迁移到 Elytron?的主要内容,如果未能解决你的问题,请参考以下文章
如何将自定义用户模型迁移到 Django 中的不同应用程序?