微服务架构实战 160 讲
杨波
拍拍贷研发总监、资深架构师、微服务技术专家
48732 人已学习
新⼈⾸单¥98
课程目录
已完结/共 171 讲
微服务架构实战 160 讲
登录|注册
留言
11
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 09 |【实验】简化模式授权服务器
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 第一模块课程介绍
02 | 微服务安全要解决什么问题
03 | 白话 OAuth2
04 | OAuth2 的正式定义
05 | OAuth2 有哪些典型模式
06 | OAuth2 模式该如何选型
07 | Spring Security OAuth2 架构简介
08 |【实验】授权码模式授权服务器
09 |【实验】简化模式授权服务器
10 |【实验】密码模式授权服务器
11 |【实验】客户端模式授权服务器
12 | 实验一扩展环节
13 |【实验】Web 应用接入授权服务器
14 | 实验二扩展环节
15 | 什么是 JWT 令牌
16 |【实验】授权服务器支持 JWT 令牌
17 | 实验三扩展环节
18 |【实验】Android 无线应用接入授权服务器
19 |【实验】AngularJS 单页应用实验和课后扩展
20 |【实验】GitHub社交登录实验和课后扩展
21 | 【实验】OAuth2安全风险CSRF实验
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实操(Lab02)
41 | Apollo Client和Spring集成~XML方式(Lab03)
42 | Apollo Client和Spring集成~代码方式(Lab04)
43 | Apollo Client和Spring Boot集成(Lab05)
44 | Apollo开放平台接入实操(Lab06)
45 | Spring Cloud Config简介
46 | Apollo vs Spring Cloud Config
47 | Apollo FAQ和开发常见问题
48 | 参考资源和后续课程预览
49 | 第三模块课程介绍
50 | Zuul网关和基本应用场景
51 | Zuul网关高级应用场景
52 | Zuul网关架构剖析
53 | Zuul网关代码剖析(Code Review)
54 | Zuul网关过滤器管理工具(Code Review)
55 | 前置过滤器实验(Lab01)
56 | 路由过滤器实验(Lab02)
57 | 后置过滤器实验(Lab03)
58 | Zuul网关对接Apollo(Lab04)
59 | Zuul网关生产部署实践
60 | Zuul网关路由管理实践
61 | 基于网关的两层路由体系
62 | Spring Cloud Zuul(Lab05)
63 | Zuul2.0简介
64 | Zuul网关生产最佳实践
65 | 参考资源和后续课程预览
66 | 第四模块课程介绍
67 | 调用链监控业务需求
68 | 调用链监控原理
69 | 调用链监控产品和比较
70 | 点评 CAT 背景介绍
71 | CAT 典型报表
72 | CAT 告警简介
73 | CAT 架构设计
74 |【实验】CAT 本地部署
75 | CAT 埋点案例和代码剖析(Code Review)
76 |【实验】CAT 埋点案例
77 | Zuul 网关集成 CAT 代码剖析(Code Review)
78 |【实验】Zuul 网关集成 CAT
79 | CAT 生产埋点实践
80 | CAT 生产部署实践
81 | CAT 生产治理实践
82 | Spring Cloud Sleuth 简介
83 |【实验】Spring Cloud Sleuth
84 | 参考资源和后续课程预览
85 | 第五模块课程介绍
86 | 容错限流需求
87 | 容错限流原理
88 | Netflix Hystrix 背景介绍
89 | Hystrix 设计原理
90 | Hystrix 主要概念
91 | 信号量 vs 线程池隔离
92 | Hystrix 主要配置项
93 |【实验】Hystrix 基础实验
94 | Hystrix 模拟案例分析 (Code Review)
95 |【实验】Hystrix + Dashboard 实验(上)
96 |【实验】Hystrix + Dashboard 实验(下)
97 | 网关集成 Hystrix (Code Review)
98 |【实验】Spring Cloud Hystrix 实验
99 | Netflix Turbine 简介
100 | Hystrix 生产最佳实践
101 | 参考资源和后续课程预览
102 | 第六模块课程介绍
103 | 服务发现需求和模式(上)
104 | 服务发现需求和模式(下)
105 | Netflix Eureka 和 Ribbon 背景介绍
106 | Eureka 和 Ribbon 架构设计原理
107 |【实验】Spring Cloud Eureka 和 Ribbon 基础实战
108 |【实验】Spring Cloud Eureka 和 Ribbon 高级实验
109 | Spring Cloud Eureka 和 Ribbon 主要配置项
110 | Eureka进阶:自保护模式
111 | Eureka进阶:健康检查和蓝绿部署
112 |【实验】Spring Cloud Zuul、Eureka 和 Ribbon 集成实验(上)
113 |【实验】Spring Cloud Zuul、Eureka 和 Ribbon 集成实验(下)
114 | 常用服务发现组件比较
115 | ServiceMesh 和 Istio 简介
116 | 基于 Eureka、Zuul 和容器云的持续交付架构
117 | 参考资源和后续课程预览
118 | 第七模块课程介绍
119 | 监控模式分类
120 | BusDevOps 和测量驱动开发 MDD
121 | Prometheus 简介
122 | Prometheus 架构设计
123 | Prometheus 基本概念
124 |【实验】Prometheus 起步查询实验(上)
125 |【实验】Prometheus起步查询实验(中)
126 |【实验】Prometheus起步查询实验(下)
127 |【实验】Prometheus + Grafana 展示实验(上)
128 |【实验】Prometheus + Grafana 展示实验(下)
129 |【实验】Prometheus + Alertmanager 告警实验(上)
130 |【实验】Prometheus + Alertmanager 告警实验(下)
131 |【实验】Java 应用埋点和监控实验
132 |【实验】NodeExporter 系统监控实验
133 |【实验】Spring Boot Actuator 监控实验
134 | Prometheus 监控最佳实践
135 | 主流开源时序数据库比较
136 | 开源分布式监控平台 ZMon 简介
137 | 微服务监控体系总结
138 | 参考资源和后续课程预览
139 | 课程概述和背景
140 | 架构和设计
141 | 开发环境搭建
142 | 基础代码(code review)
143 | 数据访问模块(code review)
144 | OAuth2服务模块(code review)
145 | Web服务模块(code review)
146 | 启动流程(code review)
147 | 起步准备实验(lab02)
148 | OAuth2授权码模式实验(lab03)
149 | OAuth2简化模式实验(lab04)
150 | OAuth2用户名密码模式实验(lab05)
151 | OAuth2客户端模式实验(lab06)
152 | OAuth2令牌校验实验(lab07)
153 | OAuth2令牌刷新实验(lab08)
154 | 项目复盘和扩展环节
155 | 参考资源和后续课程预览
156 | 课程概述和背景
157 | 需求和架构设计
158 | 开发环境搭建(lab01)(上)
159 | 开发环境搭建(lab01)(下)
160 | 项目业务代码(Code Review)
161 | Apollo配置中心集成(lab02)
162 | Zuul-Eureka-Ribbon-Hystrix集成(Code Review)
163 | Gravitee OAuth2集成(lab03)
164 | Zuul网关集中令牌校验(Code Review)
165 | CAT调用链集成(lab04)(上)
166 | CAT调用链集成(lab04)(下)
167 | Demo展示(lab05)(上)
168 | Demo展示(lab05)(下)
169 | Prometheus监控集成(Code Review)
170 | 生产扩展环节
171 | 课程复盘总结&结课测试
本节摘要
登录 后留言

全部留言(11)

  • 最新
  • 精选
黑米
波波老师,这个视频中为什么没有输入输入用户名和密码?是不是你之前登录过,浏览器记住了你登录了,就直接问你是否授权?

作者回复: 嗯,你看得很仔细,视频中我的确之前登录过,浏览器记住了,所以直接到授权页面,按标准简化模式是需用户登录的,谢谢提醒!

2018-12-26
2
无尽
老师,能说说:OAuth SAML kerberos三者区别吗?

作者回复: SAML和kerberos我也没有直接经验,SAML和OAuth类似,Web时代的一种认证授权标准协议,以xml格式交换数据,比OAuth重,目前还有很多企业在用SAML,OAuth是当前行业主流。

2019-09-04
1
赵津
请问简化模式的应用场景是?

作者回复: 单页应用,对外安全不太敏感场景,或企业内安全不严格场景

2018-09-29
1
凯文1985
如果授权服务器和资源服务器都放在一起 就不是很明白资源服务器怎么跟授权服务器进行交互来检验token了 同时我用了最新的Springboot 2.1 和spring security 2 来写这个例子 发现一直不成功

作者回复: 授权服务器和资源服务器住在一起,则通过共享存储(db or in memory)方式实现令牌校验。请使用spring boot 1.x完成实验,2.x还没验证过。

2018-08-04
2
1
shiziwen
老师的例子都是基于spring已有框架来做的,目的是为了让我们理解Oauth的流程? 如果我们自己写Oauth授权服务,不基于已有框架,有例子可以参考吗?

作者回复: 如果只是实现简单的oauth2授权服务,理解清楚RFC6749就可以实现,本课程后面有一个章,演示基于golang的简单oauth2服务器实现。 如果要实现企业级的oauth/oidc服务,可以参考ory的hydra(https://github.com/ory/hydra) 还有一个不错的项目fusionauth(https://fusionauth.io/)你也可以研究,它是一个企业级的identity and access management服务器,支持用户数据管理/多因素认证/SSO等功能,也是基于oauth2实现,不过它是免费但是不开源。

2020-05-19
2
周达
User must be authenticated with Spring Security before authorization can be completed 请问这样报错是因为什么,properties里面没有配置账户密码,因为后台有自己的账户密码登录的时候保留在token里面,总问这种问题怎么解决

作者回复: 简化模式获取token之前,用户需要先认证,上面的提示说你没有经过认证。请按照实验的步骤,在application.properties里头配置一个账户密码,然后把浏览器缓存清空一下,浏览器再试,会要求你输入账户密码进行认证。我这边重复做这个实验是OK,其它很多学员也做过这个实验也是OK。

2020-03-24
Wu Feiran
老师,我想问一下: 在授权服务器里配置了redirect uri, 在往授权服务器发送请求的时候url又带上了相同的redirect_uri(localhost:9001/callback) , 既然授权服务器已经配置了回调地址,为什么发送请求的时候还要带上这个回调地址呢? 谢谢!

作者回复: 在RFC6749的简化模式中,这个redirect_uri是optional的,参考: https://tools.ietf.org/html/rfc6749#section-4.2 加的话可以作为多一层的安全校验,防止恶意请求。

2020-03-24
壮壮
在用浏览器获取token的时候,输入的链接的时候一定要仔细,否则在输入用户名和密码之后会报错。 波波老师的请求url是: http://localhost:8080/oauth/authorize?client_id=clientaapp&redirect_uri=http://localhost:9001/callback&response_type=token&scope=read_userinfo&state=abc 我自己由于拼写错误导致了报错。 报错信息:OAuth Error error="invalid_client", error_description="Bad client credentials" 原因就是我把在浏览器请求的url写错为: http://localhost:8080/oauth/authorize?client_id=clientaapp&redirect_uri=http://localhost:9001/callback&response_type=token&scope=read_userinfo&state=abc。这里的client_id写的有问题,写错为:clientaapp。 所以一定要仔细。

作者回复: 谢谢你的提醒!

2019-11-28
大鹏
老师,有几个问题。简化模式是不安全的,我理解的是: 1.token会在浏览器处解析 2.简化模式获取token时没传client secret.别人只要拿到client id就能代表这个客户端去获取token. 这两点缺陷 密码模式也有,那么密码模式也一样不安全吗。既然一样不安全,为什么密码模式允许用refresh token? 是否可以理解为密码模式比简化模式安全性更高,才允许用refresh toke.那高在哪里呢。 还有个问题,我看第七讲 讲 spring security auth提到的那个日本公司,并留了个链接,我看了一下。简化模式,获取token的redirect uri是指向client resource的,需要获取脚本解析url #后面的token。为什么在实验中没看到解析过程,直接就返回解析好了的token. 是解析完了吗?另外client resource指向的是什么 与client什么区别。

作者回复: 你好,简化模式不安全主要就是你理解的两点: 1,token对浏览器可见, 2,获取令牌时只传clientId,没有经过clientSecret校验。 一般简化模式仅适用于安全不严格的应用场景。 密码模式在开放平台场景下同样也不安全,但是第一方受信认应用场景是可以的,例如,很多公司为自己开发的无线app使用密码模式。 简化模式的令牌解析过程,请参考官方RFC6749文档,4.2节Implicit Grant讲得很清楚,C步骤授权服务器会向浏览器发送重定向指令,重定向地址带#令牌,然后D步骤浏览器根据重定向指令向静态资源服务器(Web Hosted Client Resource)请求静态资源(注意这步#后面的令牌仅留在浏览器端,不会被发送到静态资源服务器),这个静态资源里头含有脚本script,这个脚本在E步骤到达浏览器后可以读取浏览器地址#后面的令牌,这就相当于是一个解析过程。Lab05的Angularjs单页应用实验,代码里头其实有这样一个解析过程。

2019-04-29
张乾坤
在浏览器中使用github上的测试连接(http://localhost:8080/oauth/authorize?client_id=clientapp&redirect_uri=http://localhost:9001/callback&response_type=token&scope=read_userinfo&state=abc)提示输入用户名密码是怎么回事?没有返回视频上的token。

作者回复: 简化模式也是需要用户认证的,输入用户名密码即可,配在application.properties文件里头

2018-09-27
收起评论