Spring Cloud Security OAuth2的授权模式授权码模式(二)
2023-06-13 09:18:31 时间
配置资源服务器
在配置类中还需要添加资源服务器的配置:
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/api/**").authenticated()
.anyRequest().permitAll();
}
}
这个配置类将启用资源服务器并配置 HTTP 安全性,使得只有经过身份验证的用户才能访问 /api
路径下的资源。
配置安全性
最后,在 Spring Boot 应用程序的配置文件中添加以下内容:
spring:
security:
oauth2:
client:
registration:
my-client:
client-id: my-client
client-secret: my-secret
authorization-grant-type: authorization_code
redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
scope: read,user_info
provider:
my-provider:
authorization-uri: https://my-provider.com/oauth2/authorize
token-uri: https://my-provider.com/oauth2/token
user-info-uri: https://my-provider.com/oauth2/userinfo
user-name-attribute: name
这个配置文件指定了 OAuth2 客户端的详情、OAuth2 提供者的详情以及受保护资源的范围。
测试授权码模式
现在,您已经完成了 Spring Cloud Security OAuth2 授权码模式的配置。您可以使用下面的代码在您的 Spring Boot 应用程序中测试授权码模式:
@RestController
public class TestController {
@GetMapping("/api/test")
public String test() {
return "Hello World!";
}
}
这个控制器定义了一个 /api/test
的端点,只有经过身份验证的用户才能访问。
您可以使用以下 URL 向您的应用程序发出授权请求:
https://localhost:8080/oauth2/authorize?client_id=my-client&response_type=code&redirect_uri=https://localhost:8080/login/oauth2/code/my-client&scope=read,user_info
该 URL 将重定向用户到认证服务器的授权页面,要求用户输入用户名和密码,并批准授权请求。如果用户批准授权请求,认证服务器将向用户发回授权码,并将用户重定向回应用程序。
应用程序现在可以使用以下代码将授权码交换为访问令牌:
@RestController
public class OAuth2Controller {
@Autowired
private OAuth2AuthorizedClientService authorizedClientService;
@GetMapping("/oauth2/token")
public String token(OAuth2AuthenticationToken authentication) {
OAuth2AuthorizedClient authorizedClient =
authorizedClientService.loadAuthorizedClient(
authentication.getAuthorizedClientRegistrationId(),
authentication.getName());
return authorizedClient.getAccessToken().getTokenValue();
}
}
该代码使用 Spring Security OAuth2 提供的 OAuth2AuthorizedClientService
来获取访问令牌,并将其返回给客户端。
相关文章
- Spring batch教程 之 spring batch简介
- Spring Cloud实战|3.SpringCloud 整合Gateway
- 解释spring框架中bean的生命周期_Spring bean的生命周期
- Springboot整合shiro_spring boot框架介绍
- 基于Spring Task的Spring定时任务
- 应用启动加速-并发初始化spring bean
- Spring Cloud Ablibaba 学习系列文章
- 微服务治理框架- - -Spring Cloud
- Elastic-Job2.1.5源码-自定义Spring标签与Spring 依赖注入无缝整合
- Spring基础(十):AOP概念和原理
- Spring Cloud Sleuth 被官方彻底移除!我真是醉醉的了。。。
- Spring Cloud Consul服务注册与发现
- Spring源码学习方法
- Spring Cloud Config
- Spring Cloud Zuul简介
- Spring Cloud Rest的环境搭建详解【服务提供者和服务消费者】
- Spring Cloud Stream 高级特性-分组和多通道
- Spring Cloud Security使用OAuth2授权服务器来保护API
- Spring Cloud Security OAuth2 中实现混合模式
- Spring Cloud Security配置JWT和OAuth2的集成实现授权管理(三)
- Spring Cloud Security使用Spring Cloud Config集中管理安全配置
- 使用 Spring Cloud Bus 向指定的微服务发送消息
- 获取Spring容器Bean对象工具类详解编程语言
- Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例详解编程语言
- Spring boot 定时器详解编程语言
- spring boot 拦截异常 统一处理详解编程语言
- Spring体系结构详解
- Spring MVC验证器:Validator接口和ValidationUtils类