I will definitely evaluate enhancing the existing app! Also, once I get a first-go of my changes committed, I'd love some feedback and ideas on making it a great example of how to use JSecurity in a Spring/ Hibernate webapp.

On Feb 26, 2009, at 2:46 PM, Les Hazlewood wrote:

This is awesome. The existing Spring/Hibernate app has almost everything you need to start with, doesn't it? It just doesn't have a front-end. Could you just use that? Or would you want to make a different sample app entirely?

On Thu, Feb 26, 2009 at 2:34 PM, Jeremy Haile <[email protected]> wrote: A bit OT, but I'm planning to create another sample app pretty soon (hopefully this weekend) that I am going to use for a presentation at the DevNexus conference in Atlanta. It's going to be a pure Spring/HIbernate webapp that uses all the latest jazz - Spring, JPA, and JSecurity annotations, wildcard permissions, etc. I would be happy to update the existing sample app at the same time.

Jeremy



On Feb 26, 2009, at 1:11 PM, Les Hazlewood wrote:

Hi Shay - no, you don't have to implement Permission related aspects. You can just use Strings, and JSecurity's default PermissionResolver will translate those Strings into WildcardPermission objects (http://www.jsecurity.org/api/org/jsecurity/authz/permission/WildcardPermission.html ).

You would only need to implement your own Permission class (or subclass WildcardPermission) if you wanted type-safety. I should update the Spring/Hibernate application to do this. Please add a Jira issue if you'd like to see type-safe subclasses - just so we have it tagged and not forgotton.

Cheers,

Les

On Thu, Feb 26, 2009 at 12:41 PM, Shay Matasaro <[email protected]> wrote:
Thanks for the replies guys.

so its up to me to implement all permissions related aspects including wildcards , and instance levels ones, seems a bit tricky ?


I think that the end goal for a security framework should include top to bottom interfaces and *Object *data model (definitely not table schemes , just class and interface definitions) , this approach would still allow developers to wire the framework to any data storage, but the model will enforce proper architecture.

for an experienced developer some of these design decisions , might look simple , but junior and intermediate devs require some guidelines especially when doing first time implementations.



Thanks,
Shay


Les Hazlewood wrote:
Hi Shay,

Daniel is correct. Data models (users, groups, roles, permissions, etc, etc) vary widely across applications - JSecurity can't, and shouldn't, expect or enforce data model APIs on framework end-users.

So, the Realms perform simple translation from an application's data model to what JSecurity expects, in the form of AuthenticationInfo and AuthorizationInfo return values that JSecurity does understand.

When writing an application, I do all CRUD operations for security data - users, roles, etc in a different place - e.g. a UserManager. The Realm implementation just delegates to the UserManager (or similar) to get the data necessary for JSecurity, then transforms it as necessary, and returns it. It stays read- only while the UserManager does read/write/update. Your Realm can interact with a datasource directly too if you want - it is up to you. I just choose to delegate since the UserManager already has a DAO that interacts with the datasource - no need for me to use the datasource APIs in two different places. But it is still your choice dependening on your needs/desires.

If you want a head-start in creating your own data model that will work very well, either with or without JSecurity, take a look at the Spring/Hibernate sample application that ships with JSecurity's distribution. It has User, Role, and Permission objects all queried/saved by Hibernate. Even if you don't use Hibernate, the data model in that sample app will give you ideas.

Cheers,

Les

On Thu, Feb 26, 2009 at 10:50 AM, Daniel J. Lauk <[email protected] <mailto:[email protected]>> wrote:

   Hello, Shay.

AFAIK the JSecurity framework only provides interfaces for "consuming"
   (=reading) information.
(Side note: I'm not sure, if the DAO pattern considers write access in
   the first place)

   Of course, when you write your implementation of the
org.jsecurity.realm.Realm interface you can add such functionality to
   your implementing class.

   Cheers,
   DJ

   2009/2/26 Shay Matasaro <[email protected]
   <mailto:[email protected]>>:

   > Hi Les,
   >
   > Thank you for the prompt reply.
   >
   > i have been reviewing all Realm implementations , but I am
   obviously missing
   > something , since implementing a custom realm only requires
   implementing 2
   > DB queries.
   >
   > what i don't see , is where does the DB persistence take place ,
   i.e.
   > persisting new users, roles, groups , permissions; I assume that
   i need to
   > implements all of these, by extending existing classes.
   >
   > do i have to implement my own token, user, account, role, group
   , etc..?
> or are there specific extension point that i can hook into , without
   > overriding the whole model?
   >
   >
   > Thanks,
   > Shay
   >
   >
   >
   > Les Hazlewood wrote:
   >>
   >> Hi Shay,
   >>
   >> JSecurity can use any data source - it does that by wrapping
   access to
   >> that data source in a Realm implementation:
   >>
   >> http://www.jsecurity.org/api/org/jsecurity/realm/Realm.html
   >>
   >> A Realm is essentially a security-specific DAO, so you can
   communicate
   >> with any back-end you need.  Check out the Sample applications
   in the
   >> JSecurity distribution, as well as some of the Realm
   implementations here:
   >>
   >>
   >>
   
http://svn.apache.org/repos/asf/incubator/jsecurity/trunk/core/src/org/jsecurity/realm/
   >>
   >> Look at the text, jndi, ldap sub packages for ideas, as well as
   the sample
   >> applications that ship with JSecurity's distribution.
   >>
   >> I hope that helps!
   >>
   >> Cheers,
   >>
   >> Les
   >>
   >> On Thu, Feb 26, 2009 at 8:53 AM, Shay Matasaro
   <[email protected] <mailto:[email protected]>
   >> <mailto:[email protected] <mailto:[email protected]>>> wrote:
   >>
   >>    Hi All,
   >>
>> I ran into JSecurity yesterday and it looks very promising, i'd
   >>    like to add it to my web service application.
   >>
>> The only hurdle to cross is the fact that my app uses its own
   >>     "object oriented DB" ; i would therefore like to customize
   >>    Jsecurity to use our own data layer.
   >>
>> is it possible to customize just the low-level db access , and
   >>    allow JSecurity to maintain all the great features that it
   offers
   >>    without rewriting all aspects?
   >>
   >>    if so what is the bare minimum list of objects and
   interfaces that
   >>    i need to extend in order to achieve that goal (this is a
   new app
   >>    , so i don't have to align with any existing table schema).
   >>
>> To the project developers , Great Job! , the library seems very >> simple and easy to use, and after messing about with JAAS for
   >>    awhile , i can really value simplicity.
   >>
   >>    Thanks,
   >>    Shay
   >>
   >>
   >>
   >>
   >
   >







Reply via email to