<div dir="ltr">Just look at Keycloak documentation:<div><a href="http://keycloak.github.io/docs/userguide/keycloak-server/html/providers.html#d4e458">http://keycloak.github.io/docs/userguide/keycloak-server/html/providers.html#d4e458</a><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 23 November 2015 at 14:07, Erik Mulder <span dir="ltr">&lt;<a href="mailto:erik.mulder@docdatapayments.com" target="_blank">erik.mulder@docdatapayments.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
  <div text="#000000" bgcolor="#FFFFFF">
    
    <p><span>Hi
        Ataraxus,</span></p>
    <p><span><br>
      </span></p>
    <p dir="ltr"><span>I think the way to solve
        this is &#39;tapping in&#39; to the Wildfly module system. You need to
        add a module.xml to your provider jar under
        src/main/resources/modules/some/module/name/module.xml and
        include a reference to the java mail api there. That way you can
        tell Wildfly to include that on the classpath when it&#39;s loading
        your provider classes.<br>
      </span></p>
    <p dir="ltr" style="margin:0px;padding:0px;text-align:start;display:block;color:rgb(0,0,0);font-family:HelveticaNeue,&#39;Helvetica Neue&#39;,Helvetica,Arial,&#39;Lucida Grande&#39;,sans-serif;font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><span><br>
        I&#39;m sorry, but I&#39;m not sure how exactly this works in detail
        with path names and module.xml contents. You can look at the
        keycloak sources for module.xml examples, read the Wildfly
        module system documentation or maybe someone else on the mailing
        list can answer you in more detail. Good luck!<br>
        <br>
      </span></p>
    <br style="color:rgb(0,0,0);font-family:HelveticaNeue,&#39;Helvetica Neue&#39;,Helvetica,Arial,&#39;Lucida Grande&#39;,sans-serif;font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
    <blockquote>
      <div>
        <div>
          <div dir="ltr" style="text-align:start">
            <hr size="1"><font face="Arial" size="2"><b><span style="font-weight:bold">From:</span></b><span> </span>Ataraxus
              <a href="mailto:atx@binaryninja.de" target="_blank">&lt;atx@binaryninja.de&gt;</a><br>
              <b><span style="font-weight:bold">To:</span></b><span> </span><a href="mailto:ewjmulder@yahoo.com" target="_blank">&quot;ewjmulder@yahoo.com&quot;</a>
              <a href="mailto:ewjmulder@yahoo.com" target="_blank">&lt;ewjmulder@yahoo.com&gt;</a><span> </span><br>
              <b><span style="font-weight:bold">Sent:</span></b><span> </span>Monday, November
              23, 2015 1:57 PM<br>
              <b><span style="font-weight:bold">Subject:</span></b><span> </span>Re:
              [keycloak-user] Provider Dependencies<br>
            </font></div><div><div class="h5">
          <div><br>
            <div>
              <div>Here is the
                code and the stacktrace just in case, maybe there is a
                better way to send email:<span> </span><br>
                <br>
                private void send(UserModel user,
                AuthenticationFlowContext context, String subject,
                String textBody, String htmlBody) throws EmailException
                {<br>
                        try {<br>
                            String address = user.getEmail();<br>
                            Map&lt;String, String&gt; config =
                context.getRealm().getSmtpConfig();<br>
                <br>
                            Properties props = new Properties();<br>
                            props.setProperty(&quot;mail.smtp.host&quot;,
                config.get(&quot;host&quot;));<br>
                <br>
                            boolean auth =
                &quot;true&quot;.equals(config.get(&quot;auth&quot;));<br>
                            boolean ssl =
                &quot;true&quot;.equals(config.get(&quot;ssl&quot;));<br>
                            boolean starttls =
                &quot;true&quot;.equals(config.get(&quot;starttls&quot;));<br>
                <br>
                            if (config.containsKey(&quot;port&quot;)) {<br>
                                props.setProperty(&quot;mail.smtp.port&quot;,
                config.get(&quot;port&quot;));<br>
                            }<br>
                <br>
                            if (auth) {<br>
                                props.put(&quot;mail.smtp.auth&quot;, &quot;true&quot;);<br>
                            }<br>
                <br>
                            if (ssl) {<br>
                               
                props.put(&quot;mail.smtp.socketFactory.port&quot;,
                config.get(&quot;port&quot;));<br>
                               
                props.put(&quot;mail.smtp.socketFactory.class&quot;,
                &quot;javax.net.ssl.SSLSocketFactory&quot;);<br>
                            }<br>
                <br>
                            if (starttls) {<br>
                                props.put(&quot;mail.smtp.starttls.enable&quot;,
                &quot;true&quot;);<br>
                            }<br>
                <br>
                            String from = config.get(&quot;from&quot;);<br>
                <br>
                            Session session =
                Session.getInstance(props);<br>
                <br>
                            Multipart multipart = new
                MimeMultipart(&quot;alternative&quot;);<br>
                <br>
                            if (textBody != null) {<br>
                                MimeBodyPart textPart = new
                MimeBodyPart();<br>
                                textPart.setText(textBody, &quot;UTF-8&quot;);<br>
                                multipart.addBodyPart(textPart);<br>
                            }<br>
                <br>
                            if (htmlBody != null) {<br>
                                MimeBodyPart htmlPart = new
                MimeBodyPart();<br>
                                htmlPart.setContent(htmlBody,
                &quot;text/html; charset=UTF-8&quot;);<br>
                                multipart.addBodyPart(htmlPart);<br>
                            }<br>
                <br>
                            Message msg = new MimeMessage(session);<br>
                            msg.setFrom(new InternetAddress(from));<br>
                            msg.setHeader(&quot;To&quot;, address);<br>
                            msg.setSubject(subject);<br>
                            msg.setContent(multipart);<br>
                            msg.saveChanges();<br>
                            msg.setSentDate(new Date());<br>
                <br>
                            Transport transport =
                session.getTransport(&quot;smtp&quot;);<br>
                            if (auth) {<br>
                                transport.connect(config.get(&quot;user&quot;),
                config.get(&quot;password&quot;));<br>
                            } else {<br>
                                transport.connect();<br>
                            }<br>
                            transport.sendMessage(msg, new
                InternetAddress[]{new InternetAddress(address)});<br>
                        } catch (Exception e) {<br>
                            throw new EmailException(e);<br>
                        }<br>
                    }<br>
                <br>
                connect/auth<br>
                <br>
                JBWEB000309: type JBWEB000066: Exception report<br>
                <br>
                JBWEB000068: message request path:
                /auth/realms/MYAPP/protocol/openid-connect/auth<br>
                <br>
                JBWEB000069: description JBWEB000145: The server
                encountered an internal error that prevented it from
                fulfilling this request.<br>
                <br>
                JBWEB000070: exception<br>
                <br>
                java.lang.RuntimeException: request path:
                /auth/realms/MYAPP/protocol/openid-connect/auth<br>
                   
org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:75)<br>
                JBWEB000071: root cause<br>
                <br>
                org.jboss.resteasy.spi.UnhandledException:
                java.lang.NoClassDefFoundError: javax/mail/Multipart<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:364)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:232)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:208)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:556)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)<br>
                   
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)<br>
                   
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)<br>
                   
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)<br>
                   
                javax.servlet.http.HttpServlet.service(HttpServlet.java:847)<br>
                   
org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:61)<br>
                JBWEB000071: root cause<br>
                <br>
                java.lang.NoClassDefFoundError: javax/mail/Multipart<br>
                   
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:27)<br>
                   
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:19)<br>
                   
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:124)<br>
                   
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:97)<br>
                   
org.keycloak.authentication.AuthenticationProcessor.authenticate(AuthenticationProcessor.java:650)<br>
                   
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.browserAuthentication(AuthorizationEndpoint.java:315)<br>
                   
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.buildAuthorizationCodeAuthorizationResponse(AuthorizationEndpoint.java:265)<br>
                   
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.build(AuthorizationEndpoint.java:123)<br>
                    sun.reflect.NativeMethodAccessorImpl.invoke0(Native
                Method)<br>
                   
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
                   
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
                    java.lang.reflect.Method.invoke(Method.java:606)<br>
                   
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:168)<br>
                   
org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)<br>
                   
                org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)<br>
                   
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:158)<br>
                   
                org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:106)<br>
                   
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:153)<br>
                   
                org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:91)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:541)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)<br>
                   
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)<br>
                   
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)<br>
                   
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)<br>
                   
                javax.servlet.http.HttpServlet.service(HttpServlet.java:847)<br>
                   
org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:61)<br>
                JBWEB000071: root cause<br>
                <br>
                java.lang.ClassNotFoundException: javax.mail.Multipart<br>
                   
                java.net.URLClassLoader$1.run(URLClassLoader.java:366)<br>
                   
                java.net.URLClassLoader$1.run(URLClassLoader.java:355)<br>
                    java.security.AccessController.doPrivileged(Native
                Method)<br>
                   
                java.net.URLClassLoader.findClass(URLClassLoader.java:354)<br>
                   
                java.lang.ClassLoader.loadClass(ClassLoader.java:425)<br>
                   
                java.lang.ClassLoader.loadClass(ClassLoader.java:358)<br>
                   
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:27)<br>
                   
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:19)<br>
                   
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:124)<br>
                   
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:97)<br>
                   
org.keycloak.authentication.AuthenticationProcessor.authenticate(AuthenticationProcessor.java:650)<br>
                   
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.browserAuthentication(AuthorizationEndpoint.java:315)<br>
                   
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.buildAuthorizationCodeAuthorizationResponse(AuthorizationEndpoint.java:265)<br>
                   
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.build(AuthorizationEndpoint.java:123)<br>
                    sun.reflect.NativeMethodAccessorImpl.invoke0(Native
                Method)<br>
                   
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
                   
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
                    java.lang.reflect.Method.invoke(Method.java:606)<br>
                   
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:168)<br>
                   
org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)<br>
                   
                org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)<br>
                   
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:158)<br>
                   
                org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:106)<br>
                   
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:153)<br>
                   
                org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:91)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:541)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)<br>
                   
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)<br>
                   
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)<br>
                   
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)<br>
                   
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)<br>
                   
                javax.servlet.http.HttpServlet.service(HttpServlet.java:847)<br>
                   
org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:61)<br>
                <br>
                <div>Am 23.11.15 um
                  13:32 schrieb Ataraxus:<br>
                </div>
                <blockquote type="cite" style="margin:1em;display:block">
                  <pre style="font-family:&#39;Courier New&#39;;margin:1em 0px;display:block;white-space:pre-wrap">Hey,

I&#39;m writing my custum login provider which works great so far, but i 
stumbled upon a dependency issue:
I wan&#39;t to use mail in my authenticator, but when the authenticator gets 
actually loaded I get an class not found exception.
Somehow is java.mail.* not available in the classpath of providers which 
are dropped in the configuration/providers path.
How can i use these dependencies? I could include them into my jar, but 
i guess thats not the &quot;right&quot; way.

Thanks
_______________________________________________
keycloak-user mailing list
<a rel="nofollow" href="mailto:keycloak-user@lists.jboss.org" style="margin:0px;padding:0px;text-decoration:underline!important;color:blue;outline:none;background:transparent" target="_blank">keycloak-user@lists.jboss.org</a>
<a rel="nofollow" href="https://lists.jboss.org/mailman/listinfo/keycloak-user" style="margin:0px;padding:0px;text-decoration:underline!important;color:blue;outline:none;background:transparent" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a>
</pre>
                </blockquote>
                <br>
              </div>
            </div>
            <br>
          </div>
        </div></div></div>
      </div>
    </blockquote>
  </div>

</blockquote></div><br></div>