Skip to content

Commit 19919e0

Browse files
committed
Init auth-client project
1 parent 4bce373 commit 19919e0

File tree

3 files changed

+117
-0
lines changed

3 files changed

+117
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.relive.config;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
6+
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
7+
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
8+
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder;
9+
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
10+
import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizedClientManager;
11+
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
12+
import org.springframework.security.oauth2.client.web.reactive.function.client.ServletOAuth2AuthorizedClientExchangeFilterFunction;
13+
import org.springframework.security.web.SecurityFilterChain;
14+
import org.springframework.web.reactive.function.client.WebClient;
15+
16+
import static org.springframework.security.config.Customizer.withDefaults;
17+
18+
/**
19+
* @author: ReLive27
20+
* @date: 2024/7/12 21:41
21+
*/
22+
@Configuration(proxyBeanMethods = false)
23+
public class SecurityConfig {
24+
25+
@Bean
26+
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
27+
http
28+
.authorizeHttpRequests(authorizeRequests ->
29+
//during the test period, open the permissions
30+
authorizeRequests.anyRequest().permitAll()
31+
)
32+
.oauth2Client(withDefaults());
33+
return http.build();
34+
}
35+
36+
@Bean
37+
WebClient webClient(OAuth2AuthorizedClientManager authorizedClientManager) {
38+
ServletOAuth2AuthorizedClientExchangeFilterFunction oauth2Client = new ServletOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
39+
return WebClient.builder()
40+
.apply(oauth2Client.oauth2Configuration())
41+
.build();
42+
}
43+
44+
@Bean
45+
OAuth2AuthorizedClientManager authorizedClientManager(ClientRegistrationRepository clientRegistrationRepository,
46+
OAuth2AuthorizedClientRepository authorizedClientRepository) {
47+
48+
OAuth2AuthorizedClientProvider authorizedClientProvider = OAuth2AuthorizedClientProviderBuilder
49+
.builder()
50+
.authorizationCode()
51+
.refreshToken()
52+
.build();
53+
DefaultOAuth2AuthorizedClientManager authorizedClientManager = new DefaultOAuth2AuthorizedClientManager(clientRegistrationRepository, authorizedClientRepository);
54+
authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
55+
56+
return authorizedClientManager;
57+
}
58+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.relive.controller;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
5+
import org.springframework.security.oauth2.client.annotation.RegisteredOAuth2AuthorizedClient;
6+
import org.springframework.web.bind.annotation.GetMapping;
7+
import org.springframework.web.bind.annotation.RestController;
8+
import org.springframework.web.reactive.function.client.WebClient;
9+
10+
import java.util.Map;
11+
12+
import static org.springframework.security.oauth2.client.web.reactive.function.client.ServletOAuth2AuthorizedClientExchangeFilterFunction.oauth2AuthorizedClient;
13+
14+
/**
15+
* @author: ReLive27
16+
* @date: 2024/7/12 21:42
17+
*/
18+
@RestController
19+
public class ClientTestController {
20+
21+
@Autowired
22+
private WebClient webClient;
23+
24+
@GetMapping(value = "/client/test")
25+
public Map<String, Object> getArticles(@RegisteredOAuth2AuthorizedClient("messaging-client-authorization-code") OAuth2AuthorizedClient authorizedClient) {
26+
return this.webClient
27+
.get()
28+
.uri("http://127.0.0.1:8090/resource/test")
29+
.attributes(oauth2AuthorizedClient(authorizedClient))
30+
.retrieve()
31+
.bodyToMono(Map.class)
32+
.block();
33+
}
34+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
server:
2+
port: 8070
3+
servlet:
4+
session:
5+
cookie:
6+
name: CLIENT-SESSION
7+
8+
spring:
9+
security:
10+
oauth2:
11+
client:
12+
registration:
13+
messaging-client-authorization-code:
14+
provider: client-provider
15+
client-id: relive-client
16+
client-secret: relive-client
17+
authorization-grant-type: authorization_code
18+
redirect-uri: "http://127.0.0.1:8070/login/oauth2/code/{registrationId}"
19+
scope: message.read
20+
client-name: messaging-client-authorization-code
21+
client-authentication-method: client_secret_post
22+
provider:
23+
client-provider:
24+
authorization-uri: http://127.0.0.1:8080/oauth2/authorize
25+
token-uri: http://127.0.0.1:8080/oauth2/token

0 commit comments

Comments
 (0)