From 6be1196e9e5a97d05506c1e62a8a2089133afdfd Mon Sep 17 00:00:00 2001
From: YunaiV <>
Date: Wed, 24 Jun 2020 19:40:54 +0800
Subject: [PATCH] =?UTF-8?q?=E7=A0=94=E7=A9=B6=E4=B8=8B=20OAuth2=20?=
=?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=94=B9=E9=80=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pom.xml | 7 ---
.../OAuth2AuthorizationServerConfig.java | 8 ++--
.../config/OAuth2ResourceServerConfig.java | 11 +----
.../controller/LoginController.java | 46 +++++++------------
.../src/main/resources/application.yml | 6 ++-
lab-68/pom.xml | 2 +-
6 files changed, 28 insertions(+), 52 deletions(-)
diff --git a/lab-68/lab-68-demo01-resource-owner-password-credentials-server/pom.xml b/lab-68/lab-68-demo01-resource-owner-password-credentials-server/pom.xml
index 7342978f..27f7b4c6 100644
--- a/lab-68/lab-68-demo01-resource-owner-password-credentials-server/pom.xml
+++ b/lab-68/lab-68-demo01-resource-owner-password-credentials-server/pom.xml
@@ -44,13 +44,6 @@
spring-boot-starter-security
-
-
-
-
-
-
-
org.springframework.security.oauth.boot
diff --git a/lab-68/lab-68-demo02-authorization-server-with-resource-owner-password-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/OAuth2AuthorizationServerConfig.java b/lab-68/lab-68-demo02-authorization-server-with-resource-owner-password-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/OAuth2AuthorizationServerConfig.java
index bb5bd507..e41c4f1a 100644
--- a/lab-68/lab-68-demo02-authorization-server-with-resource-owner-password-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/OAuth2AuthorizationServerConfig.java
+++ b/lab-68/lab-68-demo02-authorization-server-with-resource-owner-password-credentials/src/main/java/cn/iocoder/springboot/lab68/authorizationserverdemo/config/OAuth2AuthorizationServerConfig.java
@@ -29,10 +29,10 @@ public class OAuth2AuthorizationServerConfig extends AuthorizationServerConfigur
@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
-// oauthServer.tokenKeyAccess("isAuthenticated()")
-// .checkTokenAccess("isAuthenticated()");
- oauthServer.tokenKeyAccess("permitAll()")
- .checkTokenAccess("permitAll()");
+ oauthServer.tokenKeyAccess("isAuthenticated()")
+ .checkTokenAccess("isAuthenticated()");
+// oauthServer.tokenKeyAccess("permitAll()")
+// .checkTokenAccess("permitAll()");
}
@Override
diff --git a/lab-68/lab-68-demo02-resource-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java b/lab-68/lab-68-demo02-resource-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java
index ce90a21f..af05b988 100644
--- a/lab-68/lab-68-demo02-resource-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java
+++ b/lab-68/lab-68-demo02-resource-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/config/OAuth2ResourceServerConfig.java
@@ -15,18 +15,11 @@ public class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
+ // 设置 /login 无需权限访问
.antMatchers("/login").permitAll()
+ // 设置其它请求,需要认证后访问
.anyRequest().authenticated()
;
}
-//
-// @Bean
-// public OAuth2RestTemplate oauth2RestTemplate(OAuth2ProtectedResourceDetails details) {
-// OAuth2RestTemplate oAuth2RestTemplate = new OAuth2RestTemplate(details);
-//
-// /* To validate if required configurations are in place during startup */
-// return oAuth2RestTemplate;
-// }
-
}
diff --git a/lab-68/lab-68-demo02-resource-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/LoginController.java b/lab-68/lab-68-demo02-resource-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/LoginController.java
index 5765cd3f..809c9a9d 100644
--- a/lab-68/lab-68-demo02-resource-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/LoginController.java
+++ b/lab-68/lab-68-demo02-resource-server/src/main/java/cn/iocoder/springboot/lab68/resourceserverdemo/controller/LoginController.java
@@ -1,5 +1,8 @@
package cn.iocoder.springboot.lab68.resourceserverdemo.controller;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.security.oauth2.OAuth2ClientProperties;
import org.springframework.security.oauth2.client.OAuth2RestTemplate;
import org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordAccessTokenProvider;
import org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordResourceDetails;
@@ -13,42 +16,27 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/")
public class LoginController {
-// @Autowired
-// private OAuth2ProtectedResourceDetails details;
+ @Autowired
+ private OAuth2ClientProperties oauth2ClientProperties;
+
+ @Value("${security.oauth2.access-token-uri}")
+ private String accessTokenUri;
@PostMapping("/login")
- public String login(@RequestParam("username") String username,
- @RequestParam("password") String password) {
+ public OAuth2AccessToken login(@RequestParam("username") String username,
+ @RequestParam("password") String password) {
+ // 创建 ResourceOwnerPasswordResourceDetails 对象
ResourceOwnerPasswordResourceDetails resourceDetails = new ResourceOwnerPasswordResourceDetails();
+ resourceDetails.setAccessTokenUri(accessTokenUri);
+ resourceDetails.setClientId(oauth2ClientProperties.getClientId());
+ resourceDetails.setClientSecret(oauth2ClientProperties.getClientSecret());
resourceDetails.setUsername(username);
resourceDetails.setPassword(password);
- resourceDetails.setClientId("clientapp");
- resourceDetails.setClientSecret("112233");
- resourceDetails.setAccessTokenUri("http://127.0.0.1:8080/oauth/token");
-// resourceDetails.setAccessTokenUri("http://127.0.0.1:8080/oauth/authorize");
+ // 创建 OAuth2RestTemplate 对象
OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(resourceDetails);
-// resourceDetails.setClientAuthenticationScheme(AuthenticationScheme.form); // fetch access_token by sending authentication data in HTTP Body
-// resourceDetails.setAuthenticationScheme(AuthenticationScheme.header); // send access_token via HTTP Header 'Bearer' field when accessing actual service
-//
-// DefaultAccessTokenRequest defaultAccessTokenRequest = new DefaultAccessTokenRequest();
restTemplate.setAccessTokenProvider(new ResourceOwnerPasswordAccessTokenProvider());
- OAuth2AccessToken accessToken = restTemplate.getAccessToken();
-
- String result = restTemplate.postForObject("http://127.0.0.1:8080/oauth/authorize", resourceDetails,
- String.class);
- return "";
+ // 获取访问令牌
+ return restTemplate.getAccessToken();
}
-// public String login() {
-// ResourceOwnerPasswordResourceDetails resourceDetails = new ResourceOwnerPasswordResourceDetails();
-// resourceDetails.setUsername("roy");
-// resourceDetails.setPassword("spring");
-// resourceDetails.setAccessTokenUri(format("http://localhost:%d/oauth/token", port));
-// resourceDetails.setClientId("clientapp");
-// resourceDetails.setClientSecret("123456");
-// resourceDetails.setGrantType("password");
-// resourceDetails.setScope(asList("read", "write"));
-//
-// }
-
}
diff --git a/lab-68/lab-68-demo02-resource-server/src/main/resources/application.yml b/lab-68/lab-68-demo02-resource-server/src/main/resources/application.yml
index 05600270..72413355 100644
--- a/lab-68/lab-68-demo02-resource-server/src/main/resources/application.yml
+++ b/lab-68/lab-68-demo02-resource-server/src/main/resources/application.yml
@@ -3,10 +3,12 @@ server:
security:
oauth2:
- # OAuth2 Client 配置
+ # OAuth2 Client 配置,对应 OAuth2ClientProperties 类
client:
client-id: clientapp
client-secret: 112233
- # OAuth2 Resource 配置
+ # OAuth2 Resource 配置,对应 ResourceServerProperties 类
resource:
token-info-uri: http://127.0.0.1:8080/oauth/check_token # 获得 Token 信息的 URL
+ # 访问令牌获取 URL,自定义的
+ access-token-uri: http://127.0.0.1:8080/oauth/token
diff --git a/lab-68/pom.xml b/lab-68/pom.xml
index 2e63f9ba..82ad013f 100644
--- a/lab-68/pom.xml
+++ b/lab-68/pom.xml
@@ -12,7 +12,7 @@
lab-68
pom
-
+ lab-68-demo01-resource-owner-password-credentials-server
lab-68-demo02-resource-server
lab-68-demo02-authorization-server-with-resource-owner-password-credentials