mirror of
https://gitee.com/yudaocode/SpringBoot-Labs.git
synced 2026-09-03 05:53:54 +08:00
研究下 OAuth2 进行改造
This commit is contained in:
@@ -44,13 +44,6 @@
|
||||
<artifactId>spring-boot-starter-security</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 实现对 Spring Security OAuth2 的自动配置 -->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.security.oauth</groupId>-->
|
||||
<!-- <artifactId>spring-security-oauth2</artifactId>-->
|
||||
<!-- <version>2.5.0.RELEASE</version>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<!-- 实现对 Spring Security OAuth2 的自动配置 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.security.oauth.boot</groupId>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@@ -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"));
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<artifactId>lab-68</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
<!-- <module>lab-68-demo01-resource-owner-password-credentials-server</module>-->
|
||||
<module>lab-68-demo01-resource-owner-password-credentials-server</module>
|
||||
<module>lab-68-demo02-resource-server</module>
|
||||
<module>lab-68-demo02-authorization-server-with-resource-owner-password-credentials</module>
|
||||
</modules>
|
||||
|
||||
Reference in New Issue
Block a user