Wildfly Custom auth-method

2019-04-09 19:44发布

问题:

How do you add a custom authenticator in Wildfly? I used to do this in JBoss 4.2:

In <JBoss>\jboss-as\server\production\deploy\jboss-web.deployer\META-INF\jboss-service.xml, add the following in :

 <java:property>
      <java:key>MY-CUSTOM-AUTH</java:key>
      <java:value>com.test.MyCustomAuthenticator</java:value>
 </java:property>

In <JBoss>\jboss-as\server\production\deploy\jboss-portal-ha.sar\portal-server.war\WEB-INF\web.xml, modify :

...
 <login-config>
      <auth-method>MY-CUSTOM-AUTH</auth-method>
...

Wildfly does not have jboss-service.xml anymore.

回答1:

I found the answer. We need to create an Undertow ServletExtension (io.undertow.servlet.ServletExtension) in the META-INF/services to register the authentication mechanism . My extension class looks like this:

public class NtlmServletExtension implements ServletExtension {
    @Override
    public void handleDeployment(DeploymentInfo deploymentInfo, ServletContext servletContext) {
        deploymentInfo.addAuthenticationMechanism("NTLM", new NtlmAuthenticationMechanism.Factory());
    }
}

Check this for more details: http://undertow.io/documentation/servlet/security.html

Here's a sample: https://github.com/dstraub/spnego-wildfly

You can now refer to this in your web.xml:

...
 <login-config>
      <auth-method>NTLM</auth-method>
...


回答2:

In WildFly you have to use a security realm for that :

  • https://docs.jboss.org/author/display/WFLY8/Security+Realms for reference.
  • http://www.radcortez.com/custom-principal-and-loginmodule-for-wildfly/ as an example