Jakarta ee 自定义登录模块未执行?
我尝试编写自己的自定义登录模块,其简化如下:Jakarta ee 自定义登录模块未执行?,jakarta-ee,jboss,jaas,wildfly,Jakarta Ee,Jboss,Jaas,Wildfly,我尝试编写自己的自定义登录模块,其简化如下: package my.package; public class MyUsernamePasswordLoginModule extends UsernamePasswordLoginModule { @Override protected Group[] getRoleSets() throws LoginException { return new Group[] { }; } @Overri
package my.package;
public class MyUsernamePasswordLoginModule extends UsernamePasswordLoginModule {
@Override
protected Group[] getRoleSets() throws LoginException {
return new Group[] { };
}
@Override
protected boolean validatePassword(String inputPassword, String expectedPassword) {
return true;
}
@Override
protected String getUsersPassword() throws LoginException {
return "";
}
}
我认为实际执行对我的问题并不重要。该类包含在我部署的EJB中。接下来,我在我的Wildflysstandalone.xml中设置模块。我刚才补充说
<security-domain name="my-security" cache-type="default">
<authentication>
<login-module code="my.package.MyUsernamePasswordLoginModule" flag="required" />
</authentication>
</security-domain>
我现在希望我的请求通过授权,然后执行我的登录模块(虽然在授权之前,身份验证更有意义),但现在它只接受所有请求。因此,我似乎在某个地方把这个概念搞错了,我似乎找不到一些文档来为我澄清这一点。有人能告诉我如何正确配置吗
编辑
经过一些调试后,我发现执行了org.jboss.as.security.service.SimpleSecurityManager#authenticate(最终字符串runAs、最终字符串runAsPrincipal、最终设置extralroles)
。它在授权之前进行身份验证,这是有道理的。它首先获取安全上下文,并显示安全域实际上是“我的安全”
。但随后它执行自己的身份验证,该身份验证检测到丢失的主体,并设置具有有效身份验证(WAT?)的未经身份验证的标识。因此,身份验证成功并执行授权。我仍然不知道我的登录模块在该流程中的位置以及如何正确配置它。现在,这慢慢地让我发疯了…事实证明,@WebContext
注释B对于启用web服务的身份验证是必需的:
@WebContext(contextRoot = "/myservice", urlPattern = "/*", authMethod = "BASIC", secureWSDLAccess = false)
这在所有的教程中我都不清楚。启用HTTP身份验证而不是jaas身份验证似乎是可选的。也许还有一种方法没有它,但它现在按预期工作
@WebContext(contextRoot = "/myservice", urlPattern = "/*", authMethod = "BASIC", secureWSDLAccess = false)