modules.adoc 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. // FIXME: This might make sense in Getting Spring Security along with the artifact information
  2. [[modules]]
  3. = Project Modules and Dependencies
  4. In Spring Security 3.0, the codebase was sub-divided into separate jars which more clearly separate different functionality areas and third-party dependencies.
  5. If you use Maven to build your project, these are the modules you should add to your `pom.xml`.
  6. Even if you do not use Maven, we recommend that you consult the `pom.xml` files to get an idea of third-party dependencies and versions.
  7. Another good idea is to examine the libraries that are included in the sample applications.
  8. This section provides a reference of the modules in Spring Security and the additional dependencies that they require in order to function in a running application.
  9. We do not include dependencies that are used only when building or testing Spring Security itself.
  10. Nor do we include transitive dependencies that are required by external dependencies.
  11. The version of Spring required is listed on the project website, so the specific versions are omitted for Spring dependencies in the examples.
  12. Note that some of the dependencies listed as "`optional`" in the examples may still be required for other non-security functionality in a Spring application
  13. Also dependencies listed as "`optional`" may not actually be marked as such in the project's Maven POM files if they are used in most applications.
  14. They are "`optional`" only in the sense that you do not need them unless you use the specified functionality.
  15. Where a module depends on another Spring Security module, the non-optional dependencies of the module it depends on are also assumed to be required and are not listed separately.
  16. [[spring-security-core]]
  17. == Core -- `spring-security-core.jar`
  18. This module contains core authentication and access-control classes and interfaces, remoting support, and basic provisioning APIs.
  19. It is required by any application that uses Spring Security.
  20. It supports standalone applications, remote clients, method (service layer) security, and JDBC user provisioning.
  21. It contains the following top-level packages:
  22. * `org.springframework.security.core`
  23. * `org.springframework.security.access`
  24. * `org.springframework.security.authentication`
  25. * `org.springframework.security.provisioning`
  26. .Core Dependencies
  27. |===
  28. | Dependency | Version | Description
  29. | ehcache
  30. | 1.6.2
  31. | Required if the Ehcache-based user cache implementation is used (optional).
  32. | spring-aop
  33. |
  34. | Method security is based on Spring AOP
  35. | spring-beans
  36. |
  37. | Required for Spring configuration
  38. | spring-expression
  39. |
  40. | Required for expression-based method security (optional)
  41. | spring-jdbc
  42. |
  43. | Required if using a database to store user data (optional).
  44. | spring-tx
  45. |
  46. | Required if using a database to store user data (optional).
  47. | aspectjrt
  48. | 1.6.10
  49. | Required if using AspectJ support (optional).
  50. | jsr250-api
  51. | 1.0
  52. | Required if you are using JSR-250 method-security annotations (optional).
  53. |===
  54. [[spring-security-remoting]]
  55. == Remoting -- `spring-security-remoting.jar`
  56. This module provides integration with Spring Remoting.
  57. You do not need this unless you are writing a remote client that uses Spring Remoting.
  58. The main package is `org.springframework.security.remoting`.
  59. .Remoting Dependencies
  60. |===
  61. | Dependency | Version | Description
  62. | spring-security-core
  63. |
  64. |
  65. | spring-web
  66. |
  67. | Required for clients which use HTTP remoting support.
  68. |===
  69. [[spring-security-web]]
  70. == Web -- `spring-security-web.jar`
  71. This module contains filters and related web-security infrastructure code.
  72. It contains anything with a servlet API dependency.
  73. You need it if you require Spring Security web authentication services and URL-based access-control.
  74. The main package is `org.springframework.security.web`.
  75. .Web Dependencies
  76. |===
  77. | Dependency | Version | Description
  78. | spring-security-core
  79. |
  80. |
  81. | spring-web
  82. |
  83. | Required for clients that use HTTP remoting support.
  84. | spring-jdbc
  85. |
  86. | Required for a JDBC-based persistent remember-me token repository (optional).
  87. | spring-tx
  88. |
  89. | Required by remember-me persistent token repository implementations (optional).
  90. |===
  91. [[spring-security-config]]
  92. == Config -- `spring-security-config.jar`
  93. This module contains the security namespace parsing code and Java configuration code.
  94. You need it if you use the Spring Security XML namespace for configuration or Spring Security's Java Configuration support.
  95. The main package is `org.springframework.security.config`.
  96. None of the classes are intended for direct use in an application.
  97. .Config Dependencies
  98. |===
  99. | Dependency | Version | Description
  100. | spring-security-core
  101. |
  102. |
  103. | spring-security-web
  104. |
  105. | Required if you are using any web-related namespace configuration (optional).
  106. | spring-security-ldap
  107. |
  108. | Required if you are using the LDAP namespace options (optional).
  109. | aspectjweaver
  110. | 1.6.10
  111. | Required if using the protect-pointcut namespace syntax (optional).
  112. |===
  113. [[spring-security-ldap]]
  114. == LDAP -- `spring-security-ldap.jar`
  115. This module provides LDAP authentication and provisioning code.
  116. It is required if you need to use LDAP authentication or manage LDAP user entries.
  117. The top-level package is `org.springframework.security.ldap`.
  118. .LDAP Dependencies
  119. |===
  120. | Dependency | Version | Description
  121. | spring-security-core
  122. |
  123. |
  124. | spring-ldap-core
  125. | 1.3.0
  126. | LDAP support is based on Spring LDAP.
  127. | spring-tx
  128. |
  129. | Data exception classes are required.
  130. | apache-ds
  131. | 1.5.5
  132. | Required if you are using an embedded LDAP server (optional). If you use `apache-ds`, the `apacheds-core`, `apacheds-core-entry`, `apacheds-protocol-shared`, `apacheds-protocol-ldap` and `apacheds-server-jndi` modules are required.
  133. | shared-ldap
  134. | 0.9.15
  135. | Required if you are using an embedded LDAP server (optional).
  136. | ldapsdk
  137. | 4.1
  138. | Mozilla LdapSDK.
  139. Used for decoding LDAP password policy controls if you are using password-policy functionality with OpenLDAP, for example.
  140. |===
  141. [[spring-security-oauth2-core]]
  142. == OAuth 2.0 Core -- `spring-security-oauth2-core.jar`
  143. `spring-security-oauth2-core.jar` contains core classes and interfaces that provide support for the OAuth 2.0 Authorization Framework and for OpenID Connect Core 1.0.
  144. It is required by applications that use OAuth 2.0 or OpenID Connect Core 1.0, such as client, resource server, and authorization server.
  145. The top-level package is `org.springframework.security.oauth2.core`.
  146. [[spring-security-oauth2-client]]
  147. == OAuth 2.0 Client -- `spring-security-oauth2-client.jar`
  148. `spring-security-oauth2-client.jar` contains Spring Security's client support for OAuth 2.0 Authorization Framework and OpenID Connect Core 1.0.
  149. It is required by applications that use OAuth 2.0 or OpenID Connect Core 1.0, such as the client, the resource server, and the authorization server.
  150. The top-level package is `org.springframework.security.oauth2.core`.
  151. [[spring-security-oauth2-jose]]
  152. == OAuth 2.0 JOSE -- `spring-security-oauth2-jose.jar`
  153. `spring-security-oauth2-jose.jar` contains Spring Security's support for the JOSE (Javascript Object Signing and Encryption) framework.
  154. The JOSE framework is intended to provide a method to securely transfer claims between parties.
  155. It is built from a collection of specifications:
  156. * JSON Web Token (JWT)
  157. * JSON Web Signature (JWS)
  158. * JSON Web Encryption (JWE)
  159. * JSON Web Key (JWK)
  160. It contains the following top-level packages:
  161. * `org.springframework.security.oauth2.jwt`
  162. * `org.springframework.security.oauth2.jose`
  163. [[spring-security-oauth2-resource-server]]
  164. == OAuth 2.0 Resource Server -- `spring-security-oauth2-resource-server.jar`
  165. `spring-security-oauth2-resource-server.jar` contains Spring Security's support for OAuth 2.0 Resource Servers.
  166. It is used to protect APIs by using OAuth 2.0 Bearer Tokens.
  167. The top-level package is `org.springframework.security.oauth2.server.resource`.
  168. [[spring-security-acl]]
  169. == ACL -- `spring-security-acl.jar`
  170. This module contains a specialized domain object ACL implementation.
  171. It is used to apply security to specific domain object instances within your application.
  172. The top-level package is `org.springframework.security.acls`.
  173. .ACL Dependencies
  174. |===
  175. | Dependency | Version | Description
  176. | spring-security-core
  177. |
  178. |
  179. | ehcache
  180. | 1.6.2
  181. | Required if the Ehcache-based ACL cache implementation is used (optional if you use your own implementation).
  182. | spring-jdbc
  183. |
  184. | Required if you are using the default JDBC-based AclService (optional if you implement your own).
  185. | spring-tx
  186. |
  187. | Required if you are using the default JDBC-based AclService (optional if you implement your own).
  188. |===
  189. [[spring-security-cas]]
  190. == CAS -- `spring-security-cas.jar`
  191. This module contains Spring Security's CAS client integration.
  192. You should use it if you want to use Spring Security web authentication with a CAS single sign-on server.
  193. The top-level package is `org.springframework.security.cas`.
  194. .CAS Dependencies
  195. |===
  196. | Dependency | Version | Description
  197. | spring-security-core
  198. |
  199. |
  200. | spring-security-web
  201. |
  202. |
  203. | cas-client-core
  204. | 3.1.12
  205. | The JA-SIG CAS Client.
  206. This is the basis of the Spring Security integration.
  207. | ehcache
  208. | 1.6.2
  209. | Required if you are using the Ehcache-based ticket cache (optional).
  210. |===
  211. [[spring-security-test]]
  212. == Test -- `spring-security-test.jar`
  213. This module contains support for testing with Spring Security.
  214. [[spring-security-taglibs]]
  215. == Taglibs -- `spring-security-taglibs.jar`
  216. Provides Spring Security's JSP tag implementations.
  217. .Taglib Dependencies
  218. |===
  219. | Dependency | Version | Description
  220. | spring-security-core
  221. |
  222. |
  223. | spring-security-web
  224. |
  225. |
  226. | spring-security-acl
  227. |
  228. | Required if you are using the `accesscontrollist` tag or `hasPermission()` expressions with ACLs (optional).
  229. | spring-expression
  230. |
  231. | Required if you are using SPEL expressions in your tag access constraints.
  232. |===