use of org.apereo.cas.web.DelegatedClientIdentityProviderConfiguration in project cas by apereo.
the class DefaultDelegatedClientIdentityProviderConfigurationProducer method produce.
@Override
public Optional<DelegatedClientIdentityProviderConfiguration> produce(final RequestContext requestContext, final IndirectClient client) {
val request = WebUtils.getHttpServletRequestFromExternalWebflowContext(requestContext);
val response = WebUtils.getHttpServletResponseFromExternalWebflowContext(requestContext);
val webContext = new JEEContext(request, response);
val currentService = WebUtils.getService(requestContext);
LOGGER.debug("Initializing client [{}] with request parameters [{}] and service [{}]", client, requestContext.getRequestParameters(), currentService);
client.init();
if (delegatedClientAuthenticationRequestCustomizers.isEmpty() || delegatedClientAuthenticationRequestCustomizers.stream().anyMatch(c -> c.isAuthorized(webContext, client, currentService))) {
return DelegatedClientIdentityProviderConfigurationFactory.builder().client(client).webContext(webContext).service(currentService).casProperties(casProperties).build().resolve();
}
return Optional.empty();
}
use of org.apereo.cas.web.DelegatedClientIdentityProviderConfiguration in project cas by apereo.
the class GroovyDelegatedClientIdentityProviderRedirectionStrategy method getPrimaryDelegatedAuthenticationProvider.
@Override
public Optional<DelegatedClientIdentityProviderConfiguration> getPrimaryDelegatedAuthenticationProvider(final RequestContext context, final WebApplicationService service, final DelegatedClientIdentityProviderConfiguration provider) {
val registeredService = servicesManager.findServiceBy(service);
val args = new Object[] { context, service, registeredService, provider, LOGGER };
return Optional.ofNullable(watchableScript.execute(args, DelegatedClientIdentityProviderConfiguration.class));
}
use of org.apereo.cas.web.DelegatedClientIdentityProviderConfiguration in project cas by apereo.
the class DelegatedClientAuthenticationActionTests method assertStartAuthentication.
@SneakyThrows
private void assertStartAuthentication(final Service service) {
val request = new MockHttpServletRequest();
val response = new MockHttpServletResponse();
val flow = new Flow("mockFlow");
flow.addVariable(new FlowVariable("credential", new BeanFactoryVariableValueFactory(UsernamePasswordCredential.class, applicationContext.getAutowireCapableBeanFactory())));
val locale = Locale.ENGLISH.getLanguage();
request.setParameter(ThemeChangeInterceptor.DEFAULT_PARAM_NAME, "theme");
LOGGER.debug("Setting locale [{}] for request parameter as [{}]", locale, request.getParameterMap());
request.setParameter(LocaleChangeInterceptor.DEFAULT_PARAM_NAME, locale);
request.setParameter(CasProtocolConstants.PARAMETER_METHOD, HttpMethod.POST.name());
LOGGER.debug("Set request parameters as [{}]", request.getParameterMap());
val requestContext = new MockRequestContext();
requestContext.setExternalContext(new ServletExternalContext(new MockServletContext(), request, response));
RequestContextHolder.setRequestContext(requestContext);
ExternalContextHolder.setExternalContext(requestContext.getExternalContext());
val mockExecutionContext = new MockFlowExecutionContext(new MockFlowSession(flow));
requestContext.setFlowExecutionContext(mockExecutionContext);
if (service != null) {
WebUtils.putServiceIntoFlowScope(requestContext, service);
}
val client = builtClients.findClient("SAML2Client").get();
val webContext = new JEEContext(request, response);
val ticket = delegatedClientAuthenticationWebflowManager.store(webContext, client);
request.addParameter(DefaultDelegatedClientAuthenticationWebflowManager.PARAMETER_CLIENT_ID, ticket.getId());
LOGGER.debug("Initializing action with request parameters [{}]", webContext.getRequestParameters());
val event = delegatedAuthenticationAction.execute(requestContext);
assertEquals(CasWebflowConstants.TRANSITION_ID_ERROR, event.getId());
delegatedClientAuthenticationWebflowManager.retrieve(requestContext, webContext, client);
assertEquals("theme", request.getAttribute(ThemeChangeInterceptor.DEFAULT_PARAM_NAME));
assertEquals(locale, request.getAttribute(LocaleChangeInterceptor.DEFAULT_PARAM_NAME));
assertEquals(HttpMethod.POST.name(), request.getAttribute(CasProtocolConstants.PARAMETER_METHOD));
val urls = (Set<DelegatedClientIdentityProviderConfiguration>) WebUtils.getDelegatedAuthenticationProviderConfigurations(requestContext);
assertFalse(urls.isEmpty());
assertSame(4, urls.size());
urls.stream().map(url -> {
LOGGER.debug("Redirect URL [{}]", url.getRedirectUrl());
return UriComponentsBuilder.fromUriString(url.getRedirectUrl()).build();
}).forEach(uriComponents -> {
assertEquals(DelegatedClientIdentityProviderConfigurationFactory.ENDPOINT_URL_REDIRECT, uriComponents.getPath());
val clientName = uriComponents.getQueryParams().get(Pac4jConstants.DEFAULT_CLIENT_NAME_PARAMETER);
assertEquals(1, clientName.size());
val serviceName = uriComponents.getQueryParams().get(CasProtocolConstants.PARAMETER_SERVICE);
if (service != null) {
assertEquals(1, serviceName.size());
assertTrue(serviceName.contains(EncodingUtils.urlEncode(RegisteredServiceTestUtils.CONST_TEST_URL)));
} else {
assertNull(serviceName);
}
val method = uriComponents.getQueryParams().get(CasProtocolConstants.PARAMETER_METHOD);
assertEquals(1, method.size());
assertTrue(method.contains(HttpMethod.POST.toString()));
val theme = uriComponents.getQueryParams().get(ThemeChangeInterceptor.DEFAULT_PARAM_NAME);
assertEquals(1, theme.size());
assertTrue(theme.contains("theme"));
val testLocale = uriComponents.getQueryParams().get(LocaleChangeInterceptor.DEFAULT_PARAM_NAME);
assertEquals(1, testLocale.size());
assertTrue(testLocale.contains(locale));
});
}
Aggregations