[seam-dev] Seam Hack Night - Seam Security

Shane Bryzak sbryzak at redhat.com
Tue Aug 9 23:28:33 EDT 2011


Hey guys,

Sorry about the delay in getting this list of items to work on for the 
next Seam Hack night - I've come down with the flu and it's hard to get 
any work done when it feels like an elephant is sitting on your head.  
Anyways, the two main areas I'd like us to work on for Seam Security are 
Identity Management and ACLs/Permission Management.  In the area of 
Identity Management, there's a number of JIRA issues relating to 
JpaIdentityStore, and I'd also like to show some love for our 
integration with PicketLink's LDAP Identity Store too.  For ACL 
security, we are actually missing this feature altogether in Seam 3.0 
(it existed in Seam 2) simply because I ran out of time to port it over 
in time for the 3.0 release.  For anyone that doesn't know, ACL security 
provides you the ability to grant permissions on individual objects in 
your application, whether they be entity beans or whatever.

To assist us in effectively organising who does which work, I'll give 
each task a unique number.  If you'd like to volunteer for certain 
task/s, please do so earlier rather than later - first in first served!

JpaIdentityStore issues
==============

1) SEAMSECURITY-62 Using identity management to add user in group 
prevent user to login
https://issues.jboss.org/browse/SEAMSECURITY-62

   This issue has a comprehensive description and someone has attached a 
patch.

2) SEAMSECURITY-64 Provide the capability to retrieve the actual entity 
object when a user is created
https://issues.jboss.org/browse/SEAMSECURITY-64

   We had this feature in Seam 2, however since we're now using 
PicketLink in Seam 3 it is a little more challenging to implement this.  
I don't have any solid ideas as yet, however it would be ideal if we 
could fire an event for this somehow.

3) SEAMSECURITY-65 Criteria queries executed by JPAIdentityStore are not 
setup properly
https://issues.jboss.org/browse/SEAMSECURITY-65

   We seem to be missing a select() call for the Criteria queries, 
should be easy to fix this one.

4) SEAMSECURITY-70 Calling RoleManager.removeRole(Roletype rt, User u, 
Group g) throws an NPE
https://issues.jboss.org/browse/SEAMSECURITY-70

   Should be an easy fix, as the reporter has included a solution.

5) SEAMSECURITY-84 identity.hasRole and identity.addRole do not seem to 
be interacting with JpaStore
https://issues.jboss.org/browse/SEAMSECURITY-84

   This one might take a little detective work to reproduce.  A user 
within an application that uses Identity Management should have their 
roles populated in Identity.roles automatically when they authenticate.  
One thing to note is that the reporter's assertion at the end of the 
issue description about identity.addRole() adding the role to the 
database is incorrect - persistent roles should only be added through 
the role manager.

6) SEAMSECURITY-69
https://issues.jboss.org/browse/SEAMSECURITY-69

   This one might take a little bit of analysis also - possibly the 
cause is an unimplemented method in JpaIdentityStore.

LDAP Identity Store issues
================

7) SEAMSECURITY-71 Improve LDAP integration in general
https://issues.jboss.org/browse/SEAMSECURITY-71

   This one is quite a bit of work.  The actual LDAP Identity Store 
class is part of PicketLink, so we can't make any direct changes to it.  
What we can do however, is ease the configuration process.  We currently 
have a configuration bean for JpaIdentityStore (called 
JpaIdentityStoreConfiguration), that can be used to configure the 
Identity Store via Seam Config.  It would be nice to have an equivalent 
class for the LDAP Identity Store.  Whoever works on this task will need 
to become familiar with the LDAP configuration in PicketLink.  Any work 
done in this area would also require documentation in the Seam Security 
reference guide.

8) Example application that demonstrates authentication via LDAP

   This goes hand in hand with 7).  I don't know if we'll have enough 
time to implement a full example, however it would be nice to have a 
basic functioning app that we could point people to.

ACL Security
========

9) Implement PersistentPermissionResolver

   This class has been "ported" from Seam 2, however it's currently not 
functional (I think a lot of the code may even be commented out).  This 
is an advanced task, so only volunteer for this one if you feel you're 
up to the challenge.  One of the biggest issues is how we identify 
users.  In Seam 2 this was simple, because all users were local and 
usernames were unique.  In Seam 3 however, we can now have either local 
users or external users, thanks to OpenID and SAML authentication.

10) Example app for ACL security

   Goes with 9), we need an example application to demonstrate ACL security.

11) SEAMSECURITY-13 Custom EntityIdentifierStrategy ignored by 
IdentifierPolicy
https://issues.jboss.org/browse/SEAMSECURITY-13

   If 9) gets done, then this issue probably needs to be addressed also.

Misc
====

12) SEAMSECURITY-66 Separated API/IMPL jars do not allow compilation of 
the SimpleAuthenticator example
https://issues.jboss.org/browse/SEAMSECURITY-66

   Quite an unusual issue, which may have already been solved thanks to 
the removal of the combined jar.  Someone needs to test this and close 
the issue if it's out of date.

13) SEAMSECURITY-52 security-authorization example - IAE on logout
https://issues.jboss.org/browse/SEAMSECURITY-52

   Marek has suggested that this is related to SEAMSECURITY-22, which 
brings us to...

14) SEAMSECURITY-22 Basic authentication with no security drools and no 
picketlink defined in seam-beans.xml throws exception
https://issues.jboss.org/browse/SEAMSECURITY-22

   Like 13), I think this has to do with the location of the 
security.drl file.  We should standardise the location of the 
security.drl file, so someone needs to research the injectable resources 
feature in Solder and determine where the best place is to put this file.

Documentation
=========

15) SEAMSECURITY-78 Typos in documentation
https://issues.jboss.org/browse/SEAMSECURITY-78

   Jozef has identified a couple of minor typos that need to be fixed.

16) SEAMSECURITY-51 A readme.txt points to incorrect url of 
security-openid-rp example
https://issues.jboss.org/browse/SEAMSECURITY-51

   Martin has noticed that the URL in the readme file for this example 
is wrong.



If anyone has any questions about these tasks, or any suggestions, 
please feel free to bring them up on seam-dev.

Thanks!
Shane











More information about the seam-dev mailing list