[openstack-dev] [Horizon][Keystone] Steps toward Kerberos and Federation

Adam Young ayoung at redhat.com
Fri Sep 5 14:14:00 UTC 2014


On 09/05/2014 04:49 AM, Marco Fargetta wrote:
> Hi,
>
> I am wondering if the solution I was trying to sketch with the spec
> "https://review.openstack.org/#/c/96867/13" is not easier to implement
> and manage then the steps highlated till n.2. Maybe, the spec is not
> yet there and should be improved (I will abandon or move to Kilo as
> Marek suggest) but the overall schema I think it is better then try to
> complicate the communication between Horizon and Keystone, IMHO.
That is a very well written, detailed spec.  I'm impressed.

The S4U2Proxy/Step one stuff will be ready to go as soon as I drop off 
the Net for a while and clean up my patches.  But that doesn't address 
the Federation issue.

The Javascript approach is, I think, simpler and better than using 
OAUTH2 as you specify, as it is the direction that Horizon is going 
anyway: A single page App, Javascript driven,  talking direct to all the 
Remote Services.

I want to limit the number of services that get tokens.  I want to limit 
the scope of those tokens as much as possible.  Keeping passwords out of 
Horizon is just the first step to this goal.


As I see it Keystone tokens and the OAUTH* protocols are both ways of 
doing distributed single sign on and delegation of privileges. However,  
Keystone specifies data that is relevant to OpenStack, and OAUTH is 
necessarily format agnostic.  Using a different mechanism punts on the 
hard decisions and rewrites the easy ones.

Yes, I wish we had started with OAUTH way back a couple years ago, but I 
can't say it is so compelling that we should do it now.

>
> Step 3 is a different story and it needs more evaluation of the
> possible scenarios opened.
>
> Cheers,
> Marco
>
> On Thu, Sep 04, 2014 at 05:37:38PM -0400, Adam Young wrote:
>> While the Keystone team has made pretty good strides toward
>> Federation for getting a Keystone token, we do not yet have a
>> complete story for Horizon.  The same is true about Kerberos.  I've
>> been working on this, and I want to inform the people that are
>> interested in the approach, as well as get some feedback.
>>
>> My first priority has been Kerberos.  I have a proof of concept of
>> this working, but the amount of hacking I had to
>> Django-OpenStack-Auth (DOA) made me shudder:  its fairly ugly.  A
>> few discussions today have moved things such that I think I can
>> clean up the approach.
>>
>> Phase 1.  DOA should be able to tell whether to use password or
>> Kerberos in order to get a token from Keystone based on an variable
>> set by the Apache web server;  mod_auth_kerb will set
>>
>>          request.META['KRB5CCNAME']
>>
>> only in the kerberos case.  If it gets this variable, DOA will only
>> do Kerberos.  If it does not, it will only do password.  There will
>> be no fallback from Kerberos to password;  this is enforced by
>> mod_auth_kerb, not something we can easily hack around in Django.
>>
>> That gets us Kerberos, but not Federation. Most of the code changes
>> are common with what follows after:
>>
>> Phase 1.5.  Add an optional field  to the password auth page that
>> allows a user to log in with a token instead of userid/password.
>> This can be a hidden field by default if we really want.  DOA now
>> needs to be able to validate a token.  Since Horizon only cares
>> about the hashed version of the tokens anyway, we only to Online
>> lookup, not PKI token validation.  In the successful response,
>> Keystone will to return the properly hashed (SHA256 for example) of
>> the PKI tokens for Horizon to cache.
>>
>> Phase 2.  Use AJAX to get a token from Keystone instead of sending
>> the credentials to the client.  Then pass that token to Horizon in
>> order to login. This implies that Keystone has set up CORS support.
>> This will open the door for Federation.  While it will provide a
>> different path to Kerberos than the stage 1, I think both are
>> valuable approaches and will serve different use cases.  This
>>
>> Phase 3.  Never send your token to Horizon.  In this world, the
>> browser, with full CORS support, makes AJAX calls direct to Nova,
>> Glance, and all other services.
>>
>> Yep, this should be a cross project session for the summit.
>>
>> _______________________________________________
>> OpenStack-dev mailing list
>> OpenStack-dev at lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140905/4a9193aa/attachment.html>


More information about the OpenStack-dev mailing list