OAuth 协议和 OIDC协议总结
2025-04-23 10:21:39 0 举报
OAuth协议是一种授权框架,它允许第三方应用获取有限的访问权限,而不必将用户的登录凭证暴露给这些第三方应用。它主要用于Web应用、桌面应用、移动应用、以及其他客户端和服务端应用。OAuth通过“授权码”、“简化式”、“密码凭证式”和“客户端凭证式”四种授权方式,实现了安全的第三方授权。 OIDC(OpenID Connect)协议是建立在OAuth 2.0协议之上的一个高级认证层,它为“身份层”提供了清晰的实现标准。OIDC使用JSON Web Token (JWT) 作为id_token,传递用户的认证信息,并将用户身份的验证和OAuth的授权流程相结合。它不仅提供了用户身份的认证,还支持ID令牌的签名和加密,使应用能验证ID令牌的完整性和来源。 核心内容总结:OAuth是一种安全授权协议,允许第三方应用在不获取用户凭证的情况下进行授权访问,而OIDC是一个在OAuth 2.0之上的开放标准,用于提供用户认证服务,并通过id_token支持身份验证。文件类型常表现为各种规范的文档或指导手册,而修饰语则常用以描述其安全性、开放性、和灵活性等核心优势。
作者其他创作
大纲/内容
验证token
返回token,过期时间,refresh_token
访问资源
通知浏览器重定向
重定向到授权服务器
授权服务器
应用后台请求发送授权码,secret给授权服务器,换取token
携带授权码重定向回应用
返回资源
需要用户认证
应用2
名词定义Resource Owner:资源拥有者 通常是用户Resource Server:资源服务器,要访问的信息拥有方Client:第三方应用客户端,代指任何可以消费资源服务器的第三方应用;Authorization Server :授权服务器,管理Resource Owner,Client和Resource Server的三角关系的中间层
账号密码等方式
认证通过并同意授权
发现没有会话信息,用户未登陆
OIDC了解了OAuth2.0和JWT,OIDC就好了解了下面是一些定义:EU:End User,用户。RP:Relying Party ,用来代指OAuth2中的受信任的客户端, 身份认证和授权信息的消费方;OP:OpenID Provider,有能力提供EU身份认证的服务方 (比如OAuth2 中的授权服务),用来为RP提供EU的 身份认证信息;ID-Token:JWT格式的数据,包含EU身份认证的信息。UserInfo Endpoint:用户信息接口(受OAuth2保护), 当RP使用ID-Token访问时,返回授权用户的信息, 此接口必须使用HTTPS。其实就是在OAuth2.0的基础上,返回Access_token的同时返回一个ID_TOKEN,由于jwt的防篡改性,id_token可以给到前端,前端就可以利用该token与各个应用通信,代替了局部会话,同时由于json的跨平台特性,所以jwt可以在各种语言和容易构建的应用中使用,且id_token中存有简单的用户信息,应用大多数时候无需访问资源服务器就可以知道用户是谁,拥有哪些权限,当应用需要获取敏感信息时,可以和原本OAuth流程一样,使用access_token访问受保护接口,获得受保护资源。同时,由于各个应用不需要维护局部会话,且id_token有效期很短暂,所以也解决了用户注销的问题,只需要失效掉该token,用户就被下线了这里说下OAuth协议用于认证不安全的原因,由于access_token和用户信息并无强关联,若用户被删除,则该token还有很长一段时间可以使用,甚至可以通过access_token进行刷新,而ID_Token显然没有这个问题,用户失效,ID_Token随即失效(token关联用户找不到了)
生成授权码,并通知浏览器重定向此处还在浏览器写入了cookie
应用
浏览器
发现存在回话用户已经登陆
访问应用2
携带token访问资源
登陆成功写入cookie局部回话创建
提示用户认证
登陆
前置流程首先客户端需要到授权服务器进行注册如下信息 ClientID: 确定唯一一个客户端身份的标识Redirect_url: 授权后信息的接收地址,同时也是为了进行校验,防止其他人截获token,和攻击服务器client secret:授权服务器会给客户端提供一个字符串,仅用于后台传输,用来和应用互信
成功
资源服务器
返回
登陆成功进入应用
OAuth2.0协议,个人总结OAuth协议是一个授权协议,有别于认证协议,OAuth并没有提供认证相关的信息,所以认为OAuth协议是认证协议是有误的。OAuth协议用于认证也是有风险的,因为其对token并没有严格的管控。现在在这方面,有三个名词,认证,授权,鉴权,下面是我的理解认证:是指通过一系列手段,证明你就是你,证明一个个体的明确身份授权:是指将资源和个体进行绑定,是把资源赋予个体的绑定过程及其映射的存储鉴权:是指当某个确定的个体,去访问某个确定的资源时,判断这个个体是否拥有这个资源的访问权限,是认证和授权合并运算的过程及结果OAuth协议主要用于处理用户,资源服务器,授权服务器三者的互信问题,有四种流程,分别处理不同的互信程度authorization-code :授权码模式,也是用的最多的模式,用于处理三者互不信任的场景implicit:隐藏式,用于处理授权服务器和前端互信的场景, code给到前端password:密码式,用于处理用户和第三方应用互信的场景client credentials:客户端凭证,用于处理授权服务器和第三方服务互信的场景
用户
返回授权码,并通知浏览器重定向

收藏
0 条评论
下一页