oAuth2基于内存存储令牌

2019-04-28  本文已影响0人  Lucie_xxm

概述

内存存储令牌 的模式用于演示最基本的操作,快速理解 oAuth2 认证服务器中 "认证"、"授权"、"访问令牌” 的基本概念

注: 默认使用springboot启动web项目

pom

添加依赖相应的依赖

  <!-- Spring Security -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-oauth2</artifactId>
        </dependency>
    </dependencies>

配置认证服务

创建一个类继承 AuthorizationServerConfigurerAdapter 并添加相关注解:

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients
                .inMemory()
                .withClient("client")
                .secret("secret")
                .authorizedGrantTypes("authorization_code")
                .scopes("app")
                .redirectUris("http://www.baidu.com");

    }

}

服务器安全配置

创建一个类继承 WebSecurityConfigurerAdapter 并添加相关注解:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true,securedEnabled = true,jsr250Enabled = true)
public class WebSecutityConfigurer extends WebSecurityConfigurerAdapter {

}

application.properties

## Spring server 
spring.application.name=oauth2-server
spring.security.user.name=root
spring.security.user.password=123456
server.port=8080

访问获取授权码

打开浏览器,输入地址:

http://localhost:8080/oauth/authorize?client_id=client&response_type=code

第一次访问会跳转到登录页面

验证成功后会询问用户是否授权客户端

选择授权后会跳转,浏览器地址上还会包含一个授权码(code=1JuO6V),浏览器地址栏会显示如下地址:

http://www.baidu.com/?code=1JuO6V

有了这个授权码就可以获取访问令牌了

通过授权码向服务器申请令牌

通过 CURL 或是 Postman 请求

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'grant_type=authorization_code&code=1JuO6V' "http://client:secret@localhost:8080/oauth/token"
上一篇 下一篇

猜你喜欢

热点阅读