فهرست منبع

Update sample to use OpenID Connect and Provider Configuration endpoint

Issue gh-53 gh-55
Joe Grandja 4 سال پیش
والد
کامیت
668bb069f2

+ 10 - 0
samples/boot/oauth2-integration/authorizationserver/src/main/java/sample/config/AuthorizationServerConfig.java

@@ -23,9 +23,11 @@ import org.springframework.security.crypto.key.CryptoKeySource;
 import org.springframework.security.crypto.key.StaticKeyGeneratingCryptoKeySource;
 import org.springframework.security.crypto.key.StaticKeyGeneratingCryptoKeySource;
 import org.springframework.security.oauth2.core.AuthorizationGrantType;
 import org.springframework.security.oauth2.core.AuthorizationGrantType;
 import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
 import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
+import org.springframework.security.oauth2.core.oidc.OidcScopes;
 import org.springframework.security.oauth2.server.authorization.client.InMemoryRegisteredClientRepository;
 import org.springframework.security.oauth2.server.authorization.client.InMemoryRegisteredClientRepository;
 import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
 import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
 import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository;
 import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository;
+import org.springframework.security.oauth2.server.authorization.config.ProviderSettings;
 
 
 import java.util.UUID;
 import java.util.UUID;
 
 
@@ -45,8 +47,11 @@ public class AuthorizationServerConfig {
 				.clientSecret("secret")
 				.clientSecret("secret")
 				.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
 				.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
 				.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
 				.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
+				.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
 				.authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
 				.authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
+				.redirectUri("http://localhost:8080/login/oauth2/code/messaging-client-oidc")
 				.redirectUri("http://localhost:8080/authorized")
 				.redirectUri("http://localhost:8080/authorized")
+				.scope(OidcScopes.OPENID)
 				.scope("message.read")
 				.scope("message.read")
 				.scope("message.write")
 				.scope("message.write")
 				.clientSettings(clientSettings -> clientSettings.requireUserConsent(true))
 				.clientSettings(clientSettings -> clientSettings.requireUserConsent(true))
@@ -59,4 +64,9 @@ public class AuthorizationServerConfig {
 	public CryptoKeySource keySource() {
 	public CryptoKeySource keySource() {
 		return new StaticKeyGeneratingCryptoKeySource();
 		return new StaticKeyGeneratingCryptoKeySource();
 	}
 	}
+
+	@Bean
+	public ProviderSettings providerSettings() {
+		return new ProviderSettings().issuer("http://auth-server:9000");
+	}
 }
 }

+ 3 - 3
samples/boot/oauth2-integration/client/src/main/java/sample/config/SecurityConfig.java

@@ -40,10 +40,10 @@ public class SecurityConfig {
 	SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
 	SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
 		http
 		http
 			.authorizeRequests(authorizeRequests ->
 			.authorizeRequests(authorizeRequests ->
-				authorizeRequests.anyRequest().permitAll()
+				authorizeRequests.anyRequest().authenticated()
 			)
 			)
-			.logout()
-				.disable()
+			.oauth2Login(oauth2Login ->
+				oauth2Login.loginPage("/oauth2/authorization/messaging-client-oidc"))
 			.oauth2Client(withDefaults());
 			.oauth2Client(withDefaults());
 		return http.build();
 		return http.build();
 	}
 	}

+ 11 - 2
samples/boot/oauth2-integration/client/src/main/resources/application.yml

@@ -16,6 +16,14 @@ spring:
     oauth2:
     oauth2:
       client:
       client:
         registration:
         registration:
+          messaging-client-oidc:
+            provider: spring
+            client-id: messaging-client
+            client-secret: secret
+            authorization-grant-type: authorization_code
+            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
+            scope: openid
+            client-name: messaging-client-oidc
           messaging-client-authorization-code:
           messaging-client-authorization-code:
             provider: spring
             provider: spring
             client-id: messaging-client
             client-id: messaging-client
@@ -23,16 +31,17 @@ spring:
             authorization-grant-type: authorization_code
             authorization-grant-type: authorization_code
             redirect-uri: "{baseUrl}/authorized"
             redirect-uri: "{baseUrl}/authorized"
             scope: message.read,message.write
             scope: message.read,message.write
+            client-name: messaging-client-authorization-code
           messaging-client-client-credentials:
           messaging-client-client-credentials:
             provider: spring
             provider: spring
             client-id: messaging-client
             client-id: messaging-client
             client-secret: secret
             client-secret: secret
             authorization-grant-type: client_credentials
             authorization-grant-type: client_credentials
             scope: message.read,message.write
             scope: message.read,message.write
+            client-name: messaging-client-client-credentials
         provider:
         provider:
           spring:
           spring:
-            authorization-uri: http://auth-server:9000/oauth2/authorize
-            token-uri: http://auth-server:9000/oauth2/token
+            issuer-uri: http://auth-server:9000
 
 
 messages:
 messages:
   base-uri: http://localhost:8090/messages
   base-uri: http://localhost:8090/messages

+ 1 - 1
samples/boot/oauth2-integration/resourceserver/src/main/resources/application.yml

@@ -14,4 +14,4 @@ spring:
     oauth2:
     oauth2:
       resourceserver:
       resourceserver:
         jwt:
         jwt:
-          jwk-set-uri: http://auth-server:9000/oauth2/jwks
+          issuer-uri: http://auth-server:9000