use of org.apereo.cas.support.oauth.web.response.OAuth20AuthorizationRequest in project cas by apereo.
the class OAuth20AuthorizeEndpointController method prepareAccessTokenRequestContext.
/**
* Build access token request context.
*
* @param authzRequest the authz request
* @param registeredService the registered service
* @param context the context
* @param service the service
* @param authentication the authentication
* @return the access token request context
* @throws Exception the exception
*/
protected AccessTokenRequestContext prepareAccessTokenRequestContext(final OAuth20AuthorizationRequest authzRequest, final OAuthRegisteredService registeredService, final JEEContext context, final Service service, final Authentication authentication) throws Exception {
var payloadBuilder = AccessTokenRequestContext.builder();
if (authzRequest.isSingleSignOnSessionRequired()) {
val tgt = getConfigurationContext().fetchTicketGrantingTicketFrom(context);
payloadBuilder = payloadBuilder.ticketGrantingTicket(tgt);
}
val redirectUri = OAuth20Utils.getRequestParameter(context, OAuth20Constants.REDIRECT_URI).map(String::valueOf).orElse(StringUtils.EMPTY);
val grantType = context.getRequestParameter(OAuth20Constants.GRANT_TYPE).map(String::valueOf).orElseGet(OAuth20GrantTypes.AUTHORIZATION_CODE::getType).toUpperCase();
val scopes = OAuth20Utils.parseRequestScopes(context);
val codeChallenge = context.getRequestParameter(OAuth20Constants.CODE_CHALLENGE).map(String::valueOf).orElse(StringUtils.EMPTY);
val codeChallengeMethod = context.getRequestParameter(OAuth20Constants.CODE_CHALLENGE_METHOD).map(String::valueOf).orElse(StringUtils.EMPTY).toUpperCase();
val userProfile = OAuth20Utils.getAuthenticatedUserProfile(context, getConfigurationContext().getSessionStore());
val claims = OAuth20Utils.parseRequestClaims(context);
val holder = payloadBuilder.service(service).authentication(authentication).registeredService(registeredService).grantType(OAuth20Utils.getGrantType(context)).responseType(OAuth20Utils.getResponseType(context)).codeChallenge(codeChallenge).codeChallengeMethod(codeChallengeMethod).scopes(scopes).clientId(authzRequest.getClientId()).redirectUri(redirectUri).userProfile(userProfile).claims(claims).responseMode(OAuth20Utils.getResponseModeType(context)).build();
context.getRequestParameters().keySet().forEach(key -> context.getRequestParameter(key).ifPresent(value -> holder.getParameters().put(key, value)));
LOGGER.debug("Building authorization response for grant type [{}] with scopes [{}] for client id [{}]", grantType, scopes, authzRequest.getClientId());
return holder;
}
Aggregations