搭建Oauth2服务器

本文详细介绍了如何使用Spring Boot搭建Oauth2服务器,包括创建Spring Boot工程、配置认证中心和配置中心,以及各种授权方式的验证,如密码、授权码、客户端和简化认证。在搭建过程中,提到了配置客户端信息、用户源、重定向地址等关键步骤,最后总结了搭建过程中遇到的问题及解决方案。
摘要由CSDN通过智能技术生成

一、搭建Oauth2服务器

​ 本次搭建oauth2服务器全程使用IntelliJ IDEA。

1、创建springboot工程

1、初始相关依赖如下:

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
            <version>2.3.3.RELEASE</version>
        </dependency>

2、创建Authorication认证中心

1、在config包下创建AuthoricationServerConfig配置类,继承AuthorizationServerConfigurerAdapter类。

2、加上@Configuration注解 使其成为一个配置类

3、加上@EnableAuthorizationServer注解 使其作为认证中心

@Configuration
@EnableAuthorizationServer
public class AuthoricationServerConfig extends AuthorizationServerConfigurerAdapter {
   }

在该类中主要重写

//配置客户端(应用)信息
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
   
    super.configure(clients);
}
//配置授权服务器端点的属性和增强的功能。
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
   
    super.configure(endpoints);
}
//配置授权服务器安全信息
@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
   
    super.configure(security);
}

三个方法配置授权服务器认证中心

2.1、配置客户端信息

​ 这里配置哪些客户端可以获得授权、授权范围、授权方式、令牌有效期及刷新令牌有效期等信息,详细代码实现及相关解释如下

/**
     * 客户端相关配置
     * 2、配置客户端(应用)信息  非用户信息
     * 客户端详细信息在这里进行初始化,你能够把客户端详情信息写死在这里或者是通过数据库来存储调取详情信息
     * @param clients
     * @throws Exception
     */
    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
   
        //super.configure(clients);
        // 在内存中存储客户端信息
        clients.inMemory()
                // 配置客户端Id
                .withClient("client")
                // 客户端密钥 “{}”为加密方式 noop为不加密
                // 现如今Spring Security中密钥的存储格式是“{id}…………” 所以“{}”必要 否则报错:There is no PasswordEncoder mapped for the id “null”
                .secret("{noop}123456")
                // 配置授权范围 read、write、all
                .scopes("all")
                // 配置该客户端支持的授权方式
                .authorizedGrantTypes("authorization_code","password","client_credentials","refresh_token","implicit")
                // token令牌有效期 单位s
                .accessTokenValiditySeconds(1800)
                // refreshtoken刷新令牌有效期 单位s 一般来说刷新令牌比令牌有效期长 便于使用刷新令牌换取令牌
                .refreshTokenValiditySeconds(3600);
                // 基本上来说 到这一步就完成了一个客户端的配置了
                // 如果想要配置多个客户端 往下使用.and()连接
                //.and()
        		//.withClient()
            	//.secret()
            	//.scopes()
            	//.authorizedGrantTypes()
            	//.accessTokenValiditySeconds()
            	//.refreshTokenValiditySeconds();
    }

2.2、配置AuthenticationManager

(第一次搭建忽略这一步,后续说明原因)

3、创建webSecurity配置中心

1、在config包下创建WebSecurityConfig配置类,继承WebSecurityConfigurerAdapter类。

2、加上@Configuration注解 使其成为一个配置类

3、加上@EnableWebSecurity注解 使其作为websecurity配置中心

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值