OAuth 2.0 client / server SDK for Java with OpenID Connect 1.0 extensions

About OAuth 2.0

OAuth 2.0 is an authorisation framework for a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner (the user), or by allowing the third-party application to obtain access on its own behalf.

OAuth 2.0 is specified in RFC 6749 and its companion specifications.

About OpenID Connect 1.0

OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 framework. It allows clients to verify the identity of the user based on the authentication performed by an authorisation server, as well as to obtain basic profile information about the user in an interoperable and REST-like manner.

OpenID Connect allows clients of all types, including Web-based, mobile, and JavaScript clients, to request and receive information about authenticated sessions and end-users. The specification suite is extensible, allowing optional encryption of identity data, discovery of OpenID Providers, and session management.

Go to the OpenID Connect specifications for more details.

About this SDK

This open source SDK is your starting point for developing OAuth 2.0 and OpenID Connect based applications in Java.

This SDK version implements the following standards and drafts:

  • The OAuth 2.0 Authorization Framework (RFC 6749)
  • The OAuth 2.0 Authorization Framework: Bearer Token Usage (RFC 6750)
  • OAuth 2.0 Token Introspection (RFC 7662)
  • OAuth 2.0 Token Revocation (RFC 7009)
  • OAuth 2.0 Authorization Server Metadata (draft-ietf-oauth-amr-values-01)
  • OAuth 2.0 Dynamic Client Registration Protocol (RFC 7591)
  • OAuth 2.0 Dynamic Client Registration Management Protocol (RFC 7592)
  • Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants (RFC 7521)
  • JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants (RFC 7523)
  • SAML 2.0 Profile for OAuth 2.0 Client Authentication and Authorization Grants (RFC 7522)
  • Proof Key for Code Exchange by OAuth Public Clients (RFC 7636)
  • Authentication Method Reference Values (RFC 8176)
  • OAuth 2.0 Authorization Server Metadata (RFC 8414)
  • OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokens (RFC 8705)
  • OAuth 2.0 Demonstrating Proof-of-Possession at the Application Layer (DPoP) (draft-ietf-oauth-dpop-02)
  • Resource Indicators for OAuth 2.0 (RFC 8707)
  • OAuth 2.0 Device Authorization Grant (RFC 8628)
  • OAuth 2.0 Incremental Authorization (draft-ietf-oauth-incremental-authz-04)
  • The OAuth 2.0 Authorization Framework: JWT Secured Authorization Request (JAR) (draft-ietf-oauth-jwsreq-29)
  • OAuth 2.0 Pushed Authorization Requests (draft-lodderstedt-oauth-par-02)
  • OAuth 2.0 Authorization Server Issuer Identifier in Authorization Response (draft-meyerzuselhausen-oauth-iss-auth-resp-01)
  • OpenID Connect Core 1.0 (2014-02-25)
  • OpenID Connect Core Unmet Authentication Requirements 1.0 (2019-05-08)
  • OpenID Connect Discovery 1.0 (2014-02-25)
  • OpenID Connect Dynamic Registration 1.0 (2014-02-25)
  • OpenID Connect Session Management 1.0 (2014-11-08)
  • OpenID Connect Extended Authentication Profile (EAP) ACR Values 1.0 - draft 00
  • OpenID Connect for Identity Assurance 1.0 - draft 11
  • OpenID Connect Federation 1.0 - draft 12
  • Initiating User Registration via OpenID Connect (draft 03)
  • OAuth 2.0 Multiple Response Type Encoding Practices 1.0 (2014-02-25)
  • Financial Services – Financial API - Part 1: Read Only API Security Profile (2018-10-17)
  • Financial Services – Financial API - Part 2: Read and Write API Security Profile (2018-10-17)
  • Financial-grade API: JWT Secured Authorization Response Mode for OAuth 2.0 (JARM) (2018-10-17)
  • OpenID Connect Client Initiated Backchannel Authentication (CIBA) Flow - Core 1.0 (draft 03)
Packages 
Package Description
com.nimbusds.oauth2.sdk
Classes for representing, serialising and parsing core OAuth 2.0 concepts.
com.nimbusds.oauth2.sdk.as
OAuth 2.0 Authorisation Server (AS) classes.
com.nimbusds.oauth2.sdk.assertions
Common SAML 2.0 and JWT bearer assertion classes.
com.nimbusds.oauth2.sdk.assertions.jwt
JWT bearer assertions.
com.nimbusds.oauth2.sdk.assertions.saml2
SAML 2.0 bearer assertions.
com.nimbusds.oauth2.sdk.auth
Implementations of OAuth 2.0 client authentication methods at the Token endpoint.
com.nimbusds.oauth2.sdk.auth.verifier
Client authentication verifier framework.
com.nimbusds.oauth2.sdk.ciba
OpenID Connect Client Initiated Backchannel Authentication (CIBA) Flow - Core 1.0 classes.
com.nimbusds.oauth2.sdk.client
OAuth 2.0 dynamic client registration.
com.nimbusds.oauth2.sdk.device
OAuth 2.0 device authorisation grant classes.
com.nimbusds.oauth2.sdk.dpop
OAuth 2.0 Demonstrating Proof-of-Possession at the Application Layer (DPoP) utilities.
com.nimbusds.oauth2.sdk.http
HTTP message and utility classes.
com.nimbusds.oauth2.sdk.id
Common OAuth 2.0 identifier and identity classes.
com.nimbusds.oauth2.sdk.jarm
JWT Secured Authorization Response Mode for OAuth 2.0 (JARM) utilities.
com.nimbusds.oauth2.sdk.jose
JavaScript Object Signing and Encryption (JOSE) utilities.
com.nimbusds.oauth2.sdk.pkce
Proof Key for Code Exchange (PKCE) classes.
com.nimbusds.oauth2.sdk.token
OAuth 2.0 access and refresh token implementations.
com.nimbusds.oauth2.sdk.util
Common utility classes.
com.nimbusds.oauth2.sdk.util.date
Date / time utilities.
com.nimbusds.oauth2.sdk.util.tls
TLS / SSL utilities.
com.nimbusds.openid.connect.sdk
Classes for representing, serialising and parsing core OpenID Connect concepts.
com.nimbusds.openid.connect.sdk.assurance
OpenID Connect for Identity Assurance 1.0 classes.
com.nimbusds.openid.connect.sdk.assurance.claims
Identity assurance claims.
com.nimbusds.openid.connect.sdk.assurance.evidences
Identity evidence classes.
com.nimbusds.openid.connect.sdk.claims
Claims and claim sets used in OpenID Connect.
com.nimbusds.openid.connect.sdk.federation
OpenID Connect Federation 1.0 classes.
com.nimbusds.openid.connect.sdk.federation.api
OpenID Connect Federation 1.0 API classes.
com.nimbusds.openid.connect.sdk.federation.config
OpenID Connect Federation 1.0 entity configuration request and response classes.
com.nimbusds.openid.connect.sdk.federation.entities
OpenID Connect Federation 1.0 entity classes.
com.nimbusds.openid.connect.sdk.federation.policy
OpenID Connect Federation 1.0 policy.
com.nimbusds.openid.connect.sdk.federation.policy.factories
OpenID Connect Federation 1.0 metadata policy factories.
com.nimbusds.openid.connect.sdk.federation.policy.language
Interfaces and classes for the OpenID Connect Federation 1.0 policy language.
com.nimbusds.openid.connect.sdk.federation.policy.operations
OpenID Connect Federation 1.0 policy operations.
com.nimbusds.openid.connect.sdk.federation.registration
OpenID Connect Federation 1.0 explicit client registration.
com.nimbusds.openid.connect.sdk.federation.trust
OpenID Connect Federation 1.0 trust chains and resolution.
com.nimbusds.openid.connect.sdk.federation.trust.constraints
OpenID Connect Federation 1.0 trust chain constraints.
com.nimbusds.openid.connect.sdk.federation.trust.marks
Federation trust marks.
com.nimbusds.openid.connect.sdk.id
Common OpenID Connect identifier and identity classes.
com.nimbusds.openid.connect.sdk.op
OpenID Connect Provider (OP) classes.
com.nimbusds.openid.connect.sdk.rp
OpenID Connect Relying Party (RP) classes.
com.nimbusds.openid.connect.sdk.rp.statement
Software statement processing.
com.nimbusds.openid.connect.sdk.token
OpenID Connect token extensions.
com.nimbusds.openid.connect.sdk.validators
Client-side OpenID Connect ID token, access token and authorisation code validators.
com.nimbusds.secevent.sdk.claims
Security event claims.