index.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <document><properties><title>Acegi Security System for Spring</title></properties><body><section name=""><b></b><center><b>What is Acegi Security?</b></center></section><section name=""><br></br><p>
  3. Acegi Security is a powerful, flexible security solution for enterprise software,
  4. with a particular emphasis on applications that use
  5. <a href="http://www.springframework.org/">Spring</a>. Using Acegi Security provides your
  6. applications with comprehensive authentication, authorization, instance-based access control,
  7. channel security and human user detection capabilities.
  8. </p><br></br></section><section name=""><b></b><center><b>Key Features</b></center></section><section name=""><br></br><ul>
  9. <li><b>Stable and mature.</b> Acegi Security 1.0.0 was released in May 2006 after
  10. more than two and a half years of use in large production software projects, 70,000+ downloads
  11. and hundreds of community contributions.
  12. In terms of release numbering, we also use the <a href="http://apr.apache.org/versioning.html">Apache APR Project
  13. Versioning Guidelines</a> so that you can easily identify release
  14. compatibility.<br></br><br></br>
  15. </li><li><b>Well documented:</b> All APIs are fully documented using
  16. <a href="http://acegisecurity.sourceforge.net/multiproject/acegi-security/apidocs/index.html">JavaDoc</a>,
  17. with almost 100 pages of
  18. <a href="reference.html">Reference Guide</a> documentation providing an easy-to-follow
  19. introduction. Even more documentation is provided on this web site, as
  20. shown in the left hand navigation sidebar.<br></br><br></br>
  21. </li><li><b>Fast results:</b> View our <a href="suggested.html">suggested steps</a>
  22. for the fastest way to develop complex, security-compliant applications.<br></br><br></br>
  23. </li><li><b>Enterprise-wide single sign on:</b> Using JA-SIG's open
  24. source <a href="http://www.ja-sig.org/products/cas/">Central Authentication
  25. Service</a> (CAS), the Acegi Security can participate
  26. in an enterprise-wide single sign on environment. You no longer need
  27. every web application to have its own authentication database. Nor are
  28. you restricted to single sign on across a single web container. Advanced
  29. single sign on features like proxy support and forced refresh of logins
  30. are supported by both CAS and Acegi Security.<br></br><br></br>
  31. </li><li><b>Reuses your Spring expertise:</b> We use Spring application
  32. contexts for all configuration, which should help Spring developers get
  33. up-to-speed nice and quickly.<br></br><br></br>
  34. </li><li><b>Domain object instance security:</b> In many applications it's
  35. desirable to define Access Control Lists (ACLs) for individual domain
  36. object instances. We provide a comprehensive ACL package with features
  37. including integer bit masking, permission inheritence (including
  38. blocking), a JDBC-backed ACL repository, caching and a pluggable,
  39. interface-driven design.<br></br><br></br>
  40. </li><li><b>Non-intrusive setup:</b> The entire security system can operate
  41. within a single web application using the provided filters. There is no
  42. need to make special changes or deploy libraries to your Servlet or EJB
  43. container.<br></br><br></br>
  44. </li><li><b>Full (but optional) container integration:</b> The credential
  45. collection and authorization capabilities of your Servlet or EJB
  46. container can be fully utilised via included "container adapters". We
  47. currently support Catalina (Tomcat), Jetty, JBoss and Resin, with
  48. additional containers easily added.<br></br><br></br>
  49. </li><li><b>Keeps your objects free of security code:</b> Many applications
  50. need to secure data at the bean level based on any combination of
  51. parameters (user, time of day, authorities held, method being invoked,
  52. parameter on method being invoked....). This package gives you this
  53. flexibility without adding security code to your Spring business
  54. objects.<br></br><br></br>
  55. </li><li><b>After invocation security:</b> Acegi Security can not only protect
  56. methods from being invoked in the first place, but it can also
  57. deal with the objects returned from the methods. Included implementations
  58. of after invocation security can throw an exception or mutate the returned
  59. object based on ACLs.<br></br><br></br>
  60. </li><li><b>Secures your HTTP requests as well:</b> In addition to securing
  61. your beans, the project also secures your HTTP requests. No longer is it
  62. necessary to rely on web.xml security constraints. Best of all, your
  63. HTTP requests can now be secured by your choice of regular expressions
  64. or Apache Ant paths, along with pluggable authentication, authorization
  65. and run-as replacement managers.<br></br><br></br>
  66. </li><li><b>Channel security:</b> Acegi Security can
  67. automatically redirect requests across an appropriate transport channel.
  68. Whilst flexible enough to support any of your "channel" requirements (eg
  69. the remote user is a human, not a robot), a common channel security
  70. feature is to ensure your secure pages will only be available over
  71. HTTPS, and your public pages only over HTTP. Acegi Security also
  72. supports unusual port combinations (including if accessed via an
  73. intermediate server like Apache) and pluggable transport decision
  74. managers.<br></br><br></br>
  75. </li><li><b>Supports HTTP BASIC authentication:</b> Perfect for remoting
  76. protocols or those web applications that prefer a simple browser pop-up
  77. (rather than a form login), Acegi Security can directly process HTTP
  78. BASIC authentication requests as per RFC 1945.<br></br><br></br>
  79. </li><li><b>Supports HTTP Digest authentication:</b> For greater security than
  80. offered by BASIC authentcation, Acegi Security also supports Digest Authentication
  81. (which never sends the user's password across the wire). Digest Authentication
  82. is widely supported by modern browsers. Acegi Security's implementation complies
  83. with both RFC 2617 and RFC 2069.<br></br><br></br>
  84. </li><li><b>Computer Associates Siteminder support:</b> Authentication can be
  85. delegated through to CA's Siteminder solution, which is common in large
  86. corporate environments.<br></br><br></br>
  87. </li><li><b>X509 (Certificate) support:</b> Acegi Security can easily read
  88. client-side X509 certificates for authenticating users.<br></br><br></br>
  89. </li><li><b>LDAP Support:</b> Do you have an LDAP directory? Acegi Security can
  90. happily authenticate against it.<br></br><br></br>
  91. </li><li><b>Tag library support:</b> Your JSP files can use our taglib
  92. to ensure that protected content like links and messages are only
  93. displayed to users holding the appropriate granted authorities. The taglib
  94. also fully integrates with Acegi Security's ACL services, and
  95. obtaining extra information about the logged-in principal.<br></br><br></br>
  96. </li><li><b>Configuration via IoC XML, Commons Attributes, or JDK 5 Annotations:</b> You
  97. select the method used to configure your security environment. The
  98. project supports configuration via Spring application contexts, as well
  99. as Jakarta Commons Attributes and Java 5's annotations feature. Some users
  100. (such as those building content management systems) pull configuration data
  101. from a database, which exemplifies Acegi Security's flexible configuration
  102. metadata system.<br></br><br></br>
  103. </li><li><b>Various authentication backends:</b> We include the ability to
  104. retrieve your user and granted authority definitions from an XML
  105. file, JDBC datasource or Properties file. Alternatively, you can implement the
  106. single-method UserDetailsService interface and obtain authentication details from
  107. anywhere you like.<br></br><br></br>
  108. </li><li><b>Event support:</b> Building upon Spring's
  109. <code>ApplicationEvent</code> services, you can write your own listeners
  110. for authentication-related events, along with authorisation-related events.
  111. This enables you to implement account lockout and audit log systems, with
  112. complete decoupling from Acegi Security code.<br></br><br></br>
  113. </li><li><b>Easy integration with existing databases:</b> Our implementations
  114. have been designed to make it very easy to use your existing
  115. authentication schema and data (without modification). Of course,
  116. you can also provide your own Data Access Object if you wish.<br></br><br></br>
  117. </li><li><b>Caching:</b> Acegi Security integrates with Spring's <a href="http://ehcache.sourceforge.net/">EHCACHE</a> factory.
  118. This flexibility means your database (or other authentication
  119. repository) is not repeatedly queried for authentication
  120. information.<br></br><br></br>
  121. </li><li><b>Pluggable architecture:</b> Every critical aspect of the package
  122. has been modelled using high cohesion, loose coupling, interface-driven
  123. design principles. You can easily replace, customise or extend parts of
  124. the package.<br></br><br></br>
  125. </li><li><b>Startup-time validation:</b> Every critical object dependency and
  126. configuration parameter is validated at application context startup
  127. time. Security configuration errors are therefore detected early and
  128. corrected quickly.<br></br><br></br>
  129. </li><li><b>Remoting support:</b> Does your project use a rich client? Not a
  130. problem. Acegi Security integrates with standard Spring remoting
  131. protocols, because it automatically processes the HTTP BASIC
  132. authentication headers they present. Add our BASIC authentication filter
  133. to your web.xml and you're done. You can also easily use RMI or Digest
  134. authentication for your rich clients with a simple configuration statement.<br></br><br></br>
  135. </li><li><b>Advanced password encoding:</b> Of course, passwords in your
  136. authentication repository need not be in plain text. We support both SHA
  137. and MD5 encoding, and also pluggable "salt" providers to maximise
  138. password security. Acegi Security doesn't even need to see the password
  139. if your backend can use a bind-based strategy for authentication (such as
  140. an LDAP directory, or a database login).<br></br><br></br>
  141. </li><li><b>Run-as replacement:</b> The system fully supports
  142. temporarily replacing the authenticated principal for the duration of the web
  143. request or bean invocation. This enables you to build public-facing
  144. object tiers with different security configurations than your backend
  145. objects.<br></br><br></br>
  146. </li><li><b>Transparent security propagation:</b> Acegi Security can automatically
  147. transfer its core authentication information from one machine to another,
  148. using a variety of protocols including RMI and Spring's HttpInvoker.<br></br><br></br>
  149. </li><li><b>Compatible with HttpServletRequest's security methods:</b> Even though
  150. Acegi Security can deliver authentication using a range of pluggable mechanisms
  151. (most of which require no web container configuration), we allow you to access
  152. the resulting Authentication object via the getRemoteUser() and other
  153. security methods on HttpServletRequest.<br></br><br></br>
  154. </li><li><b>Unit tests:</b> A must-have of any quality security project, unit
  155. tests are included. Our unit test coverage is very high, as shown in the
  156. <a href="multiproject/acegi-security/clover/index.html">coverage report</a>.<br></br><br></br>
  157. </li><li><b>Built by Maven:</b> This assists you in effectively reusing the Acegi
  158. Security artifacts in your own Maven-based projects.<br></br><br></br>
  159. </li><li><b>Supports your own unit tests:</b> We provide a number of classes
  160. that assist with your own unit testing of secured business objects. For
  161. example, you can change the authentication identity and its associated
  162. granted authorities directly within your test methods.<br></br><br></br>
  163. </li><li><b>Peer reviewed:</b> Whilst nothing is ever completely secure,
  164. using an open source security package leverages the continuous design
  165. and code quality improvements that emerge from peer review.<br></br><br></br>
  166. </li><li><b>Community:</b> Well-known for its supportive community, Acegi Security
  167. has an active group of developers and users. Visit our project resources (below)
  168. to access these services.<br></br><br></br>
  169. </li><li><b>Apache license.</b> You can confidently use Acegi Security in your project.<br></br><br></br></li></ul><br></br><b>
  170. <hr></hr>
  171. </b><center><b>Project Resources</b></center></section><section name=""><br></br><center>
  172. <a href="http://forum.springframework.org/"><b>Support Forums</b></a><br></br><br></br>
  173. <a href="mail-lists.html"><b>Developer Mailing List</b></a><br></br><br></br>
  174. <a href="downloads.html"><b>Downloads</b></a>
  175. </center></section></body></document>