use of io.micronaut.http.client.HttpClient in project micronaut-security by micronaut-projects.
the class OpenIdClientFactory method openIdConfiguration.
/**
* Retrieves OpenID configuration from the provided issuer.
*
* @param oauthClientConfiguration The client configuration
* @param openIdClientConfiguration The openid client configuration
* @param issuerClient The client to request the metadata
* @return The OpenID configuration
*/
@EachBean(OpenIdClientConfiguration.class)
DefaultOpenIdProviderMetadata openIdConfiguration(@Parameter OauthClientConfiguration oauthClientConfiguration, @Parameter OpenIdClientConfiguration openIdClientConfiguration, @Client HttpClient issuerClient) {
DefaultOpenIdProviderMetadata providerMetadata = openIdClientConfiguration.getIssuer().map(issuer -> {
try {
URL configurationUrl = new URL(issuer, StringUtils.prependUri(issuer.getPath(), openIdClientConfiguration.getConfigurationPath()));
if (LOG.isDebugEnabled()) {
LOG.debug("Sending request for OpenID configuration for provider [{}] to URL [{}]", openIdClientConfiguration.getName(), configurationUrl);
}
// TODO NOSONAR this returns ReadTimeoutException - return issuerClient.toBlocking().retrieve(configurationUrl.toString(), DefaultOpenIdProviderMetadata.class);
String json = issuerClient.toBlocking().retrieve(configurationUrl.toString(), String.class);
return jsonMapper.readValue(json.getBytes(StandardCharsets.UTF_8), Argument.of(DefaultOpenIdProviderMetadata.class));
} catch (HttpClientResponseException e) {
throw new BeanInstantiationException("Failed to retrieve OpenID configuration for " + openIdClientConfiguration.getName(), e);
} catch (MalformedURLException e) {
throw new BeanInstantiationException("Failure parsing issuer URL " + issuer.toString(), e);
} catch (IOException e) {
throw new BeanInstantiationException("JSON Processing Exception parsing issuer URL returned JSON " + issuer.toString(), e);
}
}).orElse(new DefaultOpenIdProviderMetadata());
overrideFromConfig(providerMetadata, openIdClientConfiguration, oauthClientConfiguration);
return providerMetadata;
}
use of io.micronaut.http.client.HttpClient in project micronaut-views by micronaut-projects.
the class SecurityViewModelProcessorTest method aCustomSecurityPropertyNameCanBeInjectedToTheModel.
@Test
void aCustomSecurityPropertyNameCanBeInjectedToTheModel() {
// given:
EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class, CollectionUtils.mapOf("spec.name", "SecurityViewModelProcessorSpec", "micronaut.views.soy.enabled", StringUtils.FALSE, "micronaut.security.views-model-decorator.security-key", "securitycustom"));
HttpClient httpClient = HttpClient.create(embeddedServer.getURL());
// expect:
assertTrue(embeddedServer.getApplicationContext().containsBean(BooksController.class));
// and:
assertTrue(embeddedServer.getApplicationContext().containsBean(MockAuthenticationProvider.class));
// and:
assertTrue(embeddedServer.getApplicationContext().containsBean(SecurityViewModelProcessor.class));
// when:
HttpRequest<?> request = HttpRequest.GET("/").basicAuth("john", "secret");
HttpResponse<String> response = httpClient.toBlocking().exchange(request, String.class);
// then:
assertEquals(HttpStatus.OK, response.status());
// when:
String html = response.body();
// then:
assertNotNull(html);
// and:
assertFalse(html.contains("User: john"));
// and:
assertTrue(html.contains("Custom: john"));
// cleanup:
httpClient.close();
// and:
embeddedServer.close();
}
use of io.micronaut.http.client.HttpClient in project micronaut-views by micronaut-projects.
the class UnmodifiableModelAndViewTest method aModifiableViewModelStillAddsSecurity.
@Test
void aModifiableViewModelStillAddsSecurity() {
EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class, CollectionUtils.mapOf("spec.name", "UnmodifiableModelAndViewSpec", "micronaut.views.soy.enabled", StringUtils.FALSE));
HttpClient httpClient = HttpClient.create(embeddedServer.getURL());
// given:
BlockingHttpClient client = httpClient.toBlocking();
// expect:
assertTrue(embeddedServer.getApplicationContext().containsBean(UnmodifiableFruitsController.class));
// when:
HttpRequest<?> request = HttpRequest.GET("/modifiable").basicAuth("john", "secret");
HttpResponse<String> response = client.exchange(request, String.class);
// then:
assertEquals(HttpStatus.OK, response.status());
// when:
String html = response.body();
// then:
assertNotNull(html);
// and:
assertTrue(html.contains("<blink>Security was added</blink>"));
// and:
assertTrue(html.contains("<h1>fruit: plum</h1>"));
// and:
assertTrue(html.contains("<h1>color: plum</h1>"));
// cleanup:
httpClient.close();
// and:
embeddedServer.close();
}
use of io.micronaut.http.client.HttpClient in project micronaut-views by micronaut-projects.
the class UnmodifiableModelAndViewTest method anUnmodifiableViewModelReportsErrorButDoesNotCrash.
@Test
void anUnmodifiableViewModelReportsErrorButDoesNotCrash() {
EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class, CollectionUtils.mapOf("spec.name", "UnmodifiableModelAndViewSpec", "micronaut.views.soy.enabled", StringUtils.FALSE));
HttpClient httpClient = HttpClient.create(embeddedServer.getURL());
// given:
BlockingHttpClient client = httpClient.toBlocking();
// expect:
assertTrue(embeddedServer.getApplicationContext().containsBean(UnmodifiableFruitsController.class));
// when:
HttpRequest<?> request = HttpRequest.GET("/unmodifiable").basicAuth("john", "secret");
HttpResponse<String> response = client.exchange(request, String.class);
// then:
assertEquals(HttpStatus.OK, response.status());
// when:
String html = response.body();
// then:
assertNotNull(html);
// and:
assertTrue(html.contains("<blink>Security was added</blink>"));
// and:
assertTrue(html.contains("<h1>fruit: plum</h1>"));
// and:
assertTrue(html.contains("<h1>color: plum</h1>"));
// cleanup:
httpClient.close();
// and:
embeddedServer.close();
}
use of io.micronaut.http.client.HttpClient in project micronaut-views by micronaut-projects.
the class SecurityViewModelProcessorTest method securityPropertyIsInjectedToTheModel.
@Test
void securityPropertyIsInjectedToTheModel() {
// given:
EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer.class, CollectionUtils.mapOf("spec.name", "SecurityViewModelProcessorSpec", "micronaut.views.soy.enabled", StringUtils.FALSE));
HttpClient httpClient = HttpClient.create(embeddedServer.getURL());
// expect:
assertTrue(embeddedServer.getApplicationContext().containsBean(BooksController.class));
// and:
assertTrue(embeddedServer.getApplicationContext().containsBean(MockAuthenticationProvider.class));
// and:
assertTrue(embeddedServer.getApplicationContext().containsBean(SecurityViewModelProcessor.class));
// when:
HttpRequest<?> request = HttpRequest.GET("/").basicAuth("john", "secret");
HttpResponse<String> response = httpClient.toBlocking().exchange(request, String.class);
// then:
assertEquals(HttpStatus.OK, response.status());
// when:
String html = response.body();
// then:
assertNotNull(html);
assertTrue(html.contains("User: john email: john@email.com"));
// and:
assertTrue(html.contains("Developing Microservices"));
// cleanup:
httpClient.close();
// and:
embeddedServer.close();
}
Aggregations