Several identity questions
Andrew Petro
andrew.petro at yale.edu
Wed Feb 15 21:24:21 EST 2006
Steve,
>Hopefully I didn't miss the answers to these in the archives...
>
>If you configure CAS to authenticate against different backend stores
>such as multiple LDAP directories, or LDAP and an oracle table, does
>the CAS protocol define any way to identify the "realm" the user was
>authenticated from?
>
>
No. The CAS protocol expresses a basically arbitrary String username.
You can, of course, encode anything you'd like into the username, such
as username at realm.
>Assuming multiple methods of authenticating the user are configured,
>can an application determine which method was used? ie some
>application requires that PKI was used and can verify that through
>the CAS server?
>
>
No, the CAS protocol doesn't provide any way to do this.
>Last question involves a setup using multiple backends. Does CAS have
>any feature to allow "friend" accounts that non-community members
>could register for? Example: I could try and access something at
>Yale, and CAS would let me create an account using my dartmouth.edu
>email as a username and grant me a Yale CAS token to present to Yale
>webapps. It would then be up to the web app to allow me access or not
>depending on the authorization rules of that app and assuming some
>kind of "realm" info was available to the web applications.
>
>
User registration is out of scope of CAS. CAS authenticates credentials
against the configured authenticators.
All of what you describe is implementable. One could write a user
registration web application sitting along side CAS for creation of
"friend" accounts, bootstrapping the account from an email address.
Having created such an account, CAS would be just as happy to
authenticate that user as any other so long as the username password
pair for stephen.a.cochran at dartmouth.edu checks out. So then you, as a
"friend", would be able to obtain a service ticket for this authentication.
On ticket validation, a filter or other logic examining the declared
service and the username could filter back out "friend" users from
applications not equipped to cope with usernames other than local userids.
On ticket validation, the response payload could be enhanced for
services known to be interested in additional information about how the
user was authenticated, against which realm the user was authenticated, etc.
All of this is feasible; none of it is included out of the box.
Shibboleth and SAML also apply to these kinds of problems -- if you're
looking for a simple, flexible, n-tier authentication system for your
local university, I'd suggest CAS is the way to go. If you're serious
about cross-realm authentication and extremely detailed
characterizations of how the user has authenticated, Shibboleth and SAML
assertions become important.
Howard Gilbert has convinced me in the past (and I think he's still
thinking this) that there's a place for using CAS as the bridge from the
universal power and complexity of Shibboleth to the locally appropriate
simplicity of applied policy and distilling the authentication down to
the username. That is, that one could usefully front CAS with
Shibboleth authentication. You would visit my application, click the
login button, it would redirect you to Yale CAS, you would click
"authenticate me via Dartmouth Shib" using some kind of WAYF, and you'd
authenticate via the Dartmouth handle server etc. to Yale CAS, which
would receive authentication and attribute assertions and then apply
Yale-local policy to determine whether and how these credentials entitle
you to access the Yale application you're trying to access.
This would have the nice consequence that the same APIs and libraries
that developers use to CASify applications become applicable for
authenticating cross-realm users, keeping the additional complexity
beyond the CAS abstraction boundary.
To my knowledge, no one has actually done any of this yet.
I'd be interested in exploring further the requirements / use cases that
are driving your questions. There's potential in CAS learning to expose
some SAML for expressing more details about how users have authenticated
for applications prepared to accept them. this is something we've
discussed in the past. Maybe you have some requirements that can help
guide this development.
Andrew
More information about the cas
mailing list