如何在 Jakarta EE 应用程序中激活我自己的 Jakarta HttpAuthenticationMechanism 实现
How to activate my own Jakarta HttpAuthenticationMechanism implementation in Jakarta EE app
我正在创建一个简单的 Jakarta EE 9 应用程序。由于我自己的原因,我不得不实现我自己的HttpAuthenticationMechanism(我没有使用内置的HttpAuthenticationMechanism CDI bean)。
我在激活自己的 HttpAuthenticationMechanism 时遇到问题。在我的登录 servlet 中,我尝试调用 SecurityContext.authenticate(request, response, AuthenticationParameters) 来手动处理登录, 但我自己的 HttpAuthenticationMechanism 从未被调用。本来应该叫的。
我自己的 HttpAuthenticationMechanism 及其注释
@ApplicationScoped
@Alternative
@jakarta.annotation.Priority(jakarta.interceptor.Interceptor.Priority.APPLICATION)
@AutoApplySession
public class MyOwnHttpAuthenticationMechanism implements HttpAuthenticationMechanism {
@Override
public AuthenticationStatus validateRequest(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext)
throws AuthenticationException {
// Never called
}
}
如您所见,我已经添加了@Alternative 和@Priority 来激活bean。
我的环境:
- 雅加达企业版 9.1
- Jakarta EE 9 的 Wildfly 26 预览
- 我还在 Wildfly 上将 Integrated JASPI 从打开更改为关闭。
- 我的jboss-web.xml:<安全域>jaspitest安全域>
- Java 11
有帮助吗?谢谢!
我发现了问题所在。 Wildfly 26 中没有安全域'jaspitest'。这个安全域以前在Wildfly 中默认存在,但现在不存在了。这就是我自己的 HttpAuthenticationMechanism 没有被调用的原因。
解决方案:改用安全域'other',或者从[=23]中删除security-domain标签=].xml, 或您自己的安全域
我正在创建一个简单的 Jakarta EE 9 应用程序。由于我自己的原因,我不得不实现我自己的HttpAuthenticationMechanism(我没有使用内置的HttpAuthenticationMechanism CDI bean)。
我在激活自己的 HttpAuthenticationMechanism 时遇到问题。在我的登录 servlet 中,我尝试调用 SecurityContext.authenticate(request, response, AuthenticationParameters) 来手动处理登录, 但我自己的 HttpAuthenticationMechanism 从未被调用。本来应该叫的。
我自己的 HttpAuthenticationMechanism 及其注释
@ApplicationScoped
@Alternative
@jakarta.annotation.Priority(jakarta.interceptor.Interceptor.Priority.APPLICATION)
@AutoApplySession
public class MyOwnHttpAuthenticationMechanism implements HttpAuthenticationMechanism {
@Override
public AuthenticationStatus validateRequest(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext)
throws AuthenticationException {
// Never called
}
}
如您所见,我已经添加了@Alternative 和@Priority 来激活bean。
我的环境:
- 雅加达企业版 9.1
- Jakarta EE 9 的 Wildfly 26 预览
- 我还在 Wildfly 上将 Integrated JASPI 从打开更改为关闭。
- 我的jboss-web.xml:<安全域>jaspitest安全域>
- Java 11
有帮助吗?谢谢!
我发现了问题所在。 Wildfly 26 中没有安全域'jaspitest'。这个安全域以前在Wildfly 中默认存在,但现在不存在了。这就是我自己的 HttpAuthenticationMechanism 没有被调用的原因。
解决方案:改用安全域'other',或者从[=23]中删除security-domain标签=].xml, 或您自己的安全域