<html><head></head><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px"><div dir="ltr" id="yui_3_16_0_1_1445854604267_4028">thanks for your answer. Well, i suddenly tried your suggestion adding a throw new ModelException("My message"); inside my provider class.</div><div id="yui_3_16_0_1_1445854604267_4140" dir="ltr">The exception is thrown but the login page is redirected to the standard error page just displaying the message:</div><div id="yui_3_16_0_1_1445854604267_4232" dir="ltr"><br></div>
<div id="kc-container" class="">
<div id="kc-container-wrapper" class="">
<div id="kc-header" class="">
<div id="kc-header-wrapper" class=""> We're <strong class="" id="yui_3_16_0_1_1445854604267_4239">sorry</strong> ...
</div>
</div>
<div id="kc-feedback-placeholder" class="">
</div>
<div id="kc-locale" class="">
<div id="kc-locale-wrapper" class="">
<div class="" id="kc-locale-dropdown">
<br>
</div>
</div>
</div>
<div id="kc-content" class="">
<div id="kc-content-wrapper" class="">
<div id="kc-form" class="">
<div id="kc-form-wrapper" class="">
<div class="" id="kc-error-message">
<div id="yui_3_16_0_1_1445854604267_4251" class="">Unexpected error when handling authentication request to identity provider.</div>
</div>
</div>
</div>
</div>
</div>
</div></div><div id="yui_3_16_0_1_1445854604267_4029"><br></div><div id="yui_3_16_0_1_1445854604267_4011"><br></div><div id="yui_3_16_0_1_1445854604267_4384">How can i make the "My Message" exception message to be displayed on the login page?</div><div id="yui_3_16_0_1_1445854604267_4518">thanks<br><span></span></div><div id="yui_3_16_0_1_1445854604267_4383"><span></span></div> <br><div class="qtdSeparateBR"><br><br></div><div style="display: block;" class="yahoo_quoted"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 13px;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div dir="ltr"> <font face="Arial" size="2"> Il Lunedì 26 Ottobre 2015 8:49, Marek Posolda <mposolda@redhat.com> ha scritto:<br> </font> </div> <br><br> <div class="y_msg_container"><div id="yiv0698708256"><div>
<div class="yiv0698708256moz-cite-prefix">On 24/10/15 23:27, alex orl wrote:<br clear="none">
</div>
<blockquote type="cite">
<div style="color:#000;background-color:#fff;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px;">
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2637"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2639" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2641" style="line-height:18.2px;">I'm using
jboss keycloak 1.5 final version.</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2643"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2645" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2647" style="line-height:18.2px;">I developed
my custom user federation provider interfacing with
keycloak properties and my user enterprise database. </span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2649"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2651" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2653" style="line-height:18.2px;"><br class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2655" clear="none">
</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2657"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2659" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2661" style="line-height:18.2px;">My need is
to send up to user the login interface custom error
messages based on particular specific error related to my
legacy user db.</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2663"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2665" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2667" style="line-height:18.2px;"><br class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2669" clear="none">
</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2671"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2673" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2675" style="line-height:18.2px;">I saw
keycloak themes have a resources folder by which i can
localize and add new messages. Then i can reference them
by angular js using </span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2677"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2679" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2681" style="line-height:18.2px;"><br class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2683" clear="none">
</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2685"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2687" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2689" style="line-height:18.2px;">
$myMessage</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2691"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2693" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2695" style="line-height:18.2px;"><br class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2697" clear="none">
</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2699"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2701" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2703" style="line-height:18.2px;">notation.
The problem is i want to rise up a message from keycloak
server. My user federation provider implements
UserFederationProvider interface. So i should have to
override:</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2705"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2707" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2709" style="line-height:18.2px;"><br class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2711" clear="none">
</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2713"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2715" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2717" style="line-height:18.2px;">
@Override</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2719"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2721" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2723" style="line-height:18.2px;"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2725" style="white-space:pre-wrap;">        </span>public
CredentialValidationOutput validCredentials(RealmModel
realm, UserCredentialModel credential) {</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2727"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2729" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2731" style="line-height:18.2px;"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2733" style="white-space:pre-wrap;">                </span>LOGGER.info("validCredentials(realm,
credential)");</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2735"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2737" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2739" style="line-height:18.2px;"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2741" style="white-space:pre-wrap;">                </span>return
CredentialValidationOutput.failed();</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2743"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2745" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2747" style="line-height:18.2px;"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2749" style="white-space:pre-wrap;">        </span>}</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2751"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2753" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2755" style="line-height:18.2px;"><br class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2757" clear="none">
</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2751"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2901" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2900" style="line-height:18.2px;">
</span></font><div class="yiv0698708256" dir="ltr" id="yiv0698708256yui_3_16_0_1_1445721568491_2759" style="color:rgb(0, 0, 0);font-family:HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;line-height:normal;"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2800" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2799" style="line-height:18.2px;">In the
UserFederationProvider interface i read that </span></font><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2906" style="line-height:18.2px;color:rgb(51, 51, 51);font-family:Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol';">validCredentials
:</span></div>
<div class="yiv0698708256" dir="ltr" id="yiv0698708256yui_3_16_0_1_1445721568491_2759" style="color:rgb(0, 0, 0);font-family:HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;line-height:normal;"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2876" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2875"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2874" style="line-height:18.2px;">Validate credentials
of unknown user. The authenticated user is
recognized based on provided credentials and
returned back in CredentialValidationOutput</span></span></font></div>
</div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2751"><font class="yiv0698708256" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" style="line-height:18.2px;"><br clear="none">
</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2759"><font class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2761" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2763" style="line-height:18.2px;">It seems to
be the method i was looking for just because
CredentialValidationOutput contains custom messages to be
sent as validation output. The problem is this method is
never called.</span></font></div>
</div>
</blockquote>
<font color="#333333"><font face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol">This method is called by Keycloak just during
use-cases, when you want to authenticate with unknown user.
Which is currently during Kerberos/SPNEGO login. It's not called
during basic flow with username/password authentication. <br clear="none">
<br clear="none">
I think if you want to propagate error messages, you can for
example throw ModelException with the error message you want.</font></font><br clear="none">
<blockquote type="cite">
<div style="color:#000;background-color:#fff;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px;">
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2759"><font class="yiv0698708256" face="Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, Segoe UI Emoji, Segoe UI Symbol" color="#333333"><span class="yiv0698708256" style="line-height:18.2px;"><br clear="none">
</span></font></div>
<div class="yiv0698708256" id="yiv0698708256yui_3_16_0_1_1445721568491_2759">The same
happens to the close method. It's never called at the end of
each request so i cannot dispose my objects</div>
<div class="yiv0698708256" dir="ltr" id="yiv0698708256yui_3_16_0_1_1445721568491_2759"><span style="line-height:18.2px;color:rgb(51, 51, 51);font-family:Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol';">Why?</span><br clear="none">
</div>
</div>
</blockquote>
Feel free to create JIRA for the close method.<br clear="none">
<br clear="none">
Marek<div class="yiv0698708256yqt2250588427" id="yiv0698708256yqtfd44126"><br clear="none">
</div><blockquote type="cite"><div class="yiv0698708256yqt2250588427" id="yiv0698708256yqtfd72864">
</div><div style="color:#000;background-color:#fff;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px;"><div class="yiv0698708256yqt2250588427" id="yiv0698708256yqtfd65595">
<div class="yiv0698708256" dir="ltr" id="yiv0698708256yui_3_16_0_1_1445721568491_2759"><span id="yiv0698708256yui_3_16_0_1_1445721568491_2938" style="line-height:18.2px;color:rgb(51, 51, 51);font-family:Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol';">Thanks a lot</span></div></div>
</div>
<br clear="none">
<fieldset class="yiv0698708256mimeAttachmentHeader"></fieldset>
<br clear="none">
<pre>_______________________________________________
keycloak-user mailing list
<a rel="nofollow" shape="rect" class="yiv0698708256moz-txt-link-abbreviated" ymailto="mailto:keycloak-user@lists.jboss.org" target="_blank" href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>
<a rel="nofollow" shape="rect" class="yiv0698708256moz-txt-link-freetext" target="_blank" href="https://lists.jboss.org/mailman/listinfo/keycloak-user">https://lists.jboss.org/mailman/listinfo/keycloak-user</a></pre><div class="yiv0698708256yqt2250588427" id="yiv0698708256yqtfd81990">
</div></blockquote><div class="yiv0698708256yqt2250588427" id="yiv0698708256yqtfd17232">
<br clear="none">
</div></div></div><br><br></div> </div> </div> </div></div></body></html>