From fcd28d4473c809b99365cb263207f30ca2b40715 Mon Sep 17 00:00:00 2001 From: Shane Bryzak Date: Wed, 16 Mar 2011 14:54:04 +1000 Subject: [PATCH] documentation improvements --- .../en-US/images/security-picketlink-api.png | Bin 0 -> 71069 bytes docs/src/main/docbook/en-US/master.xml | 2 +- .../docbook/en-US/security-authorization.xml | 131 +++++++++++++++--- examples/authorization/pom.xml | 6 +- 4 files changed, 119 insertions(+), 20 deletions(-) create mode 100644 docs/src/main/docbook/en-US/images/security-picketlink-api.png diff --git a/docs/src/main/docbook/en-US/images/security-picketlink-api.png b/docs/src/main/docbook/en-US/images/security-picketlink-api.png new file mode 100644 index 0000000000000000000000000000000000000000..36c21019fe40786420d0798f68c82c0b2f6475dd GIT binary patch literal 71069 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 AsQ>@~ literal 0 HcmV?d00001 diff --git a/docs/src/main/docbook/en-US/master.xml b/docs/src/main/docbook/en-US/master.xml index 6be765c..8d3d6ac 100644 --- a/docs/src/main/docbook/en-US/master.xml +++ b/docs/src/main/docbook/en-US/master.xml @@ -9,8 +9,8 @@ + - diff --git a/docs/src/main/docbook/en-US/security-authorization.xml b/docs/src/main/docbook/en-US/security-authorization.xml index 0bd9ab6..94a3ef0 100755 --- a/docs/src/main/docbook/en-US/security-authorization.xml +++ b/docs/src/main/docbook/en-US/security-authorization.xml @@ -8,13 +8,13 @@ Basic Concepts - Seam Security provides a number of options for restricting access to certain parts of your application. As mentioned + Seam Security provides a number of facilities for restricting access to certain parts of your application. As mentioned previously, the security API is centered around the Identity bean, which is a session-scoped bean used to represent the identity of the current user. - To be able to restrict the sensitive parts of your code, you must first inject the Identity bean into your class: + To be able to restrict the sensitive parts of your code, you may inject the Identity bean into your class: @@ -25,28 +25,68 @@ - The security model in Seam Security is based upon the PicketLink API. Let's examine a few of the core classes provided by - PicketLink that are used in Seam. + The security model in Seam Security is based upon the PicketLink API. Let's briefly examine a few of the core interfaces + provided by PicketLink that are used in Seam. + + + + + + + + +

IdentityType - Fully qualified class: org.picketlink.idm.api.IdentityType + This is the common base interface for both User and Group. The getKey() + method should return a unique identifying value for the identity type. +
+ +
+ User + - This is the common base interface for both User and Group. It declares a single method - called getKey(): + Represents a user. The getId() method should return a unique value for each user. +
+ +
+ Group - - - + + Represents a group. The getName() method should return the name of the group, while the + getGroupType() method should return the group type. + + +
+ +
+ Role + + + Represents a role, which is a direct one-to-one typed relationship between a User and a Group. The + getRoleType() method should return the role type. The getUser() method + should return the User for which the role is assigned, and the getGroup() method should + return the Group that the user is associated with. + + +
+ +
+ RoleType + + + Represents a role type. The getName() method should return the name of the role type. + Some examples of role types might be admin, superuser, + manager, etc. + +
@@ -64,15 +104,74 @@ The concept of a role in Seam Security is based upon the model defined by PicketLink. I.e, a role - membership consists of three aspects - a member, a role name and a group. For example, user Bob - (the member) may be an admin (the role name) user in the HEAD OFFICE group. + is a direct relationship between a user and a group, which consists of three aspects - a member, a role name and a + group (see the class diagram above). + For example, user Bob (the member) may be an admin (the role name) + user in the HEAD OFFICE group. - To perform a role-check, inject + The Identity bean provides the following two methods for checking role membership: + + + + + + These two methods are similar in function, and both accept the same parameter values. Their behaviour differs + when an authorization check fails. The hasRole() returns a value of false when the + current user is not a member of the specified role. The checkRole() method on the other hand, + will throw an AuthorizationException. Which of the two methods you use will depend on your + requirements. + + + + The following code listing contains a usage example for the hasRole() method: + + + + + Groups can be used to define a collection of users that meet some common criteria. For example, an + application might use groups to define users in different geographical locations, their role in the company, + their department or division or some other criteria which may be significant from a security point of view. + As can be seen in the above class diagram, groups consist of a unique combination of group name and group type. + Some examples of group types may be "OFFICE", "DEPARTMENT", "SECURITY_LEVEL", etc. An individual user may + belong to many different groups. + + + The Identity bean provides the following methods for checking group membership: + + + + + + These methods are similar in behaviour to the role-specific methods above. The inGroup() method + returns a value of false when the current user isn't in the specified group, and the + checkGroup() method will throw an exception. + + + + +
+ Rule-based permissions + + + + + + +
+ +
+ Typesafe authorization + +
diff --git a/examples/authorization/pom.xml b/examples/authorization/pom.xml index d78613e..fd17983 100644 --- a/examples/authorization/pom.xml +++ b/examples/authorization/pom.xml @@ -60,12 +60,12 @@ org.jboss.seam.faces - seam-faces-api + seam-faces - org.jboss.seam.faces - seam-faces-impl + joda-time + joda-time