<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">
      
      <p id="yui_3_16_0_1_1447861079041_132152" style="margin: 0px;
        padding: 0px; display: block; color: rgb(0, 0, 0); font-family:
        HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida
        Grande', sans-serif; font-size: 13px; font-style: normal;
        font-variant: normal; font-weight: normal; letter-spacing:
        normal; line-height: normal; orphans: auto; text-align: start;
        text-indent: 0px; text-transform: none; white-space: normal;
        widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span id="yui_3_16_0_1_1447861079041_132151">Ah, of course, thanks
          Stian!</span></p>
      <p id="yui_3_16_0_1_1447861079041_132125" style="margin: 0px;
        padding: 0px; display: block; color: rgb(0, 0, 0); font-family:
        HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida
        Grande', sans-serif; font-size: 13px; font-style: normal;
        font-variant: normal; font-weight: normal; letter-spacing:
        normal; line-height: normal; orphans: auto; text-align: start;
        text-indent: 0px; text-transform: none; white-space: normal;
        widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span id="yui_3_16_0_1_1447861079041_132153">Sorry I didn't mention
          this, I'm poisened by too many poorly documented projects
          where you have to dive into the sources to get your answers.
          ;-)</span></p>
      <p id="yui_3_16_0_1_1447861079041_132125" style="margin: 0px;
        padding: 0px; display: block; color: rgb(0, 0, 0); font-family:
        HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida
        Grande', sans-serif; font-size: 13px; font-style: normal;
        font-variant: normal; font-weight: normal; letter-spacing:
        normal; line-height: normal; orphans: auto; text-align: start;
        text-indent: 0px; text-transform: none; white-space: normal;
        widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span id="yui_3_16_0_1_1447861079041_132278">But the Keycloak
          documentation is actually very good.</span></p>
      <br>
      <br>
      On 23/11/15 14:18, Stian Thorgersen wrote:<br>
    </div>
    <blockquote cite="mid:CAJgngAfTPouO3f1ZuHsvhv65Yhp9hYTwHm8Y&#43;z6zPho9=qdLyQ@mail.gmail.com" type="cite">
      <div dir="ltr">Just look at Keycloak documentation:
        <div><a moz-do-not-send="true" 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 moz-do-not-send="true" 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
                  'tapping in' 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'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,'Helvetica
                Neue',Helvetica,Arial,'Lucida
Grande',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'm sorry, but I'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,'Helvetica
                Neue',Helvetica,Arial,'Lucida
Grande',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>&nbsp;</span>Ataraxus

                        <a moz-do-not-send="true" href="mailto:atx@binaryninja.de" target="_blank">&lt;atx@binaryninja.de&gt;</a><br>
                        <b><span style="font-weight:bold">To:</span></b><span>&nbsp;</span><a moz-do-not-send="true" href="mailto:ewjmulder@yahoo.com" target="_blank"><a class="moz-txt-link-rfc2396E" href="mailto:ewjmulder@yahoo.com">&quot;ewjmulder@yahoo.com&quot;</a></a> <a moz-do-not-send="true" href="mailto:ewjmulder@yahoo.com" target="_blank"><a class="moz-txt-link-rfc2396E" href="mailto:ewjmulder@yahoo.com">&lt;ewjmulder@yahoo.com&gt;</a></a><span>&nbsp;</span><br>
                        <b><span style="font-weight:bold">Sent:</span></b><span>&nbsp;</span>Monday,
                        November 23, 2015 1:57 PM<br>
                        <b><span style="font-weight:bold">Subject:</span></b><span>&nbsp;</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>&nbsp;</span><br>
                              <br>
                              private void send(UserModel user,
                              AuthenticationFlowContext context, String
                              subject, String textBody, String htmlBody)
                              throws EmailException {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String address =
                              user.getEmail();<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Map&lt;String, String&gt;
                              config =
                              context.getRealm().getSmtpConfig();<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Properties props = new
                              Properties();<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                              props.setProperty(&quot;mail.smtp.host&quot;,
                              config.get(&quot;host&quot;));<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean auth =
                              &quot;true&quot;.equals(config.get(&quot;auth&quot;));<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean ssl =
                              &quot;true&quot;.equals(config.get(&quot;ssl&quot;));<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean starttls =
                              &quot;true&quot;.equals(config.get(&quot;starttls&quot;));<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
                              (config.containsKey(&quot;port&quot;)) {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                              props.setProperty(&quot;mail.smtp.port&quot;,
                              config.get(&quot;port&quot;));<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (auth) {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                              props.put(&quot;mail.smtp.auth&quot;, &quot;true&quot;);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ssl) {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                              props.put(&quot;mail.smtp.socketFactory.port&quot;,
                              config.get(&quot;port&quot;));<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                              props.put(&quot;mail.smtp.socketFactory.class&quot;,
                              &quot;javax.net.ssl.SSLSocketFactory&quot;);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (starttls) {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                              props.put(&quot;mail.smtp.starttls.enable&quot;,
                              &quot;true&quot;);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String from =
                              config.get(&quot;from&quot;);<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session =
                              Session.getInstance(props);<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Multipart multipart = new
                              MimeMultipart(&quot;alternative&quot;);<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (textBody != null) {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeBodyPart textPart =
                              new MimeBodyPart();<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textPart.setText(textBody,
                              &quot;UTF-8&quot;);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                              multipart.addBodyPart(textPart);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (htmlBody != null) {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MimeBodyPart htmlPart =
                              new MimeBodyPart();<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                              htmlPart.setContent(htmlBody, &quot;text/html;
                              charset=UTF-8&quot;);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                              multipart.addBodyPart(htmlPart);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Message msg = new
                              MimeMessage(session);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.setFrom(new
                              InternetAddress(from));<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.setHeader(&quot;To&quot;, address);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.setSubject(subject);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.setContent(multipart);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.saveChanges();<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.setSentDate(new Date());<br>
                              <br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transport transport =
                              session.getTransport(&quot;smtp&quot;);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (auth) {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                              transport.connect(config.get(&quot;user&quot;),
                              config.get(&quot;password&quot;));<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transport.connect();<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transport.sendMessage(msg, new
                              InternetAddress[]{new
                              InternetAddress(address)});<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new EmailException(e);<br>
                              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
                              &nbsp;&nbsp;&nbsp; }<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>
                              &nbsp;&nbsp;&nbsp;
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>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:364)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:232)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:208)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:556)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)<br>
                              &nbsp;&nbsp;&nbsp;
                              javax.servlet.http.HttpServlet.service(HttpServlet.java:847)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:61)<br>
                              JBWEB000071: root cause<br>
                              <br>
                              java.lang.NoClassDefFoundError:
                              javax/mail/Multipart<br>
                              &nbsp;&nbsp;&nbsp;
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:27)<br>
                              &nbsp;&nbsp;&nbsp;
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:19)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:124)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:97)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.authentication.AuthenticationProcessor.authenticate(AuthenticationProcessor.java:650)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.browserAuthentication(AuthorizationEndpoint.java:315)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.buildAuthorizationCodeAuthorizationResponse(AuthorizationEndpoint.java:265)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.build(AuthorizationEndpoint.java:123)<br>
                              &nbsp;&nbsp;&nbsp;
                              sun.reflect.NativeMethodAccessorImpl.invoke0(Native
                              Method)<br>
                              &nbsp;&nbsp;&nbsp;
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
                              &nbsp;&nbsp;&nbsp;
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
                              &nbsp;&nbsp;&nbsp;
                              java.lang.reflect.Method.invoke(Method.java:606)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:168)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)<br>
                              &nbsp;&nbsp;&nbsp;
                              org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:158)<br>
                              &nbsp;&nbsp;&nbsp;
                              org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:106)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:153)<br>
                              &nbsp;&nbsp;&nbsp;
                              org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:91)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:541)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)<br>
                              &nbsp;&nbsp;&nbsp;
                              javax.servlet.http.HttpServlet.service(HttpServlet.java:847)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:61)<br>
                              JBWEB000071: root cause<br>
                              <br>
                              java.lang.ClassNotFoundException:
                              javax.mail.Multipart<br>
                              &nbsp;&nbsp;&nbsp;
                              java.net.URLClassLoader$1.run(URLClassLoader.java:366)<br>
                              &nbsp;&nbsp;&nbsp;
                              java.net.URLClassLoader$1.run(URLClassLoader.java:355)<br>
                              &nbsp;&nbsp;&nbsp;
                              java.security.AccessController.doPrivileged(Native
                              Method)<br>
                              &nbsp;&nbsp;&nbsp;
                              java.net.URLClassLoader.findClass(URLClassLoader.java:354)<br>
                              &nbsp;&nbsp;&nbsp;
                              java.lang.ClassLoader.loadClass(ClassLoader.java:425)<br>
                              &nbsp;&nbsp;&nbsp;
                              java.lang.ClassLoader.loadClass(ClassLoader.java:358)<br>
                              &nbsp;&nbsp;&nbsp;
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:27)<br>
                              &nbsp;&nbsp;&nbsp;
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:19)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:124)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:97)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.authentication.AuthenticationProcessor.authenticate(AuthenticationProcessor.java:650)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.browserAuthentication(AuthorizationEndpoint.java:315)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.buildAuthorizationCodeAuthorizationResponse(AuthorizationEndpoint.java:265)<br>
                              &nbsp;&nbsp;&nbsp;
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.build(AuthorizationEndpoint.java:123)<br>
                              &nbsp;&nbsp;&nbsp;
                              sun.reflect.NativeMethodAccessorImpl.invoke0(Native
                              Method)<br>
                              &nbsp;&nbsp;&nbsp;
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
                              &nbsp;&nbsp;&nbsp;
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
                              &nbsp;&nbsp;&nbsp;
                              java.lang.reflect.Method.invoke(Method.java:606)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:168)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)<br>
                              &nbsp;&nbsp;&nbsp;
                              org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:158)<br>
                              &nbsp;&nbsp;&nbsp;
                              org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:106)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:153)<br>
                              &nbsp;&nbsp;&nbsp;
                              org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:91)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:541)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)<br>
                              &nbsp;&nbsp;&nbsp;
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)<br>
                              &nbsp;&nbsp;&nbsp;
                              javax.servlet.http.HttpServlet.service(HttpServlet.java:847)<br>
                              &nbsp;&nbsp;&nbsp;
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:'Courier New';margin:1em 0px;display:block;white-space:pre-wrap">Hey,

I'm writing my custum login provider which works great so far, but i 
stumbled upon a dependency issue:
I wan'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 moz-do-not-send="true" 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 moz-do-not-send="true" 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>
    </blockquote>
    <br>
  </body>
</html>