基于oAuth2的OIDC原理 学习笔记

网络结
• 阅读 7758

OAuth2

概念

OAuth 2.0 规范定义了一个授权(delegation)协议,OAuth2.0 不是认证协议。

OAuth解决的大部分问题在于Client和被访问的资源之间的连接上,在用户不存在的情况下,使用这种委托访问。

流程

基于oAuth2的OIDC原理 学习笔记

上图ABCDE这5个步骤,既是完整的获取访问令牌的一个过程,其中:

  • Client 为第三方应用程序,
  • resource owner 为资源所有者
  • user-agent 为类似浏览器的代理
  • authorization server 授权服务器
  • resource server 资源服务器

流程如下:

  • A) Client使用浏览器(User-Agent)访问Authorization server。也就是用浏览器访问一个URL,这个URL是Authorization server提供的,访问的Client需要提供(客户端标识client_id,授权范围scope,本地状态state和redirect_uri)这些参数。
  • B) Authorization server验证Client在(A)中传递的参数信息,如果无误则提供一个页面供Resource owner登陆,登陆成功后选择Client可以访问Resource server的哪些资源以及读写权限。
  • C) 在(B)无误后返回一个授权码(Authorization Code)给Client。
  • D) Client拿着(C)中获得的授权码(Authorization Code)和(客户端标识、redirect_uri等信息)作为参数,请求Authorization server提供的获取access token。
  • E) Authorization server返回access token和可选的refresh token 以及令牌有效时间等信息给Client。
  • F) client拿到access token后就可以去resources server访问resource owner的资源

OIDC

定义了一种基于OAuth2的用户身份认证

OIDC的核心在于在OAuth2的授权流程中,一并提供用户的身份认证信息(ID Token)给到第三方客户端,ID Token使用JWT格式来包装,得益于JWT(JSON Web Token)的自包含性,紧凑性以及防篡改机制,使得ID Token可以安全的传递给第三方客户端程序并且容易被验证。此外还提供了UserInfo的接口,用于获取用户的更完整的信息

流程

  1. RP发送一个认证请求给OP;
  2. OP对EU进行身份认证,然后提供授权;
  3. OP把ID Token和Access Token(需要的话)返回给RP;
  4. RP使用Access Token发送一个请求UserInfo EndPoint;
  5. UserInfo EndPoint返回EU的Claims。

术语:

  • EU:End User:一个人类用户。
  • RP:Relying Party ,用来代指OAuth2中的受信任的客户端,身份认证和授权信息的消费方;
  • OP:OpenID Provider,有能力提供EU认证的服务(比如OAuth2中的授权服务),用来为RP提供EU的身份认证信息;
  • ID Token:JWT格式的数据,包含EU身份认证的信息。
  • UserInfo Endpoint:用户信息接口(受OAuth2保护),当RP使用Access Token访问时,返回授权用户的信息,此接口必须使用HTTPS
  • AuthN & AuthZ: AuthN代表authentication AuthZ 代表authrization

基于oAuth2的OIDC原理 学习笔记

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
凯文86 凯文86
4年前
Spring Cloud OAuth2 微服务认证授权
OAuth2.0是用于授权的行业标准协议,它致力于简化客户端开发人员的工作,同时为Web应用、桌面应用、移动应用等各种客户端应用提供了特定的授权流程。本文讲解如何使用OAuth2协议来授权客户端应用访问SpringCloud微服务。微服务认证授权概述单点登录相比于单体应用,微服务应用需要在多个服务之间共享
Stella981 Stella981
4年前
Python Challenge Level 18
初学Python,挑战一下流行的PythonChallenge,很不幸,卡在了18关~~被字符字节码之间的转换搞得焦头烂额,不过终于搞定了还是很happy的~~~主要的问题就是16进制形式的字符如何转成字节码(注意:不是encoding)如:\'89','50','4e','47','0d','0a','1a','0a','00
Stella981 Stella981
4年前
Spring Security 实战干货:OAuth2第三方授权初体验
1\.前言现在很多项目都有第三方登录或者第三方授权的需求,而最成熟的方案就是OAuth2.0授权协议。SpringSecurity也整合了OAuth2.0,在目前最新的SpringSecurity5中整合了OAuth2.0的客户端,我们可以很方便的使用SpringSecurityOAuth2来实现相关的需求。接下来跟着胖哥
Stella981 Stella981
4年前
Spring Boot 的 oAuth2 认证(附源码)
OAuth2统一认证原理OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(authorizationlayer)。"客户端"不能直接登录"服务提供商",只能登录授权层,以此将用户与客户端区分开来。"客户端"登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围
Stella981 Stella981
4年前
Spring Cloud下基于OAUTH2认证授权的实现
SpringCloud下基于OAUTH2认证授权的实现博客分类:javaspring在SpringCloud需要使用OAUTH2来实现多个微服务的统一认证授权,通过向OAUTH服务发送某个类型的granttype进行集中认证和授权,从而获得access_token,而这个token是受其他微服务信任的,我们在后续的访问可以
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Easter79 Easter79
4年前
SpringSecurity进阶:OAuth2.0详解
OAuth2是什么?OAuth是一个为了方便用户登入而使用的授权流程,他的优点是不需要向第三方平台暴露我们的用户名和密码,而是使用授权服务器颁发短期的token和效验token的方式开放部分资源给第三方平台OAuth是一个授权协议不是认证协议OAuth2的授权方式!(https://p1tt
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Easter79 Easter79
4年前
SpringCloud(9)使用Spring Cloud OAuth2保护微服务系统
一、简介OAth2是一个标准的授权协议。在认证与授权的过程中,主要包含以下3种角色。服务提供方AuthorizationServer。资源持有者ResourceServer。客户端Client。OAuth2的认证流程如图所示,具体如下。!(https://o
网络结
网络结
Lv1
料得他乡遇佳节,亦应怀抱暗凄然。
文章
2
粉丝
0
获赞
0