140 if (clientSecret != null) {
142 clientSecret = StringEncrypter.defaultInstance().decrypt(clientSecret, Configuration.instance().getCryptoPropertyValue());
143 }
catch (EncryptionException ex) {
144 log.error(
"Failed to decrypt property: " + Configuration.OAUTH_PROPERTY_CLIENT_PASSWORD, ex);
150 List<String> scopes = Arrays.asList(clientScopes.split(StringUtils.SPACE));
151 List<ResponseType> responseTypes = Arrays.asList(ResponseType.CODE);
153 String nonce = UUID.randomUUID().toString();
154 String rfp = UUID.randomUUID().toString();
155 String jti = UUID.randomUUID().toString();
158 final String key = request.getParameter(ExternalAuthentication.CONVERSATION_KEY);
160 ProfileRequestContext prc = ExternalAuthentication.getProfileRequestContext(key, request);
162 String relyingPartyId =
"";
163 final RelyingPartyContext relyingPartyCtx = prc.getSubcontext(RelyingPartyContext.class);
164 if (relyingPartyCtx != null) {
165 relyingPartyId = relyingPartyCtx.getRelyingPartyId();
166 log.info(
"relyingPartyId found: " + relyingPartyId);
168 log.warn(
"No RelyingPartyContext was available");
171 OxAuthCryptoProvider cryptoProvider =
new OxAuthCryptoProvider();
172 JwtState jwtState =
new JwtState(SignatureAlgorithm.HS256, clientSecret, cryptoProvider);
173 jwtState.setRfp(rfp);
174 jwtState.setJti(jti);
175 if (relyingPartyId != null && !
"".equals(relyingPartyId)) {
176 String additionalClaims = String.format(
"{relyingPartyId: '%s'}", relyingPartyId);
177 jwtState.setAdditionalClaims(
new JSONObject(additionalClaims));
179 log.warn(
"No relyingPartyId was available");
180 String encodedState = jwtState.getEncodedJwt();
182 AuthorizationRequest authorizationRequest =
new AuthorizationRequest(responseTypes, clientId, scopes, redirectUri, nonce);
183 authorizationRequest.setState(encodedState);
186 if (currentShibstateCookie != null) {
188 log.debug(
"requestUri = \"" + requestUri +
"\"");
192 if (StringHelper.isNotEmpty(authenticationMode)) {
193 log.debug(
"acr_values = \"" + authenticationMode +
"\"");
194 authorizationRequest.setAcrValues(Arrays.asList(authenticationMode));
195 updateShibstateCookie(response, currentShibstateCookie, requestUri,
"/" + Configuration.OXAUTH_ACR_VALUES +
"/" + authenticationMode);
200 final HttpSession session = request.getSession(
false);
201 session.setAttribute(Configuration.SESSION_AUTH_STATE, encodedState);
202 session.setAttribute(Configuration.SESSION_AUTH_NONCE, nonce);
204 return authorizeUrl +
"?" + authorizationRequest.getQueryString();
void updateShibstateCookie(HttpServletResponse response, Cookie shibstateCookie, String requestUri, String acrPathParam)
Definition: AuthenticationFilter.java:233
String decodeCookieValue(String cookieValue)
Definition: AuthenticationFilter.java:257
String determineAuthenticationMode(String requestUri)
Definition: AuthenticationFilter.java:273
final String constructRedirectUrl(final HttpServletRequest request)
Definition: AbstractOAuthFilter.java:21
final Log log
Definition: AbstractConfigurationFilter.java:24
Cookie getCurrentShibstateCookie(HttpServletRequest request)
Definition: AuthenticationFilter.java:207
static final String SESSION_CONVERSATION_KEY
Definition: AuthenticationFilter.java:66
final String getPropertyFromInitParams(final FilterConfig filterConfig, final String propertyName, final String defaultValue)
Definition: AbstractConfigurationFilter.java:35