|
|
|
|
@ -1,4 +1,4 @@
@@ -1,4 +1,4 @@
|
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?> |
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?> |
|
|
|
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" |
|
|
|
|
"../lib/docbook-dtd/docbookx.dtd"> |
|
|
|
|
<book> |
|
|
|
|
@ -910,32 +910,115 @@ public boolean supports(ConfigAttribute attribute);</programlisting></para>
@@ -910,32 +910,115 @@ public boolean supports(ConfigAttribute attribute);</programlisting></para>
|
|
|
|
|
</itemizedlist> |
|
|
|
|
</sect2> |
|
|
|
|
|
|
|
|
|
<sect2> |
|
|
|
|
<title>Authorization Tag Library</title> |
|
|
|
|
|
|
|
|
|
<para>The Acegi Security System for Spring comes bundled with a |
|
|
|
|
JSP tag library that eases JSP writing.</para> |
|
|
|
|
|
|
|
|
|
<sect3> |
|
|
|
|
<title>Installation</title> |
|
|
|
|
</sect3> |
|
|
|
|
|
|
|
|
|
<sect3> |
|
|
|
|
<title>Usage</title> |
|
|
|
|
|
|
|
|
|
<para>The following JSP fragment illustrates how to use the |
|
|
|
|
authz taglib:</para> |
|
|
|
|
|
|
|
|
|
<para><programlisting><authz:authorize ifAllGranted="ROLE_SUPERVISOR"> |
|
|
|
|
<td> |
|
|
|
|
<A HREF="del.htm?id=<c:out value="${contact.id}"/>">Del</A> |
|
|
|
|
</td> |
|
|
|
|
</authz:authorize></programlisting></para> |
|
|
|
|
|
|
|
|
|
<para>What this code says is: if the pricipal has been granted |
|
|
|
|
ROLE_SUPERVISOR, allow the tag's body to be output.</para> |
|
|
|
|
</sect3> |
|
|
|
|
</sect2> |
|
|
|
|
<sect2> |
|
|
|
|
<title>Authorization Tag Library</title> |
|
|
|
|
|
|
|
|
|
<para>The Acegi Security System for Spring comes bundled with a |
|
|
|
|
JSP tag library that eases JSP writing.</para> |
|
|
|
|
|
|
|
|
|
<para>This library simply wraps some bits of Java code, for |
|
|
|
|
easy reuse. The tag library also allows the JSP developer to |
|
|
|
|
determine if a principal has, doesn't have or has any of a |
|
|
|
|
specified set of roles.</para> |
|
|
|
|
|
|
|
|
|
<sect3> |
|
|
|
|
<title>Usage</title> |
|
|
|
|
|
|
|
|
|
<para>The following JSP fragment illustrates how to use the |
|
|
|
|
authz taglib:</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
<programlisting><authz:authorize ifAllGranted="ROLE_SUPERVISOR"> |
|
|
|
|
<td> |
|
|
|
|
<A HREF="del.htm?id=<c:out value="${contact.id}"/>">Del</A> |
|
|
|
|
</td> |
|
|
|
|
</authz:authorize></programlisting> |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para>This code was copied from the Contacts sample |
|
|
|
|
application.</para> |
|
|
|
|
|
|
|
|
|
<para>What this code says is: if the pricipal has been granted |
|
|
|
|
ROLE_SUPERVISOR, allow the tag's body to be output.</para> |
|
|
|
|
</sect3> |
|
|
|
|
|
|
|
|
|
<sect3> |
|
|
|
|
<title>Installation</title> |
|
|
|
|
|
|
|
|
|
<para>Installation is a simple matter-simply copy the |
|
|
|
|
acegi-security-taglib.jar file to your application's |
|
|
|
|
WEB-INF/lib folder. The tag library includes it's TLD, |
|
|
|
|
which makes it easier to work with JSP 1.2+ containers.</para> |
|
|
|
|
|
|
|
|
|
<para>If you are using a JSP 1.1 container, you will need to |
|
|
|
|
declare the JSP tag library in your application's web.xml file, |
|
|
|
|
with code such as this:</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
<programlisting><taglib> |
|
|
|
|
<taglib-uri>http://acegisecurity.sf.net/authz</taglib-uri> |
|
|
|
|
<taglib-location>/WEB-INF/authz.tld</taglib-location> |
|
|
|
|
</taglib></programlisting> |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para>You will also need to extract the authz.tld file from |
|
|
|
|
the acegi-security-taglib.jar file. Use a regular Zip tool, |
|
|
|
|
or use Java's JAR utility.</para> |
|
|
|
|
</sect3> |
|
|
|
|
|
|
|
|
|
<sect3> |
|
|
|
|
<title>Reference</title> |
|
|
|
|
|
|
|
|
|
<para>The |
|
|
|
|
<literal>authz:authorize</literal> tag declares the |
|
|
|
|
following attributes: |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
<itemizedlist spacing="compact"> |
|
|
|
|
<listitem><para> |
|
|
|
|
<literal>ifAllGranted</literal>: All the listed |
|
|
|
|
roles must be granted for the tag to output it's |
|
|
|
|
body. |
|
|
|
|
</para></listitem> |
|
|
|
|
<listitem><para> |
|
|
|
|
<literal>ifAnyGranted</literal>: Any of the |
|
|
|
|
listed roles must be granted for the tag to output |
|
|
|
|
it's body. |
|
|
|
|
</para></listitem> |
|
|
|
|
<listitem><para> |
|
|
|
|
<literal>ifNotGranted</literal>: None of the |
|
|
|
|
listed roles must be granted for the tag to output |
|
|
|
|
it's body. |
|
|
|
|
</para></listitem> |
|
|
|
|
</itemizedlist> |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para>You'll note that in each attribute you can list multiple |
|
|
|
|
roles. Simply separate the roles using a comma. The |
|
|
|
|
<literal>authorize</literal> tag ignores whitespace in |
|
|
|
|
attributes.</para> |
|
|
|
|
|
|
|
|
|
<para>The tag library logically ANDs all of it's parameters |
|
|
|
|
together. This means that if you combine two or more |
|
|
|
|
attributes, they all must be true for the tag to output it's |
|
|
|
|
body. Don't add an |
|
|
|
|
<literal>ifAllGranted="ROLE_SUPERVISOR"</literal>, followed by |
|
|
|
|
an <literal>ifNotGranted="ROLE_SUPERVISOR"</literal>, or |
|
|
|
|
you'll be surprised to never see the tag's body.</para> |
|
|
|
|
|
|
|
|
|
<para>One last item: the tag verifies the authorizations in a |
|
|
|
|
specific order: first <literal>ifNotGranted</literal>, then |
|
|
|
|
<literal>ifAllGranted</literal>, and finally, |
|
|
|
|
<literal>ifAnyGranted</literal>. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para>This might or might not be important to you, depending |
|
|
|
|
on how your authorization scheme is defined, but it allows you |
|
|
|
|
to express concepts like: principal is a SUPERVISOR, but not |
|
|
|
|
a NEWBIE_SUPERVISOR.</para> |
|
|
|
|
</sect3> |
|
|
|
|
</sect2> |
|
|
|
|
</sect1> |
|
|
|
|
|
|
|
|
|
<sect1> |
|
|
|
|
|