From a8369b32a23d33c602fb9c541eab6e0cb1dbd4b5 Mon Sep 17 00:00:00 2001 From: YoVinchen Date: Mon, 21 Aug 2023 10:54:45 +0800 Subject: [PATCH] =?UTF-8?q?OAuth2RestTemplate=E5=AE=9E=E7=8E=B0=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/test/BookApplication.java | 3 +- .../test/config/ResourceConfiguration.java | 24 ++++++++++++++++ .../src/main/resources/application.yml | 8 ++---- .../main/java/com/test/BorrowApplication.java | 3 +- .../com/test/config/WebConfiguration.java | 28 +++++++++++++++++++ .../test/service/impl/BorrowServiceImpl.java | 6 ++-- .../src/main/resources/application.yml | 8 ++---- .../main/java/com/test/UserApplication.java | 3 +- .../src/main/resources/application.yml | 8 ++---- 9 files changed, 68 insertions(+), 23 deletions(-) create mode 100644 book-service/src/main/java/com/test/config/ResourceConfiguration.java create mode 100644 borrow-service/src/main/java/com/test/config/WebConfiguration.java diff --git a/book-service/src/main/java/com/test/BookApplication.java b/book-service/src/main/java/com/test/BookApplication.java index 6b481cc..467ea43 100644 --- a/book-service/src/main/java/com/test/BookApplication.java +++ b/book-service/src/main/java/com/test/BookApplication.java @@ -3,6 +3,7 @@ package com.test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; /** * ClassName: BookApplication @@ -11,7 +12,7 @@ import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth * @author yovinchen * @Create 2023/8/14 16:23 */ -@EnableOAuth2Sso +@EnableResourceServer @SpringBootApplication public class BookApplication { public static void main(String[] args) { diff --git a/book-service/src/main/java/com/test/config/ResourceConfiguration.java b/book-service/src/main/java/com/test/config/ResourceConfiguration.java new file mode 100644 index 0000000..1043f29 --- /dev/null +++ b/book-service/src/main/java/com/test/config/ResourceConfiguration.java @@ -0,0 +1,24 @@ +package com.test.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; + +/** + * ClassName: con + * Package: com.test.config + * + * @author yovinchen + * @Create 2023/8/21 10:23 + */ +@Configuration +public class ResourceConfiguration extends ResourceServerConfigurerAdapter { //继承此类进行高度自定义 + + @Override + public void configure(HttpSecurity http) throws Exception { //这里也有HttpSecurity对象,方便我们配置SpringSecurity + http + .authorizeRequests() + .anyRequest().access("#oauth2.hasScope('lbwnb')"); //添加自定义规则 + //Token必须要有我们自定义scope授权才可以访问此资源 + } +} diff --git a/book-service/src/main/resources/application.yml b/book-service/src/main/resources/application.yml index bba7136..c0146f8 100644 --- a/book-service/src/main/resources/application.yml +++ b/book-service/src/main/resources/application.yml @@ -9,13 +9,9 @@ spring: security: oauth2: client: - #不多说了 + #基操 client-id: web client-secret: 654321 - #Token获取地址 - access-token-uri: http://localhost:8500/sso/oauth/token - #验证页面地址 - user-authorization-uri: http://localhost:8500/sso/oauth/authorize resource: - #Token信息获取和校验地址 + #因为资源服务器得验证你的Token是否有访问此资源的权限以及用户信息,所以只需要一个验证地址 token-info-uri: http://localhost:8500/sso/oauth/check_token diff --git a/borrow-service/src/main/java/com/test/BorrowApplication.java b/borrow-service/src/main/java/com/test/BorrowApplication.java index 2fd3d18..ee9da23 100644 --- a/borrow-service/src/main/java/com/test/BorrowApplication.java +++ b/borrow-service/src/main/java/com/test/BorrowApplication.java @@ -3,6 +3,7 @@ package com.test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; /** * ClassName: BorrowApplication @@ -11,7 +12,7 @@ import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth * @author yovinchen * @Create 2023/8/14 16:25 */ -@EnableOAuth2Sso +@EnableResourceServer @SpringBootApplication public class BorrowApplication { public static void main(String[] args) { diff --git a/borrow-service/src/main/java/com/test/config/WebConfiguration.java b/borrow-service/src/main/java/com/test/config/WebConfiguration.java new file mode 100644 index 0000000..76e243f --- /dev/null +++ b/borrow-service/src/main/java/com/test/config/WebConfiguration.java @@ -0,0 +1,28 @@ +package com.test.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.oauth2.client.OAuth2ClientContext; +import org.springframework.security.oauth2.client.OAuth2RestTemplate; +import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails; + +import javax.annotation.Resource; + +/** + * ClassName: ma + * Package: com.test.config + * + * @author yovinchen + * @Create 2023/8/21 10:52 + */ +@Configuration +public class WebConfiguration { + + @Resource + OAuth2ClientContext context; + + @Bean + public OAuth2RestTemplate restTemplate(){ + return new OAuth2RestTemplate(new ClientCredentialsResourceDetails(), context); + } +} diff --git a/borrow-service/src/main/java/com/test/service/impl/BorrowServiceImpl.java b/borrow-service/src/main/java/com/test/service/impl/BorrowServiceImpl.java index 0cf1be6..da41981 100644 --- a/borrow-service/src/main/java/com/test/service/impl/BorrowServiceImpl.java +++ b/borrow-service/src/main/java/com/test/service/impl/BorrowServiceImpl.java @@ -8,6 +8,7 @@ import com.test.entity.User; import com.test.entity.UserBorrowDetail; import com.test.mapper.BorrowMapper; import com.test.service.BorrowService; +import org.springframework.security.oauth2.client.OAuth2RestTemplate; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @@ -28,11 +29,12 @@ public class BorrowServiceImpl implements BorrowService { @Resource BorrowMapper mapper; + @Resource + OAuth2RestTemplate template; + @Override public UserBorrowDetail getUserBorrowDetailByUid(int uid) { List borrow = mapper.getBorrowsByUid(uid); - //RestTemplate支持多种方式的远程调用 - RestTemplate template = new RestTemplate(); //这里通过调用getForObject来请求其他服务,并将结果自动进行封装 //获取User信息 User user = template.getForObject("http://localhost:8101/user/" + uid, User.class); diff --git a/borrow-service/src/main/resources/application.yml b/borrow-service/src/main/resources/application.yml index 8c74635..20977ed 100644 --- a/borrow-service/src/main/resources/application.yml +++ b/borrow-service/src/main/resources/application.yml @@ -9,13 +9,9 @@ spring: security: oauth2: client: - #不多说了 + #基操 client-id: web client-secret: 654321 - #Token获取地址 - access-token-uri: http://localhost:8500/sso/oauth/token - #验证页面地址 - user-authorization-uri: http://localhost:8500/sso/oauth/authorize resource: - #Token信息获取和校验地址 + #因为资源服务器得验证你的Token是否有访问此资源的权限以及用户信息,所以只需要一个验证地址 token-info-uri: http://localhost:8500/sso/oauth/check_token diff --git a/user-service/src/main/java/com/test/UserApplication.java b/user-service/src/main/java/com/test/UserApplication.java index a9395da..9856d1c 100644 --- a/user-service/src/main/java/com/test/UserApplication.java +++ b/user-service/src/main/java/com/test/UserApplication.java @@ -3,6 +3,7 @@ package com.test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; /** * ClassName: UserApplication @@ -11,7 +12,7 @@ import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth * @author yovinchen * @Create 2023/8/14 16:26 */ -@EnableOAuth2Sso +@EnableResourceServer @SpringBootApplication public class UserApplication { public static void main(String[] args) { diff --git a/user-service/src/main/resources/application.yml b/user-service/src/main/resources/application.yml index 733e03b..3f85199 100644 --- a/user-service/src/main/resources/application.yml +++ b/user-service/src/main/resources/application.yml @@ -9,13 +9,9 @@ spring: security: oauth2: client: - #不多说了 + #基操 client-id: web client-secret: 654321 - #Token获取地址 - access-token-uri: http://localhost:8500/sso/oauth/token - #验证页面地址 - user-authorization-uri: http://localhost:8500/sso/oauth/authorize resource: - #Token信息获取和校验地址 + #因为资源服务器得验证你的Token是否有访问此资源的权限以及用户信息,所以只需要一个验证地址 token-info-uri: http://localhost:8500/sso/oauth/check_token