下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 05 | OAuth2 有哪些典型模式
00:00 / 00:00
标清
  • 高清
  • 标清
  • 普清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

微服务架构实战160讲

共171讲 · 171课时·约2000分钟
9917
免费
01 | 第一模块课程介绍
免费
02 | 微服务安全要解决什么问题
免费
03 | 白话 OAuth2
免费
04 | OAuth2 的正式定义
免费
05 | OAuth2 有哪些典型模式
06 | OAuth2 模式该如何选型
07 | Spring Security OAuth...
08 |【实验】授权码模式授权服务...
09 |【实验】简化模式授权服务器
10 |【实验】密码模式授权服务器
11 |【实验】客户端模式授权服务...
12 | 实验一扩展环节
13 |【实验】Web 应用接入授权...
14 | 实验二扩展环节
15 | 什么是 JWT 令牌
16 |【实验】授权服务器支持 JW...
17 | 实验三扩展环节
18 |【实验】Android 无线应用...
19 |【实验】AngularJS 单页应...
20 |【实验】GitHub社交登录实验...
21 | 【实验】OAuth2安全风险CS...
22 | OpenId Connect简介
23 | 下一代微服务安全架构
24 | 参考资源和后续课程预览
免费
25 | Apollo作者的产品介绍
免费
26 | 第二模块课程介绍
免费
27 | 课程概述
免费
28 | 业务需求
免费
29 | 配置定义和场景
30 | 开关驱动开发原理
31 | 携程 Apollo 配置中心介...
32 | Apollo核心概念
33 | Apollo快速起步(Lab01)
34 | Apollo快速起步扩展实验
35 | Apollo架构设计之服务器端
36 | Apollo架构设计之客户端
37 | Apollo架构设计之高可用和...
38 | Apollo分布式部署指南
39 | Apollo Java客户端和多语...
40 | Apollo Client API实操...
41 | Apollo Client和Spring集...
42 | Apollo Client和Spring集...
43 | Apollo Client和Spring ...
44 | Apollo开放平台接入实操...
45 | Spring Cloud Config简...
46 | Apollo vs Spring Clou...
47 | Apollo FAQ和开发常见问...
48 | 参考资源和后续课程预览
免费
49 | 第三模块课程介绍
免费
50 | Zuul网关和基本应用场景
免费
51 | Zuul网关高级应用场景
52 | Zuul网关架构剖析
53 | Zuul网关代码剖析(Code ...
54 | Zuul网关过滤器管理工具(...
55 | 前置过滤器实验(Lab01)
56 | 路由过滤器实验(Lab02)
57 | 后置过滤器实验(Lab03)
58 | Zuul网关对接Apollo(Lab0...
59 | Zuul网关生产部署实践
60 | Zuul网关路由管理实践
61 | 基于网关的两层路由体系
62 | Spring Cloud Zuul(Lab...
63 | Zuul2.0简介
64 | Zuul网关生产最佳实践
65 | 参考资源和后续课程预览
免费
66 | 第四模块课程介绍
免费
67 | 调用链监控业务需求
免费
68 | 调用链监控原理
69 | 调用链监控产品和比较
70 | 点评 CAT 背景介绍
71 | CAT 典型报表
72 | CAT 告警简介
73 | CAT 架构设计
74 |【实验】CAT 本地部署
75 | CAT 埋点案例和代码剖析...
76 |【实验】CAT 埋点案例
77 | Zuul 网关集成 CAT 代...
78 |【实验】Zuul 网关集成 CA...
79 | CAT 生产埋点实践
80 | CAT 生产部署实践
81 | CAT 生产治理实践
82 | Spring Cloud Sleuth ...
83 |【实验】Spring Cloud Sle...
84 | 参考资源和后续课程预览
免费
85 | 第五模块课程介绍
免费
86 | 容错限流需求
免费
87 | 容错限流原理
88 | Netflix Hystrix 背景...
89 | Hystrix 设计原理
90 | Hystrix 主要概念
91 | 信号量 vs 线程池隔离
92 | Hystrix 主要配置项
93 |【实验】Hystrix 基础实验
94 | Hystrix 模拟案例分析 ...
95 |【实验】Hystrix + Dash...
96 |【实验】Hystrix + Dash...
97 | 网关集成 Hystrix (Co...
98 |【实验】Spring Cloud Hy...
99 | Netflix Turbine 简介
100 | Hystrix 生产最佳实践
101 | 参考资源和后续课程预览
102 | 第六模块课程介绍
103 | 服务发现需求和模式(上...
104 | 服务发现需求和模式(下...
105 | Netflix Eureka 和 Ri...
106 | Eureka 和 Ribbon 架...
107 |【实验】Spring Cloud Eu...
108 |【实验】Spring Cloud Eu...
109 | Spring Cloud Eureka ...
110 | Eureka进阶:自保护模式
111 | Eureka进阶:健康检查和...
112 |【实验】Spring Cloud Zu...
113 |【实验】Spring Cloud Zu...
114 | 常用服务发现组件比较
115 | ServiceMesh 和 Istio...
116 | 基于 Eureka、Zuul 和...
117 | 参考资源和后续课程预览
118 | 第七模块课程介绍
119 | 监控模式分类
120 | BusDevOps 和测量驱动开...
121 | Prometheus 简介
122 | Prometheus 架构设计
123 | Prometheus 基本概念
124 |【实验】Prometheus 起步...
125 |【实验】Prometheus起步查...
126 |【实验】Prometheus起步查...
127 |【实验】Prometheus + G...
128 |【实验】Prometheus + G...
129 |【实验】Prometheus + A...
130 |【实验】Prometheus + A...
131 |【实验】Java 应用埋点和...
132 |【实验】NodeExporter 系...
133 |【实验】Spring Boot Act...
134 | Prometheus 监控最佳实...
135 | 主流开源时序数据库比较
136 | 开源分布式监控平台 ZMo...
137 | 微服务监控体系总结
138 | 参考资源和后续课程预览
139 | 课程概述和背景
140 | 架构和设计
141 | 开发环境搭建
142 | 基础代码(code review...
143 | 数据访问模块(code rev...
144 | OAuth2服务模块(code r...
145 | Web服务模块(code revi...
146 | 启动流程(code review...
147 | 起步准备实验(lab02)
148 | OAuth2授权码模式实验(l...
149 | OAuth2简化模式实验(lab...
150 | OAuth2用户名密码模式实...
151 | OAuth2客户端模式实验(l...
152 | OAuth2令牌校验实验(lab...
153 | OAuth2令牌刷新实验(lab...
154 | 项目复盘和扩展环节
155 | 参考资源和后续课程预览
156 | 课程概述和背景
157 | 需求和架构设计
158 | 开发环境搭建(lab01)(...
159 | 开发环境搭建(lab01)(...
160 | 项目业务代码(Code Rev...
161 | Apollo配置中心集成(lab...
162 | Zuul-Eureka-Ribbon-H...
163 | Gravitee OAuth2集成(l...
164 | Zuul网关集中令牌校验(C...
165 | CAT调用链集成(lab04)...
166 | CAT调用链集成(lab04)...
167 | Demo展示(lab05)(上)
168 | Demo展示(lab05)(下)
169 | Prometheus监控集成(Cod...
170 | 生产扩展环节
171 | 课程复盘总结
本节摘要
 写留言

精选留言(11)

  • 2018-07-08
    授权码模式和简化模式里的,user-agent和client分别是什么呢?感觉讲的不太清楚,您讲的user-agent是浏览器,那client是什么?

    作者回复: user-agent一般指浏览器,client是客户应用,比方授权码模式中客户应用一般是一个服务器端应用(如java web app),资源拥有者通过这个应用(间接也通过浏览器)去访问他在其它服务器上的资源。简化模式中,客户应用常是住在浏览器中的JS单页面应用。建议细看前面课程oauth2最简向导

    3
  • 2019-03-03
    老师好,请问授权码模式中的redirection URI是什么? 是指向要访问的资源服务器的用户数据?授权码与客户端ID和重定向URI,是一一对应关系,但重定向URI是可选项,如何保证这种对应关系呢?谢谢

    作者回复: 你好,OAuth2授权码流程中,第一次(浏览器->oauth2服务器)传递redirect url是客户应用(client app)回调地址,oauth2服务器返回code时会通过重定向调用这个地址,相当于向客户应用传递code。第二次(客户应用->oauth2服务器)传递redirect url是给oauth2服务器进行校验用,确保过来请求token的是之前请求code的那个客户应用。第一次redirect url可选,因为向oauth2服务器注册客户应用时可以直接提供,也就是说oauth2服务器已经知道要重定向到哪里,参考https://stackoverflow.com/questions/47050255/when-oauth2-authoration-code-grant-flow-redirect-uri-parameter-is-really-option

    2
  • access token和refresh token的适用场景是什么?我的理解是为了控制access token的有效时间,从而控制token泄露后风险敞口时间。但是refresh token不是一样可能泄露么,只要同时拿到access token + refresh token,恶意方一样可以去申请新的access token啊。最终只能通过PoP的方式防止非token所有者非法适用token。所以我对access token + refresh token的适用业务场景有些疑惑。希望波波老师指点。

    作者回复: refresh token主要用途是在授权码模式中,access token到期方便换新,否则要走一个完整oauth2授权码流程,它不是主要用来解决安全问题,安全由oauth2流程+规范本身部分解决。

    2
  • 2018-11-01
    想问一下accesstoken过期时间怎么配置?这个token一般是保存在浏览器的cookie中吗?

    作者回复: accesstoken过期时间一般在oauth2服务器上设置,在注册client的时候设。在授权码模式中,token一般不会流到用户流览器中,要存的话也是存web服务器上。在简化模式和单页应用中,accesstoken可存localstorage或cookie中,但仅限安全不严格场景。

    1
  • 2018-09-29
    老师好,请问下简化的授权码模式中返回的Fragment是指的什么?有具体的案例说明吗?这里不太明白。我可以这样理解吗?比如客户端的请求地址是client.com,授权服务器授权后重定向到client.com?#access_token=access_token_with_secret; 然后客户端再通过Ajax请求Web-Host Client Resource获取解密的脚本,执行这个脚本得到真正的access_token

    作者回复: 你可以再看下rfc6749的官方文档,URI fragment里头就是access token,一般也不加密,用URI fragment而不是query string,是为安全,浏览器接收到授权服务器的重定向指令向Web-Host Client Resource所在服务器发起请求时,会剥离URI fragment(但浏览器会保留),这样access token就没机会通过网络被发到Web-Host Client Resource所在服务器上,这样更安全,当Web-Host Client Resource服务器上js脚本返回到浏览器,js脚本仍可解析出URI fragment中的access token,因为浏览器有保留

    1
  • 2019-08-15
    这个oauth2听起来有点不感兴趣,跟后续的微服务架构有什么重要的关系吗?

    作者回复: 认证鉴权是微服务重要环节,oauth2则是服务授权的业界标准协议。一般中大型的互联网公司都有独立的认证鉴权中心,大都支持oauth2协议。另外,后续企业的服务如果要开放出来(比如建开放平台),一般都需要支持oauth2协议。

    当然,对于一些小规模的企业场景,oauth2会显得比较重。如果暂时不感兴趣,可以先跳过第一章,等后面有需要再回头看。

  • 2019-03-31
    老师,注册客户端的时候要配置redirectUrl属性,那么通过流程看这个属性是固定值,如果我想实现登录并授权完成后回跳到来源页(这个来源页不一定是注册配置的redirectUrl)如何做呢?还有用户授权页是否可以略过呢,因为我想通过Oauth2协议实现SSO机制,有些场景是不需要弹出授权页的,请老师空闲时帮看下我的问题,谢谢~

    作者回复: 你好,在OAuth2的基础上要实现SSO还是比较复杂的,要看你的具体应用场景,还有应用类型等(Web/Mobile/SPA),做法有很多。因为我不清楚你的具体上下文,所以暂不好给明确建议,不过我正在开发一个端到端的微服务案例应用,里头会实现简单SSO机制,你可以加我微信(bulldog2015),到时会通知你。

  • 2019-03-20
    resource owner 拿到access token后 应该要去 认证服务器认证吧?

    作者回复: 对,如果没有采用网关集中令牌校验方式,那么可以让resource owner分别拿access token去认证服务器认证。如果用jwt自包含令牌的话,则可以实现resource owner自校验,不一定需要去认证服务器集中校验。

  • 2018-10-09
    老师,微服务间通过feign相互调用,需要用到oauth吗,如果用到应该使用那种模式呢。

    作者回复: 做好生产环境隔离的话,一般内部服务之间调用也不走oauth,可以直接调。安全要求严格时可以考虑采用客户端凭证模式(Client Credential Grant)。oauth主要场景是开放api第三方调用,无线或H5 app调用。

  • 2018-09-17
    这节第一种和第二种我有点懵逼…😂

    作者回复: 建议阅读阮一峰的理解oauth2,http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

  • 2018-09-06
    老师好,想问一下授权码模式中设计auth code的意义是什么?为什么验证用户后不直接把access token返回回来呢?

    作者回复: 全流程的授权码flow最安全, 1),第二步拿到auth code后,client需要提供client id/secret + authcode去换token,相当于授权服务器需要校验client是不是那个发起授权请求的client,因为第一步浏览器发起的授权请求是不提供client secret的。2),token只在client端,不会流到user agent去,client secret也不能流到user agent去