Interface OAuth2CodeGrantFlow

  • All Known Implementing Classes:
    AuthCodeGrantImpl

    public interface OAuth2CodeGrantFlow
    The interface that defines OAuth 2 Authorization Code Grant Flow.

    The implementation of this interface is capable of performing of the user authorization defined in the OAuth2 specification as "Authorization Code Grant Flow" (OAuth 2 spec defines more Authorization Flows). The result of the authorization is the TokenResult. The implementation starts the authorization process by construction of a redirect URI to which the user should be redirected (the URI points to authorization consent page hosted by Service Provider). The user grants an access using this page. Service Provider redirects the user back to the our server and the authorization process is finished using the same instance of the interface implementation.

    To perform the authorization follow these steps:

  • Get the instance of this interface using OAuth2ClientSupport.
  • Call start() method. The method returns redirection uri as a String.
  • Redirect the user to the redirect URI returned from the start method. If your application deployment does not allow redirection (for example the app is a console application), then provide the redirection URI to the user in other ways.
  • User should authorize your application on the redirect URI.
  • After authorization the Authorization Server redirects the user back to the URI specified by OAuth2CodeGrantFlow.Builder.redirectUri(String) and provide the code and state as a request query parameter. Extract these parameter from the request. If your deployment does not support redirection (your app is not a web server) then Authorization Server will provide the user with code in other ways (for example display on the html page). You need to get this code from the user. The state parameter is added to the redirect URI in the start method and and the same parameter should be returned from the authorization response as a protection against CSRF attacks.
  • Use the code and state to finish the authorization process by calling the method finish(String, String) supplying the code and the state parameter. The method will internally request the access token from the Authorization Server and return it.
  • You can use access token from TokenResult together with ClientIdentifier to perform the authenticated requests to the Service Provider. You can also call methods getAuthorizedClient() to get client already configured with support for authentication from consumer credentials and access token received during authorization process.
  • Important note: one instance of the interface can be used only for one authorization process. The methods must be called exactly in the order specified by the list above. Therefore the instance is also not thread safe and no concurrent access is expected.

    Instance must be stored between method calls (between start and finish) for one user authorization process as the instance keeps internal state of the authorization process.

Since:
2.3