当前位置:首页 > 经验 >

http协议认证方式(http认证方式)

来源:原点资讯(www.yd166.com)时间:2022-11-09 14:15:56作者:YD166手机阅读>>

OIDC中的Id token和OAuth2.0中核心的Access token各自效力或是关注的部分不同。

  • OAuth2提供了Access Token来解决授权第三方应用访问受保护资源的问题;
  • OIDC遵循OAuth2.0协议流程在这个基础上提供了ID Token来解决第三方应用标识用户身份的问题。



OIDC抽象流程

OIDC的流程主要由以下5个步骤构成:

  1. 第三方应用(RP)发送认证请求到认证服务方(OP)
  2. 用户在认证页面进行认证与选择授权内容
  3. 认证服务方(OP)对认证请求进行验证,发送Id token及Access token给第三方应用(RP)
  4. 第三方应用可使用Access token请求用户信息或其他授权内的资源
  5. 资源服务对Access token校验并返回用户信息或资源

流程上,在OAuth2.0中授权码模式和隐式授权模式下,OIDC和OAuth2.0是一样的,但有几个授权模式在某些情况下,在OIDC中就不存在了,当用户无需经过身份认证过程即可获得Access token,比如如下两种模式。

  • 资源所有者密码凭证授权(Resource Owner Password Credentials Grant):第三方应用能够获取到用户的登录凭证就直接可以向授权服务器请求Access token,如此,就去掉了标识用户身份这一过程了。
  • 客户端凭证授权(Client Credentials Grant):这种是标识客户端,直接的参与者人都没有加入到流程中,也不存在标识用户是谁了。



OIDC的几种认证方式

OIDC的认证流程主要是由OAuth2的几种授权流程延伸而来的,主要有以下3种:

  • 授权码流程(Authorization Code Flow):基于OAuth2的授权码流程,在原来code换取Access token的基础上增加了一个Id token。
  • 隐式流程(Implicit Flow):基于OAuth2的隐式流程,在原来从授权服务器重定向到第三方应用仅返回Access token的基础上增加了一个Id token。
  • 混合流程(Hybrid Flow):混合了授权码流程(Authorization Code Flow)和隐式流程(Implici Flow),能够按照参数配置的不同,控制Id token的返回位置与Access token的有无。
    注意:如上省略了Refresh token,关注于Id token和Access token。



授权码流程

1、第三方应用通过浏览器重定向到授权服务器(OP)的认证页面来进行用户认证与执行授权流程。重定向时使用的参数是基于OAuth2.0中的大部分参数。主要如下几个

  • scope:必选。选择的授权范围,当是OIDC请求时,需要包含openid选项,如下示例所示。
  • response_type:必选。响应类型方式,使用授权码流程时,为code.
  • client_id:必选。第三方应用提前在授权服务器处注册得到的id值。
  • redirect_uri:必选。重定向到OP认证授权完毕后重定向到RP的地址。
  • state:推荐。第三方应用(RP)提供的一个字符串,授权服务器(OP)会原样返回给第三方应用(RP),以阻止CSRF攻击。
    如上几个是常使用到的授权码流程中所需的参数,实际上还有许多其他参数可以依照不同场景的需要使用上。其他参数信息https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest

http协议认证方式,http认证方式(5)

2、当用户完成认证信息填写与执行授权操作后,授权服务器(OP)对用户认证信息的审核和授权范围的校验。有效后重定向到第三方应用(RP)指定的回调地址(第1步中的redirect_uri),将code和state参数作为查询参数附加在回调地址后。

http协议认证方式,http认证方式(6)


3、第三方应用(RP)通过code来请求认证服务方的Token EndPoint换取Token。

http协议认证方式,http认证方式(7)

然后Token EndPoint会返回响应的Token,其中除了OAuth2规定的部分数据外,还会附加一个id_token的字段。

{ "access_token": "SlAV32hkKG", "token_type": "Bearer", "refresh_token": "8xLOxBtZp8", "expires_in": 3600, "id_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" }

4、请求用户信息或授权内的资源。

http协议认证方式,http认证方式(8)

栏目热文

如何去掉http校验(http怎么校验)

如何去掉http校验(http怎么校验)

HTTP 方法用于执行创建、读取、更新和删除(或 CRUD)操作。最常用的方法是 POST、GET、PUT、PATCH ...

2022-11-09 13:44:53查看全文 >>

http用户验证步骤(http服务的正确范例)

http用户验证步骤(http服务的正确范例)

前言在上一章节中,一一哥 带大家搭建了第一个Spring Security项目,相信小伙伴已经学会了如何利用Spring...

2022-11-09 14:02:23查看全文 >>

http认证过程(产品认证证书查询)

http认证过程(产品认证证书查询)

HttpBasic 认证有一定的局限性与安全隐患,因此在实际项目中使用并不多,但是,有的时候为了测试方便,开启 Http...

2022-11-09 14:15:38查看全文 >>

http认证方法有哪些(http协议基础认证)

http认证方法有哪些(http协议基础认证)

我将在此处描述的问题和解决方案是“基本Http身份验证”的基本对话框的解决方法。尝试统一身份验证流程时遇到了这样的问题...

2022-11-09 14:27:22查看全文 >>

http认证四个方式(http认证方法有哪些)

http认证四个方式(http认证方法有哪些)

HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传...

2022-11-09 14:22:34查看全文 >>

怎么能把http去掉(http要关掉吗)

怎么能把http去掉(http要关掉吗)

作者 | billpchen来源 | 占小狼的博客(ID:whywhy_zj)头图 | CSDN下载自视觉中国2015 ...

2022-11-09 14:17:17查看全文 >>

http代理的认证方式(如何做http代理)

http代理的认证方式(如何做http代理)

什么是HTTPS代理随着代理服务器的广泛使用,大家对代理应该有一定的了解。代理根据协最常见的分类是http代理、http...

2022-11-09 14:27:41查看全文 >>

怎样删除http协议(http协议简介)

怎样删除http协议(http协议简介)

HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维...

2022-11-09 14:04:17查看全文 >>

不加密的http传输协议怎么取消(怎么对http协议加密)

不加密的http传输协议怎么取消(怎么对http协议加密)

https 加密传输协议很多新手呢他并不知道,当我们去打开一个网站的时候,这个网站的域名前面会有一个http:/冒号双斜...

2022-11-09 13:41:16查看全文 >>

http协议怎么修改(如何配置http协议)

http协议怎么修改(如何配置http协议)

1.简介有的小伙伴或者童鞋们可能会好奇地问:不是讲解和分享抓包工具了怎么这里开始讲解HTTP和HTTPS协议了。这是因为...

2022-11-09 14:15:40查看全文 >>

文档排行