<div dir="ltr">My hope was that PAM would support verifying password and OTP as two completely separate calls without requiring a conversation and state between them. However, sounds like that&#39;s not possible. If libpam4j doesn&#39;t even support OTP it makes matters even worse.<div><br></div><div>The sooner we can use SSSD rather than PAM for authentication the better. Or at least do the OTP verification over SSSD.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 24 June 2016 at 19:14, Bruno Oliveira <span dir="ltr">&lt;<a href="mailto:bruno@abstractj.org" target="_blank">bruno@abstractj.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 2016-06-24, Bill Burke wrote:<br>
&gt;<br>
&gt;<br>
&gt; On 6/24/16 9:53 AM, John Dennis wrote:<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt; Let me try to clarify a few things.<br>
&gt; &gt;<br>
&gt; &gt; PAM is designed as a &quot;conversation&quot;, there are a few analogues you could<br>
&gt; &gt; compare it to:<br>
&gt; &gt;<br>
&gt; &gt; * a series of requests/responses<br>
&gt; &gt;<br>
&gt; &gt; * challenge/response authentication (e.g. CRAM)<br>
&gt; &gt;<br>
&gt; &gt; PAM has something equivalent to a session where state is stored during<br>
&gt; &gt; the &quot;conversation&quot;. When you use PAM you establish a context (session)<br>
&gt; &gt; and iterate. In each iteration the PAM library will ask you for<br>
&gt; &gt; something and you reply. The iteration stops when the library signals<br>
&gt; &gt; completion.<br>
&gt; &gt;<br>
&gt;<br>
&gt; Will the PAM conversation object be able to be serialized in-between web<br>
&gt; requests? Is it something that can be rebuilt with HTTP session information?<br>
&gt;<br>
&gt; &gt; For simple password auth the iteration is very short. But depending on<br>
&gt; &gt; how the PAM service is configured you could be prompted for other<br>
&gt; &gt; things. I suspect with Web forms they way you handle this is via<br>
&gt; &gt; redirects until such time as the PAM conversation completes.<br>
&gt; &gt;<br>
&gt;<br>
&gt; What do you mean by &quot;prompted&quot;?  Are we going to have to screen-scrape this<br>
&gt; information, or is it a well defined structure?<br>
&gt;<br>
&gt; &gt; So my suggestion would be to design this where there is a simple web<br>
&gt; &gt; form prompting for username/password but allow for the fact you may have<br>
&gt; &gt; to redirect to another page.<br>
&gt; &gt;<br>
&gt;<br>
&gt; As I mentioned early, we already have these generic redirection<br>
&gt; capabilities.    Login is a &quot;workflow&quot; and you can define nodes in this<br>
&gt; workflow.  The current node in the flow can fail, pass, ignore, or challenge<br>
&gt; an incoming request.<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt; Does that help?<br>
&gt; &gt;<br>
&gt;<br>
&gt; We&#39;re getting there!  :)  My current thoughts are that PAM integration<br>
&gt; should be implemented as a Keycloak Authenticator and user profile lookup,<br>
&gt; via SSSD, should be done via a User Federation Provider (the new interface).<br>
<br>
</div></div>Phew! I think we are on the same page about it.<br>
<br>
&gt;<br>
&gt; Bill<br>
<br>
--<br>
<br>
abstractj<br>
PGP: 0x84DC9914<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
keycloak-dev mailing list<br>
<a href="mailto:keycloak-dev@lists.jboss.org">keycloak-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/keycloak-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-dev</a><br>
</div></div></blockquote></div><br></div>