OAuth2.0四种授权模式

简介: OAuth2四种授权模式简介:授权码模式最安全,适用于第三方登录;简化模式无授权码,token直接返回,适合无后端场景;密码模式需用户共享账号信息,仅限高度信任服务;客户端模式为服务间调用,无需用户参与。

授权码模式
流程
说明:【A服务客户端】需要用到【B服务资源服务】中的资源
● 第一步:【A服务客户端】将用户自动导航到【B服务认证服务】,这一步用户需要提供一个回调地址,以备 【B服务认证服务】返回授权码使用。
● 第二步:用户点击授权按钮表示让【A服务客户端】使用【B服务资源服务】,这一步需要用户登录B服务,也就是说用户要事先具有B服务的使用权限。
● 第三步:【B服务认证服务】生成授权码,授权码将通过第一步提供的回调地址,返回给【A服务客户端】。 注意这个授权码并非通行【B服务资源服务】的通行凭证。
● 第四步:【A服务认证服务】携带上一步得到的授权码向【B服务认证服务】发送请求,获取通行凭证token。
● 第五步:【B服务认证服务】给【A服务认证服务】返回令牌token和更新令牌refresh token。
场景
授权码模式是OAuth2中最安全最完善的一种模式,应用场景最广泛,可以实现服务之间的调用,常见的微信,QQ等第三方登录也可采用这种方式实现。

简化模式
流程
说明:简化模式中没有【A服务认证服务】这一部分,全部有【A服务客户端】与B服务交互,整个过程不再有授权码,token直接暴露在浏览器。
● 第一步:【A服务客户端】将用户自动导航到【B服务认证服务】,这一步用户需要提供一个回调地址,以备【B服务认证服务】返回token使用,还会携带一个【A服务客户端】的状态标识state。
● 第二步:用户点击授权按钮表示让【A服务客户端】使用【B服务资源服务】,这一步需要用户登录B服务,也就是说用户要事先具有B服务的使用权限。
● 第三步:【B服务认证服务】生成通行令牌token,token将通过第一步提供的回调地址,返回给【A服务客户端】。
场景
适用于A服务没有服务器的情况。比如:纯手机小程序,JavaScript语言实现的网页插件等。

密码模式
流程
● 第一步:直接告诉【A服务客户端】自己的【B服务认证服务】的用户名和密码
● 第二步:【A服务客户端】携带【B服务认证服务】的用户名和密码向【B服务认证服务】发起请求获取token。
● 第三步:【B服务认证服务】给【A服务客户端】颁发token。
场景
此种模式虽然简单,但用户将B服务的用户名和密码暴露给A服务,需要两个服务信任度很高才能使用。

客户端模式
流程
说明:这种模式其实已经不太属于OAuth2范畴。A服务完全脱离用户,以自己的身份去向B服务索取token。换言之用户无需具备B服务的使用权也可以。完全是A服务与B服务内部交互,与用户无关了。
● 第一步:A服务向B服务索取token。
● 第二步:B服务返回token给A服务。

相关文章
|
2月前
|
SQL 人工智能 自然语言处理
让AI真正懂数据:猫超Matra项目中的AI知识库建设之路
本文介绍猫超基于大模型的AI数据助手Matra实践,构建面向Data Agent的知识库体系,通过知识图谱与ReAct框架实现智能取数,提升数据研发效率与业务分析能力。
397 27
让AI真正懂数据:猫超Matra项目中的AI知识库建设之路
|
2月前
|
存储 人工智能 运维
一行代码实现智能异常检测:UModel PaaS API 架构设计与最佳实践
阿里云 UModel PaaS API 发布:通过 Table + Object 双层抽象,屏蔽存储差异、自动处理字段映射与过滤条件,让每一个实体都成为一个‘可调用的对象’,真正实现‘以实体为中心’的智能可观测。
880 127
|
Java Android开发
jvisualvm分析jvm内存溢出
jvisualvm分析jvm内存溢出
1831 0
jvisualvm分析jvm内存溢出
@Inherited
@Inherited用于注解,使子类继承父类中标记该注解的元数据,仅适用于类继承,不适用于接口继承或类实现接口。
|
2月前
|
XML Java 数据格式
Spring Boot是什么
Spring Boot 于2013年启动,旨在简化Spring应用开发。它通过自动配置和内嵌服务器,减少XML配置,实现开箱即用,提升开发效率,是Spring生态中不可或缺的快速开发利器。
|
2月前
|
SQL 关系型数据库 Java
分页
本文介绍了五种分页实现方式:MyBatis自带RowBounds内存分页、PageHelper插件分页、原生SQL分页、数组分页(查全量后subList)及拦截器分页。前两者属逻辑分页,数据全加载至内存,小数据量高效但大数量易溢出;后三者为物理分页,通过SQL或拦截器实现真实分页,适用于大数据量场景。推荐优先使用物理分页以提升性能与稳定性。(238字)
|
2月前
|
存储 JSON 数据格式
文档基本CRUD
文档数据结构与JSON类似,所有存储在集合中的数据均采用BSON格式,支持更多数据类型,便于高效存储与传输。
|
2月前
|
存储 NoSQL MongoDB
索引的类型
MongoDB支持单字段索引(升序/降序)和复合索引(多字段有序组合),提升查询效率。还提供地理空间索引(支持平面与球面查询)、文本索引(支持字符串内容搜索,存储词干)和哈希索引(用于散列分片,仅支持等值匹配)。
集合的删除
集合删除语法为:db.collection.drop() 或 db.集合.drop()。删除成功返回true,否则返回false。例如删除mycollection集合:db.mycollection.drop()。
|
存储 安全 数据安全/隐私保护
OAuth 2.0 的授权机制
【10月更文挑战第5天】
1105 2

热门文章

最新文章