From: Pete Muir <pmuir(a)redhat.com>
Subject: DeltaSpike, IDM, Authentication and Authorization
Date: 27 July 2012 15:17:42 GMT+01:00
To: security-dev(a)lists.jboss.org
Until recently, it looked like Apache DeltaSpike would define an IDM API, but now it
looks like most people are in agreement that DeltaSpike should not cover IDM.
http://apache-deltaspike-incubator-discussions.2316169.n4.nabble.com/IDM-...
It would still provide an API and SPI for authentication and authorization, as defined in
http://incubator.apache.org/deltaspike/security.html
Does it matter that DeltaSpike won't do IDM?
------------------------------------------------------------
The big reason for us to do things in DeltaSpike, is to give our users a portable way to
write applications. As DeltaSpike is a collaborative project between individuals and
companies, there is lots of effort put into ensuring portability, and provides a good
vendor neutral location to do that. If we consider where portability matters:
* in application code, typically measured by the number of classes, views etc. in a
typical application that must be changed to move between frameworks/libraries/runtimes
* in configuration, typically measured by number of files that must be altered to move
between frameworks/libraries/runtimes
Typically the number of classes is much greater than the number of configuration files.
We can use this to "measure" how much portability matters for a given topic, by
looking at the number of files that must be changed to move between
frameworks/libraries/runtimes.
Taking our security topics:
* Authentication: typically impacts a low number of classes and views. Some configuration
required. Portability doesn't matter too much
* Authorization: typically impacts most classes and views. Portability is critical.
* Identity Management: typically impacts very a very few classes, and some configuration.
Perhaps the only real impact on code is accessing user information for display (e.g. the
classic "Welcome Pete"). This can easily be encapsulated by a single application
class, and is perhaps a pattern we should recommend
Therefore, we can see that whilst portability in IDM would be nice, it's not
critical.
Do we (JBoss) need IDM? Is there a demand for IDM in the community?
-------------------------------------------------------------------------------------------------
I believe the short answer, and one we are all agreed on, is yes and yes :-)
How do we move forward?
------------------------------------
The proposal is that we rehouse the IDM work done by Shane so far in PicketLink IDM [1].
This would consist of:
* An IDM API
* An IDM SPI (to allow IDM providers to be written)
* An IDM impl (which loads the relevant provider and delegates calls to it)
* A set of providers for the SPI such as JPA, LDAP etc.
Both of these would be plain Java SE implementations, with minimal dependencies to allow
maximum reuse by other JBoss projects.
Furthermore, we would provide PicketLink CDI, which would provide an implementation of
the authorization and authentication provider SPIs in DeltaSpike, that use the IDM
backend. The module would also contain authorization providers for the various
authorization frameworks PicketLink supports, as well provide authentication API
implementations as needed.
When will this be ready?
--------------------------------
I'll let Shane chime in here, but I hope we can get something out fast, as we have a
lot of code today.
Thoughts?
Pete