<div style="white-space:pre-wrap">Hello Eric, <br>the key problem i guess (which is not actually a problem itself from KC perspective) comes from the fact that in KC clients are associated to realms and a you don&#39;t know which realm a user will be authenticated against.<br><br>I would expect an application to have an application ID and secret, which are generated at application creation time, and those id and credentials would match a KC client in OAuth (dually application cancellation or credential revocation or change would reflect into KC). <br><br>This means a consistent Integration with the developer portal. If not using a developer portal  I can provision my application in KC and actually keep API &quot;public&quot;.<br><br>I understand this has architectural impact for you, but on architects considering an api management product in several api management scenarios. (b2b and b2c, mobile, published API and internal API).<br><br>Beats<br>Mike<br></div><br><div class="gmail_quote"><div dir="ltr">On Wed, 20 Jan 2016 at 15:22, Eric Wittmann &lt;<a href="mailto:eric.wittmann@redhat.com" target="_blank">eric.wittmann@redhat.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You are 100% right about that.  Ultimately the issue is that we do *not*<br>
currently support OAuth as a mechanism to identify the client app being<br>
used to invoke the API.<br>
<br>
I do agree that we need tighter integration with KC in a number of<br>
places to make everything easier to consume.  I think that perhaps we<br>
are too decoupled from KC at the moment.<br>
<br>
Do you have any thoughts on how you&#39;d like to see it work?  Just your<br>
impressions - I won&#39;t hold you to them. ;)<br>
<br>
We&#39;re always looking for ways to improve, and one of the best things for<br>
us is when users describe what they would like to see!<br>
<br>
-Eric<br>
<br>
On 1/20/2016 9:13 AM, michele danieli wrote:<br>
&gt; Hello Eric,<br>
&gt; still related to the point above, I think a key element is that there is<br>
&gt; no actual correlation between the application in APIMAN and the client<br>
&gt; in KC.  You createan application, but the application has only an key<br>
&gt; for associating itself to the API via a contract, while from an OAuth<br>
&gt; perspective you need  a client and eventually a secret, which you only<br>
&gt; configure in KC.  This means configuration of an application and<br>
&gt; enablement of OAuth requires users to interact separately with KC and<br>
&gt; APIMAN, which is odd.  Of course I understand that complexities lay<br>
&gt; behind, for example in which realm a client would be defined?<br>
&gt;<br>
&gt; On Thu, Jan 14, 2016 at 7:16 PM, michele danieli<br>
&gt; &lt;<a href="mailto:michele.danieli@gmail.com" target="_blank">michele.danieli@gmail.com</a> &lt;mailto:<a href="mailto:michele.danieli@gmail.com" target="_blank">michele.danieli@gmail.com</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     Hello Eric,<br>
&gt;     my scenario is the following.<br>
&gt;<br>
&gt;     A set of API has been defined to expose core business functions, to<br>
&gt;     clerks and sales force automation. Some functions are specifically<br>
&gt;     sensitive. All access requires end user authentication. Some<br>
&gt;     function are only accessible to users when using trusted clients:<br>
&gt;     for example access from browsers js apps is not enabled to some<br>
&gt;     functions, while native clients for mobile SFA do.<br>
&gt;<br>
&gt;     For trusted application i have implemented OAUTH with signed JWT<br>
&gt;     client authentication (updated KC to latest) almost meeting security<br>
&gt;     requirements (added a ticket to KC for supports of nonces) but oauth<br>
&gt;     client and application are actually unrelated, so no way I can<br>
&gt;     relate the client id to application to enforce access to sensitive<br>
&gt;     api to only users authenticated with the trusted client.<br>
&gt;<br>
&gt;     Of course I can set the api_key header to the one I have associated<br>
&gt;     to the trusted client, but this are unrelated (security department<br>
&gt;     not so happy). I could probably use the api_key as client_id in KC<br>
&gt;     and implement a custom policy to verify the access token audience (i<br>
&gt;     guess that is where the client is mapped in the signed token)<br>
&gt;     matches the apikey.<br>
&gt;<br>
&gt;     In general i was thinking if diffeent strategies for application<br>
&gt;     identification made sense (at api level) .<br>
&gt;<br>
&gt;     Bests<br>
&gt;     Mike<br>
&gt;<br>
&gt;<br>
&gt;     On Thu, 14 Jan 2016 at 14:34, Eric Wittmann<br>
&gt;     &lt;<a href="mailto:eric.wittmann@redhat.com" target="_blank">eric.wittmann@redhat.com</a> &lt;mailto:<a href="mailto:eric.wittmann@redhat.com" target="_blank">eric.wittmann@redhat.com</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;         Hi Michele.<br>
&gt;<br>
&gt;         That is correct.  Typically the end-user population is tied to<br>
&gt;         the API<br>
&gt;         being invoked rather than the Client (software) being used to<br>
&gt;         connect.<br>
&gt;         If that is not the case, then you could configure the OAuth<br>
&gt;         policy on<br>
&gt;         the Client Application rather than on the API (Service).  That<br>
&gt;         way you<br>
&gt;         could have a different user population for each connecting<br>
&gt;         client.  If<br>
&gt;         that&#39;s your use-case I&#39;d love to hear more about it. :)<br>
&gt;<br>
&gt;         -Eric<br>
&gt;<br>
&gt;         On 1/13/2016 3:05 PM, michele danieli wrote:<br>
&gt;          &gt; When considering non public API and applying a OAuth<br>
&gt;         authentication<br>
&gt;          &gt; policy, the application identifier must be provided using the<br>
&gt;         api_key as<br>
&gt;          &gt; a header?<br>
&gt;          &gt;<br>
&gt;          &gt; If so, does not it means that the user authorized client and<br>
&gt;         the actual<br>
&gt;          &gt; api consumer application have no strict relationship?<br>
&gt;          &gt;<br>
&gt;          &gt;<br>
&gt;          &gt; Thanks<br>
&gt;          &gt; Michele<br>
&gt;          &gt;<br>
&gt;          &gt;<br>
&gt;          &gt; _______________________________________________<br>
&gt;          &gt; Apiman-user mailing list<br>
&gt;          &gt; <a href="mailto:Apiman-user@lists.jboss.org" target="_blank">Apiman-user@lists.jboss.org</a> &lt;mailto:<a href="mailto:Apiman-user@lists.jboss.org" target="_blank">Apiman-user@lists.jboss.org</a>&gt;<br>
&gt;          &gt; <a href="https://lists.jboss.org/mailman/listinfo/apiman-user" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/apiman-user</a><br>
&gt;          &gt;<br>
&gt;<br>
&gt;<br>
</blockquote></div>