springcloud 整合 oauth2.0
时间: 2023-11-02 08:07:18 浏览: 171
springCloud+Oauth2
Spring Cloud Security 为我们提供了 OAuth2 Client 和 OAuth2 Resource Server 的自动配置。我们可以通过在 Spring Boot 应用程序中添加以下依赖关系来使用它们:
```xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-resource-server</artifactId>
</dependency>
```
这将添加 Spring Security 和 OAuth2 Client 和 OAuth2 Resource Server 的所有必需组件。
在配置文件中配置 OAuth2 客户端应用程序的详细信息,如下所示:
```yaml
spring:
security:
oauth2:
client:
registration:
github:
client-id: ***
client-secret: ***
provider:
github:
authorization-uri: https://github.com/login/oauth/authorize
token-uri: https://github.com/login/oauth/access_token
user-info-uri: https://api.github.com/user
user-name-attribute: login
```
在这里,我们配置了一个名为“github”的 OAuth2 客户端应用程序,并提供了必要的详细信息,例如客户端 ID、客户端密钥和提供者详细信息。
我们可以使用 `@EnableOAuth2Sso` 注解启用单点登录(SSO)支持。如果我们要使用 OAuth2 作为资源服务器,则可以使用 `@EnableResourceServer` 注解来启用资源服务器支持。
我们可以在需要保护的端点上使用 `@EnableOAuth2Sso` 或 `@EnableResourceServer` 注解来保护它们。例如,以下是一个使用 `@EnableResourceServer` 注解保护端点的示例:
```java
@RestController
@EnableResourceServer
public class UserController {
@GetMapping("/user")
public Principal user(Principal principal) {
return principal;
}
}
```
这里,我们使用 `@EnableResourceServer` 注解启用资源服务器支持,并在 `/user` 端点上保护它。在这里,我们使用 `Principal` 对象返回当前经过身份验证的用户信息。
以上是 Spring Cloud Security 集成 OAuth2 的基本介绍,你可以根据需要进一步了解和配置。
阅读全文