如何在 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。

我的环境:

有帮助吗?谢谢!

我发现了问题所在。 Wildfly 26 中没有安全域'jaspitest'。这个安全域以前在Wildfly 中默认存在,但现在不存在了。这就是我自己的 HttpAuthenticationMechanism 没有被调用的原因。

解决方案:改用安全域'other',或者从[=23]中删除security-domain标签=].xml, 或您自己的安全域