At Apachecon some Jetspeed and Geronimo committers got together and
discussed Jetspeed 2 - Geronimo security integration a bit. Here's
what I remember: please chime in if you remember more/differently.
People: David Sean Taylor, Ate Douma, Randy Watler, Alan Cabrera,
David Jencks and ???
1. Jetspeed in tomcat is currently creating a separate "jetspeed
subject" because it isn't clear how to get the JAAS subject that
tomcat creates for use in jetspeed security. In geronimo we create a
special Principal that has a reference to the Subject
(JAASTomcatPrincipal). Probably Jetspeed can use the same idea in
Tomcat to get the JAAS subject and avoid the "fake login".
2. IIUC correctly jetspeed security currently requires a login module
to use specific principal classes, and there is a direct mapping
between instances of these classes and jetspeed portal/portlet
permissions. This is not very j2ee-like, at least as geronimo
interprets it :-) In particular it seems excessively restrictive to
require the use of specific principal classes. On the other hand
jetspeed implements an on-the-fly permissions-changing facility that
will take some work to fit into a jacc-like structure. Here is one
way to proceed that I tried to explain and I think got general
agreement that it deserved at least further consideration:
a. In analogy to the role-permissions mapping specified for web apps
and ejbs, set up a role-to-jetspeed-portlet-permissions mapping in a
(presumably xml) jetspeed specific deployment descriptor. With a
suitable deployer this can be fed into a jacc-compliant app server:
in geronimo this can be fed into PolicyConfigurationGeneric. In j2ee
such a mapping is static, part of the original deployment descriptor,
and cannot be changed without redeploying the app. I'm inclined to
think that such a restriction may also work for jetspeed but don't
have enough info for my opinion to count for much. I think
implementing this as a first step would be a good idea.
b. Use the existing geronimo specific role-principal mapping to
connect the principals created by an arbitrary login module with the
roles set up in (a). This would result in jetspeed security being
integrated into the existing geronimo jacc security framework.
However, it would not immediately result in being able to change
permissions without redeploying the application.
c. Investigate how to make this more dynamic. One possibility is to
simply use the jacc facilities, which involve opening the policy
configuration (at which point it is taken out of service and no
requests can get through), modifying it, and committing the changes
(at which time it is put back into service and the new policy rules
are in force). It is not entirely clear to me if the requests made
while the configuration is open can be made to wait or if they must
be refused. I do think that some kind of transactional change
mechanism is needed so that many changes can be made in one operation.
If anyone finds what I am talking about unclear please ask questions,
I will be happy to try to explain in more detail.
Many thanks,
david jencks