oauth2快速入门过程是怎样的

发布时间:2021-10-11 09:42:41 作者:柒染
来源:亿速云 阅读:127

这期内容当中小编将会给大家带来有关oauth2快速入门过程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

一 快速启动

1 在项目中加入相关的依赖

需要 导入 易水公共组件 和 spring-security-oauth3-autoconfigure两个依赖

<dependency>
    <groupId>org.springframework.security.oauth.boot</groupId>
    <artifactId>spring-security-oauth3-autoconfigure</artifactId>
    <version>2.2.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.yishuifengxiao.common</groupId>
    <artifactId>common-spring-boot-starter</artifactId>
    <version>4.1.2</version>
</dependency>
2 在项目加入以下代码
    @Configuration
	public class CustomOauth3Config extends OAuth3Config{

	}
3 加上开启注解

加上@EnableResourceServer@EnableAuthorizationServer注解

完全开启示例代码如下:

@Configuration
@EnableWebSecurity
@EnableResourceServer
@EnableAuthorizationServer
public class SecurityConfig extends AbstractSecurityConfig {

	@Override
	protected void configure(HttpSecurity http) throws Exception {
		// 调用父类中的默认配置
		applyAuthenticationConfig(http);
	}

	@Configuration
	public class CustomOauth3Config extends OAuth3Config{

	}

}
4 实现自定义认证逻辑

实现UserDetailsService接口 和 UserDetailsService 接口,完成自己的认证逻辑,并将其注入到spring 的上下文中

【特别注意】在用户未按照此步骤配置自己的授权逻辑时,组件会默认进行一个缺省实现。在缺省实现的情况下,用户能使用任意用户名配合密码(12345678)进行登录

需要特别注意的是,在下面的授权方式之中,UserDetailsService负责校验clientIdclientSecret是否正确,UserDetailsService负责校验usernamepassword是否正确。

完成前面的步骤之后,一个简单的oauth3认证服务器就搭建完成了。

二 四种授权方式

密码模式
POST /oauth/token HTTP/1.1
     Host: oauth3.yishuifengxiao.com
     Authorization: Basic fdsfdsfdsfds
     Content-Type: application/x-www-form-urlencoded

     grant_type=password&username=johndoe&password=A3ddj3w

在请求中,各参数的含义如下

下面是一个响应的例子

{
    "access_token": "BDF867DE69F05143C709",
    "token_type": "bearer",
    "refresh_token": "d7cda8fb15714209a9f9f3b039a0034f",
    "expires_in": 43199,
    "scope": "read write trust",
    "client_id": "yishui"
}
客户端模式
POST /oauth/token HTTP/1.1
     Host: oauth3.yishuifengxiao.com
     Authorization: Basic fdsfdsfdsfds
     Content-Type: application/x-www-form-urlencoded

     grant_type=client_credentials

在本请求中,各参数的含义如下

下面是一个响应的例子

{
    "access_token": "BDF867DE69F05143D3BF",
    "token_type": "bearer",
    "expires_in": 43199,
    "scope": "read write trust",
    "client_id": "yishui"
}

同密码模式相比,客户端模式的响应中缺少了 refresh_token 参数

授权码模式

授权码模式首先需要保证 spring security 的登陆功能正常可用。只有开启 spring security 的登陆功能可用,才能开启授权码功能。

先访问一下请求

GET /oauth/authorize?response_type=code&client_id=yishui&state=xyz
&redirect_uri=http://demo.yishuifengxiao.com/demo HTTP/1.1
Host: oauth3.yishuifengxiao.com

在本请求中,各参数的含义如下:

在进行此请求时,假如用户没有登录,spring security 会进行拦截,因此需要用户先进行登录。

在正常情况下,访问以上请求会被重定向到

http://demo.yishuifengxiao.com/demo?code=fsfsdf &state=xyz

服务器回应客户端的 URI,包含以下参数:

通过上面的请求得到了code以后,用户需要使用下面请求获取到授权码

POST /oauth/token HTTP/1.1
Host: oauth3.yishuifengxiao.com
Authorization: Basic fdsfdsfdsfds
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=fsfsdf
&redirect_uri=demo.yishuifengxiao.com/demo

在本请求中,各参数的含义如下:

简化模式
GET /oauth/authorize?response_type=token&client_id=yishui&state=xyz
        &redirect_uri=http://demo.com/demo    HTTP/1.1
    Host: server.example.com

在本请求中,各参数的含义如下:

  1. response_type:表示授权类型,此处的值固定为"token",必选项。

  2. client_id:表示客户端的 ID,必选项。

  3. redirect_uri:表示重定向的 URI,可选项。

  4. scope:表示权限范围,可选项。

  5. state:表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值。

刷新 token
POST /oauth/token HTTP/1.1
     Host: oauth3.yishuifengxiao.com
     Authorization: Basic fdsfdsfdsfds
     Content-Type: application/x-www-form-urlencoded

     grant_type=refresh_token&refresh_token=sdff

请求中个参数的含义:

三 access_token 使用

通过 前面的方法获取到 access_token 之后,一般有两种使用方法

http://demo.yishuifengxiao.com/user/123?access_token=获得到的access_token

在所有需要授权的请求的请求头里都携带上参数 Authorization=Bearer 获得到的 access_token

在通用组件中,由于对access_token进行了深度处理,因此用户可以access_token通过易水工具包里的 DES 工具饭解析出 token 里携带的信息。

在解密时需要使用的密钥由【安全管理】中设置的yishuifengxiao.security.secret-key属性值决定。

下面是一个 access_token 的解密信息示例

{
    "username": "yishui",
    "clientId": "admin",
    "roles": [
        "ROLE_USER",
        "admin"
    ],
    "grantType": "password"
}

解密信息的各参数的解释:

access_token反解析出用户信息仅限于本组件,原生的 oauth3 的access_token不支持此功能

上述就是小编为大家分享的oauth2快速入门过程是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 如果你是小白,linux快速入门技术值得你收藏
  2. AppleScript 快速入门

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

oauth

上一篇:如何进行imx6开机自动启动用户qt应用

下一篇:如何解决网页设计中Flash默认总是会显示在页面的最顶层的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》