Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@

import com.azure.spring.autoconfigure.aad.AADAuthenticationProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.ObjectPostProcessor;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest;
Expand Down Expand Up @@ -75,7 +77,6 @@ private Set<String> allScopes() {
private Set<String> accessTokenScopes() {
Set<String> result = openidScopes();
if (properties.allowedGroupsConfigured()) {
result.add("https://graph.microsoft.com/Directory.AccessAsUser.All");
result.add("https://graph.microsoft.com/User.Read");
}
addAzureConfiguredScopes(result);
Expand Down Expand Up @@ -137,6 +138,7 @@ private ClientRegistration.Builder createClientBuilder(String id) {
}

@Configuration
@ConditionalOnBean(ObjectPostProcessor.class)
@ConditionalOnMissingBean(WebSecurityConfigurerAdapter.class)
public static class DefaultAzureOAuth2Configuration extends AzureOAuth2Configuration {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.spring.aad.implementation;

import com.azure.test.utils.AppRunner;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.Authentication;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
Expand All @@ -17,6 +16,7 @@
import org.springframework.security.oauth2.core.OAuth2AccessToken;
import org.springframework.security.oauth2.core.OAuth2RefreshToken;
import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken;
import org.springframework.test.context.support.TestPropertySourceUtils;

import java.time.Instant;
import java.util.Optional;
Expand All @@ -27,53 +27,46 @@

public class AuthorizedClientRepoTest {

private AppRunner runner;

private ClientRegistration azure;
private ClientRegistration graph;

private OAuth2AuthorizedClientRepository repo;
private OAuth2AuthorizedClientRepository authorizedRepo;
private MockHttpServletRequest request;
private MockHttpServletResponse response;

@BeforeEach
public void setup() {
runner = createApp();
runner.start();
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
TestPropertySourceUtils.addInlinedPropertiesToEnvironment(
context,
"azure.activedirectory.user-group.allowed-groups = group1, group2",
"azure.activedirectory.authorization-server-uri = fake-uri",
"azure.activedirectory.tenant-id = fake-tenant-id",
"azure.activedirectory.client-id = fake-client-id",
"azure.activedirectory.client-secret = fake-client-secret",
"azure.activedirectory.authorization.graph.scopes = Calendars.Read"
);
context.register(AzureActiveDirectoryConfiguration.class);
context.refresh();

AzureClientRegistrationRepository clientRepo = runner.getBean(AzureClientRegistrationRepository.class);
AzureClientRegistrationRepository clientRepo = context.getBean(AzureClientRegistrationRepository.class);
azure = clientRepo.findByRegistrationId("azure");
graph = clientRepo.findByRegistrationId("graph");

repo = new AzureAuthorizedClientRepository(clientRepo);
authorizedRepo = new AzureAuthorizedClientRepository(clientRepo);
request = new MockHttpServletRequest();
response = new MockHttpServletResponse();
}

private AppRunner createApp() {
AppRunner result = new AppRunner(AzureActiveDirectoryConfigurationTest.DumbApp.class);
result.property("azure.activedirectory.authorization-server-uri", "fake-uri");
result.property("azure.activedirectory.tenant-id", "fake-tenant-id");
result.property("azure.activedirectory.client-id", "fake-client-id");
result.property("azure.activedirectory.client-secret", "fake-client-secret");
result.property("azure.activedirectory.authorization.graph.scopes", "Calendars.Read");
return result;
}

@AfterEach
public void tearDown() {
runner.stop();
}

@Test
public void loadInitAzureAuthzClient() {
repo.saveAuthorizedClient(
authorizedRepo.saveAuthorizedClient(
createAuthorizedClient(azure),
createAuthentication(),
request,
response);

OAuth2AuthorizedClient client = repo.loadAuthorizedClient(
OAuth2AuthorizedClient client = authorizedRepo.loadAuthorizedClient(
"graph",
createAuthentication(),
request);
Expand All @@ -88,13 +81,13 @@ public void loadInitAzureAuthzClient() {

@Test
public void saveAndLoadAzureAuthzClient() {
repo.saveAuthorizedClient(
authorizedRepo.saveAuthorizedClient(
createAuthorizedClient(graph),
createAuthentication(),
request,
response);

OAuth2AuthorizedClient client = repo.loadAuthorizedClient(
OAuth2AuthorizedClient client = authorizedRepo.loadAuthorizedClient(
"graph",
createAuthentication(),
request);
Expand Down Expand Up @@ -138,10 +131,4 @@ private boolean isTokenExpired(OAuth2AccessToken token) {
.map(expiresAt -> expiresAt.isBefore(Instant.now()))
.orElse(false);
}

@Configuration
@SpringBootApplication
@EnableWebSecurity
public static class DumbApp {
}
}
Loading