Interface OAuth2CodeGrantFlow
-
public interface OAuth2CodeGrantFlowThe 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
startmethod. 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 thecodeandstateas 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 withcodein other ways (for example display on the html page). You need to get this code from the user. Thestateparameter is added to the redirect URI in thestartmethod and and the same parameter should be returned from the authorization response as a protection against CSRF attacks. - Use the
codeandstateto finish the authorization process by calling the methodfinish(String, String)supplying thecodeand thestateparameter. The method will internally request the access token from the Authorization Server and return it. - You can use access token from
TokenResulttogether withClientIdentifierto perform the authenticated requests to the Service Provider. You can also call methodsgetAuthorizedClient()to getclientalready 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
startandfinish) for one user authorization process as the instance keeps internal state of the authorization process.- Since:
- 2.3
- Author:
- Miroslav Fuksa
- Get the instance of this interface using
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interfaceOAuth2CodeGrantFlow.Builder<T extends OAuth2CodeGrantFlow.Builder>The builder ofOAuth2CodeGrantFlow.static classOAuth2CodeGrantFlow.PhasePhase of the Authorization Code Grant Flow.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description TokenResultfinish(String code, String state)Finish the authorization process and return theTokenResult.ClientgetAuthorizedClient()Return the client configured for performing authorized requests to the Service Provider.FeaturegetOAuth2Feature()Return theoauth filter featurethat can be used to configureclientinstances to perform authenticated requests to the Service Provider.TokenResultrefreshAccessToken(String refreshToken)Refresh the access token using a refresh token.Stringstart()Start the authorization process and return redirection URI on which the user should give a consent for our application to access resources.
-
-
-
Method Detail
-
start
String start()
Start the authorization process and return redirection URI on which the user should give a consent for our application to access resources.- Returns:
- URI to which user should be redirected.
-
finish
TokenResult finish(String code, String state)
Finish the authorization process and return theTokenResult. The method must be called on the same instance after thestart()method was called and user granted access to this application.The method makes a request to the Authorization Server in order to exchange
codefor access token.- Parameters:
code- Code received from the user authorization process.state- State received from the user authorization response.- Returns:
- Token result.
-
refreshAccessToken
TokenResult refreshAccessToken(String refreshToken)
Refresh the access token using a refresh token. This method can be called on newly created instance or on instance on which the authorization flow was already performed.- Parameters:
refreshToken- Refresh token.- Returns:
- Token result.
-
getAuthorizedClient
Client getAuthorizedClient()
Return the client configured for performing authorized requests to the Service Provider. The authorization process must be successfully finished by instance by calling methodsstart()andfinish(String, String).- Returns:
- Client configured to add correct
Authorizationheader to requests.
-
getOAuth2Feature
Feature getOAuth2Feature()
Return theoauth filter featurethat can be used to configureclientinstances to perform authenticated requests to the Service Provider.The authorization process must be successfully finished by instance by calling methods
start()andfinish(String, String).- Returns:
- oauth filter feature configured with received
AccessToken.
-
-