【OIDC】概念盲扫

目录

简介

一、OIDC是什么?

二、使用OIDC

1.OIDC的构成(角色)

2.OIDC的三种认证流程

3.OIDC的优势!

总结


简介

        OIDC技术还是很前沿的一项技术,目前国内外支持的厂商并不是特别多。OIDC是一个面向身份认证的过程,而oauth是一个面向授权的过程,同时OIDC也是在oauth上的一个扩展,主要是在oauth协议的基础框架上加了一些具有唯一性的工作流。

       ps:OpenID+OAuth 2.0=OpenID Connect


一、OIDC是什么?

        OIDC是Open ID Connect的缩写,相对于oauth来说OIDC主要增加了一些安全措施和token加密,以及规定了用户的头像必须为picture(图像)而不是avatar(虚拟符号),这让开发者在接入ODIC是不需要做字段对齐,OIDC是单点登录的一种实现方式,其主要作用是简化用户创建账户和注册的流程。

        OIDC在OAuth2的access_token的基础上添加了身份认证信息;通过公钥私钥配合校验获取身份等其他信息--即id-token

二、使用OIDC

1.OIDC的构成(角色)

        1.End-User(EU): (资源所有者)用户。

        2.Relying Party(RP):(第三方应用)受信任的第三方应用(也就是oaurh中的client)来鉴别EU的身份

        3.ID_Token:包含身份认证信息的JWT,是用户的身份凭证

        4.OpenID Provider (OP):(认证授权服务器)提供身份认证的服务方(oauth中的server)

        5.UserInfo Endpoint:(资源服务方)返回用户信息的接口,当RP使用ID Token来访问时,能够返回用户的信息

2.OIDC的三种认证流程

        一:授权码流程

       * 一个基于oauth2的授权码流程,在原来code换取token上增加了一个id_token;

抽象流程:

  1. 例如,我需要登录csdn,我选择扫码登录,当然你也可以选择账号密码登录。
  2. 扫码登录进入授权页面,点击登录,这样授权服务器会返回一个授权码(code)回来
  3. csdn会拿着code去和授权服务器换取access_token和id token
  4. 此后,csdn可以利用access_token去资源服务器获取用户信息,并将id_token作为身份的凭证,存放在前端                

        二:隐式流程

        *隐式流程相比于授权码流程更简单,但也是最不安全的身份验证方法,经常将id_token和accesstoken返回给客户端,因为不支持返回refresh_token,所以登录一旦过期需要重新登录。

         *隐式流程主要用于在浏览器中运行的用于程序(javascript应用程序)

        三:混合流程

       *混合流程时以上两种流程的组合,能够通过授权接口一次性把code,id_token,access_token返回给客户端,同时可以利用code换取refresh_token,在后端进行刷新access_token,从而实现不必让用户重复登录。

3.OIDC的优势!

  • 容易处理id_token,ODIC使用JWT来传递用户的信息,JWT有着极高的安全性,非常适合作为token
  • 基于oauth2协议,及支持web应用,同时也支持原生app
  • 简单高效,同时提供了大量的功能和安全选项以满足各种企业级业务需求        

总结

        OAuth2是一个授权的过程,通常需要添加额外的API来实现认证,Open ID 是一个认证的过程,两者都有缺陷!

        综合两者,就有了OIDC,解决了授权+认证的过程,是可以替代OAuth2的下一代协议,虽然OIDC的授权过程与OAuth2的授权一致,但OIDC能够保持向下兼容。

ps:不了解OAuth2可以去看看【OAuth2认证】详细讲解_Huang_Ds的博客-CSDN博客


版权声明:本文为Huang_Ds原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。