springcloud+oAuth2(1-基于内存的授权服务的配置 以及 授权模式的测试)

本文介绍了如何在SpringCloud项目中配置oAuth2授权服务,包括基于内存的存储方式,详细讲解了授权码、简化、密码和客户端模式的测试步骤。通过配置AuthorizationServerConfigurerAdapter,TokenStore,以及WebSecurity,实现了一个简单的授权服务。
摘要由CSDN通过智能技术生成

OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。OAuth的服务的提供方涵盖了两个服务 ,即授权服务和资源服务;

授权服务包含对接入端和用户的合法性进行验证并颁发token等功能,

如何配置授权服务呢?

第一步:准备一个springcloud项目并引入oAuth2的依赖

<!-- oAuth2 -->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-oauth2</artifactId>
	<version>2.0.2.RELEASE</version>
</dependency>

第二步:配置授权服务,这里会实现oAuth2提供的AuthorizationServerConfigurerAdapter接口,并实现里面主要的三个方法来实现授权服务的配置,需要实现方法如下图:
在这里插入图片描述
详细授权服务的配置步骤 如下

  • 2.1:在配置类上面指定@EnableAuthorizationServer注解

  • 2.2:ClientDetailsServiceConfigurer客户端的配置,也就是需要认证的第三方服务信息,之后会配置在数据库,下面代码就是配置的一个用户的详细信息

/**
     * 配置一
     * 配置客户端的详细信息,也就是需要认证的第三方服务
     * @param clients
     * @throws Exception
     */
    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
   
        //基于内存的客户端配置方式,以后改为数据库
        clients.inMemory()
                //客户端的ID
                .withClient("clientid_1")
                //客户端可以访问的资源列表
                .resourceIds("demo_resource_1","demo_resource_2")
                //客户端的密钥
                .secret(new BCryptPasswordEncoder().encode("123456"))
                //oAuth2.0支持的五种授权类型
                .authorizedGrantTypes("password","client_credentials","authorization_code","implicit","refresh_token")
                //允许授权的范围
                .scopes("all")
                //false:授权码模式,授权的是后跳转到授权页面 ,true:不跳转,直接发送令牌
                .autoApprove(false)
                //验证回调地址
                .redirectUris("http://www.baidu.com");

    }
  • 2.3AuthorizationServerEndpointsConfigurer用来配置令牌的管理,比如时长,以及令牌的端点

2.3.1首先配置令牌的储存方式(基于内存的存储)

@Configuration
public class TokenStoreConfig {
   
    /**
     * 令牌的存储策列(基于内存的存储)生成普通令牌,后面可用jwt
     * @return
     */
    @Bean
    public TokenStore tokenStore(){
   
        return new InMemoryTokenStore();
    }
}

2.3.2 配置令牌的规则 (tokenStore就是上一步2.3.1的令牌储存策列)

	//自定义的令牌储存规则 2.3.1
	@Autowired
    private TokenStore tokenStore;
    @Autowired
    private ClientDetailsService clientDetailsService;

   /**
     * 配置令牌的管理以及规则
     * @return
     */
    @Bean
    public AuthorizationServerTokenServices tokenServices(){
   
        DefaultTokenServices service = new DefaultTokenServices();
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值