index.adoc 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. [[oauth2AuthorizationServer]]
  2. = OAuth 2.1 Authorization Server
  3. :page-section-summary-toc: 1
  4. The OAuth 2.1 Authorization Server features provide support for the Authorization Server role as defined in the https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-07#section-1.1[OAuth 2.1 Authorization Framework].
  5. The Authorization Server features provide implementations of the https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-07[OAuth 2.1] and https://openid.net/specs/openid-connect-core-1_0.html[OpenID Connect 1.0] specifications and other related specifications.
  6. It provides a secure, light-weight, and customizable foundation for building OpenID Connect 1.0 Identity Providers and OAuth 2.1 Authorization Server products.
  7. [[oauth2AuthorizationServer-use-cases]]
  8. == Use Cases
  9. The following list provides some use cases for using Spring Security Authorization Server compared to using an open source or commercial OAuth2 or OpenID Connect 1.0 Provider product.
  10. * Provides full control of configuration and customization when advanced customization scenarios are required.
  11. * Preference for a light-weight authorization server compared to a commercial product that includes all the "bells and whistles".
  12. * Potential savings in software licensing and/or hosting costs.
  13. * Quick startup and ease of use during development using the familiar Spring programming model.
  14. [[oauth2AuthorizationServer-feature-list]]
  15. == Feature List
  16. Spring Security Authorization Server supports the following features:
  17. [cols="2a,4a,6a"]
  18. |===
  19. |Category |Feature |Related specifications
  20. |xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-token-endpoint[Authorization Grant]
  21. |
  22. * Authorization Code
  23. ** xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-authorization-endpoint[User Consent]
  24. * Client Credentials
  25. * Refresh Token
  26. * Device Code
  27. ** xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-device-verification-endpoint[User Consent]
  28. * Token Exchange
  29. |
  30. * The OAuth 2.1 Authorization Framework (https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-07[draft])
  31. ** https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-07#section-4.1[Authorization Code Grant]
  32. ** https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-07#section-4.2[Client Credentials Grant]
  33. ** https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-07#section-4.3[Refresh Token Grant]
  34. * OpenID Connect Core 1.0 (https://openid.net/specs/openid-connect-core-1_0.html[spec])
  35. ** https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth[Authorization Code Flow]
  36. * OAuth 2.0 Device Authorization Grant
  37. (https://tools.ietf.org/html/rfc8628[spec])
  38. ** https://tools.ietf.org/html/rfc8628#section-3[Device Flow]
  39. * OAuth 2.0 Token Exchange (https://datatracker.ietf.org/doc/html/rfc8693[spec])
  40. ** https://datatracker.ietf.org/doc/html/rfc8693#section-2[Token Exchange Flow]
  41. |xref:servlet/oauth2/authorization-server/core-model-components.adoc#oauth2AuthorizationServer-oauth2-token-generator[Token Formats]
  42. |
  43. * Self-contained (JWT)
  44. * Reference (Opaque)
  45. |
  46. * JSON Web Token (JWT) (https://tools.ietf.org/html/rfc7519[RFC 7519])
  47. * JSON Web Signature (JWS) (https://tools.ietf.org/html/rfc7515[RFC 7515])
  48. |Token Types
  49. |
  50. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-token-endpoint-dpop-bound-access-tokens[DPoP-bound Access Tokens]
  51. |
  52. * OAuth 2.0 Demonstrating Proof of Possession (DPoP) (https://datatracker.ietf.org/doc/html/rfc9449[RFC 9449])
  53. |xref:servlet/oauth2/authorization-server/configuration-model.adoc#oauth2AuthorizationServer-configuring-client-authentication[Client Authentication]
  54. |
  55. * `client_secret_basic`
  56. * `client_secret_post`
  57. * `client_secret_jwt`
  58. * `private_key_jwt`
  59. * `tls_client_auth`
  60. * `self_signed_tls_client_auth`
  61. * `none` (public clients)
  62. |
  63. * The OAuth 2.1 Authorization Framework (https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-07#section-2.4[Client Authentication])
  64. * JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication (https://tools.ietf.org/html/rfc7523[RFC 7523])
  65. * OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens (https://datatracker.ietf.org/doc/html/rfc8705[RFC 8705])
  66. * Proof Key for Code Exchange by OAuth Public Clients (PKCE) (https://tools.ietf.org/html/rfc7636[RFC 7636])
  67. |xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc[Protocol Endpoints]
  68. |
  69. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-authorization-endpoint[OAuth2 Authorization Endpoint]
  70. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-pushed-authorization-request-endpoint[OAuth2 Pushed Authorization Request Endpoint]
  71. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-device-authorization-endpoint[OAuth2 Device Authorization Endpoint]
  72. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-device-verification-endpoint[OAuth2 Device Verification Endpoint]
  73. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-token-endpoint[OAuth2 Token Endpoint]
  74. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-token-introspection-endpoint[OAuth2 Token Introspection Endpoint]
  75. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-token-revocation-endpoint[OAuth2 Token Revocation Endpoint]
  76. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oauth2-authorization-server-metadata-endpoint[OAuth2 Authorization Server Metadata Endpoint]
  77. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-jwk-set-endpoint[JWK Set Endpoint]
  78. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oidc-provider-configuration-endpoint[OpenID Connect 1.0 Provider Configuration Endpoint]
  79. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oidc-logout-endpoint[OpenID Connect 1.0 Logout Endpoint]
  80. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oidc-user-info-endpoint[OpenID Connect 1.0 UserInfo Endpoint]
  81. * xref:servlet/oauth2/authorization-server/protocol-endpoints.adoc#oauth2AuthorizationServer-oidc-client-registration-endpoint[OpenID Connect 1.0 Client Registration Endpoint]
  82. |
  83. * The OAuth 2.1 Authorization Framework (https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-07[draft])
  84. ** https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-07#section-3.1[Authorization Endpoint]
  85. ** https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-07#section-3.2[Token Endpoint]
  86. * OAuth 2.0 Pushed Authorization Requests (https://datatracker.ietf.org/doc/html/rfc9126[RFC 9126])
  87. ** https://datatracker.ietf.org/doc/html/rfc9126#section-2[Pushed Authorization Request Endpoint]
  88. * OAuth 2.0 Device Authorization Grant (https://tools.ietf.org/html/rfc8628[RFC 8628])
  89. ** https://tools.ietf.org/html/rfc8628#section-3.1[Device Authorization Endpoint]
  90. ** https://tools.ietf.org/html/rfc8628#section-3.3[Device Verification Endpoint]
  91. * OAuth 2.0 Token Introspection (https://tools.ietf.org/html/rfc7662[RFC 7662])
  92. * OAuth 2.0 Token Revocation (https://tools.ietf.org/html/rfc7009[RFC 7009])
  93. * OAuth 2.0 Authorization Server Metadata (https://tools.ietf.org/html/rfc8414[RFC 8414])
  94. * JSON Web Key (JWK) (https://tools.ietf.org/html/rfc7517[RFC 7517])
  95. * OpenID Connect Discovery 1.0 (https://openid.net/specs/openid-connect-discovery-1_0.html[spec])
  96. ** https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig[Provider Configuration Endpoint]
  97. * OpenID Connect RP-Initiated Logout 1.0 (https://openid.net/specs/openid-connect-rpinitiated-1_0.html[spec])
  98. ** https://openid.net/specs/openid-connect-rpinitiated-1_0.html#RPLogout[Logout Endpoint]
  99. * OpenID Connect Core 1.0 (https://openid.net/specs/openid-connect-core-1_0.html[spec])
  100. ** https://openid.net/specs/openid-connect-core-1_0.html#UserInfo[UserInfo Endpoint]
  101. * OpenID Connect Dynamic Client Registration 1.0 (https://openid.net/specs/openid-connect-registration-1_0.html[spec])
  102. ** https://openid.net/specs/openid-connect-registration-1_0.html#ClientRegistration[Client Registration Endpoint]
  103. ** https://openid.net/specs/openid-connect-registration-1_0.html#ClientConfigurationEndpoint[Client Configuration Endpoint]
  104. |===