下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 08 |【实验】授权码模式授权服务器
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 | 课程复盘总结
本节摘要

精选留言(28)

  • 2018-05-08
    老师,lab太简单了吧,重复说生产环境不这样做,那我花时间上实战课有什么用呢,只是辅助理解概念的demo,希望老师后期上些真正的实战课程,而不是概念demo演示课程。

    作者回复: 嗯,理解了OAuth2的原理,还有spring security oauth2的基本用法,就能进行生产级研发和布署。企业生产做法很复杂,而且有些做法也不是通用标准做法,各家玩法五花八门,OAuth2则是业界沉淀下来的标准规范。课程后继有部分生产级微服安全架构和实践相关内容,还会介绍一些生产级的开源产品。另外后继作者还会推出一些授权认证相关的生产级实践的文章,会给你更新。谢谢你的反馈🌹

    1
    39
  • 2018-05-13
    希望老师能讲解真实的生产环境的做法,我们需要您生产环境的经验,这样才能让我们觉得这个课程是值得学习的

    作者回复: 嗯,理解了OAuth2的原理,还有spring security oauth2的基本用法,就能进行生产级研发和布署。企业生产做法很复杂,而且有些做法也不是通用标准做法,各家玩法五花八门,OAuth2则是业界沉淀下来的标准规范。课程后继有部分生产级微服安全架构和实践相关内容,还会介绍一些生产级的开源产品。另外后继作者还会推出一些授权认证相关的生产级实践的文章,会给你更新。谢谢你的反馈🌹

    11
  • 2018-05-17
    开发后台不是用Java的怎么整? 如果是实验不应该根据原理从零开始搭建吗?或者就讲生产实践经验。 现在这样的实验模拟就是针对作者写的代码的一个文档说明,真没啥收获。

    作者回复: 嗯,本课是先基于spring cloud oauth,用简单实验讲解原理,课程后面会介绍一些生产级开源产品,有其它语言的。当然你的建议很好,我后面准备推出如何从零构建授权服务器的文章,会给你更新。

    1
    4
  • 有两个建议
    1.老师的讲解速度稍微缓慢一点
    2.老师可以直接分享和线上环境直接有关的知识,如果只是demo,也很难去理解实际中应用场景

    作者回复: 谢谢建议,问题1已经反馈极客时间,问题2中demo主要考虑一些入门级学习者,后继在综合案例部分还会增加实战内容,另外还会陆续推出实战文章。

    2
  • 2018-09-15
    请问资源服务器是如何验证tocken的?

    作者回复: 在这个实验中,授权服务器和资源服务器住在一起,授权服务器使用内存模式,那么资源服务器也是使用内存去比对校验令牌的。如果两者不住在一起,使用数据库存储,那么资源服务器可以去数据库比对校验令牌,也可以通过授权服务器提供的校验端点比对校验令牌。

    1
  • 2018-06-10
    spring securtity默认有个登陆验证页面,但如果这个请求授权码的是从服务器端直接发起,不希望有这个登陆验证,波波,请问是在哪里配置?

    作者回复: 机器对机器,使用客户端凭证模式,不经过登陆验页,客户端直接通过提供clientid+secret获取令牌

    1
  • 2019-09-06
    老师好,我用的是授权码模式,获取授权code成功,按照步骤在postman用code换取token报错,{"timestamp":1567759824315,"status":401,"error":"Unauthorized","message":"Bad credentials","path":"/oauth2/token"},操作都是按照说明来的

    作者回复: 获取令牌操作需要带上正确的clientId/secret,使用http用户名密法方式认证,
    curl -X POST --user clientapp:112233 ...

    请确认,而且和服务器端设置匹配一致。

  • 2019-07-24
    老师好,为什么我这边按照你的步骤调用最后返回的是
    {
        "error": "invalid_grant",
        "error_description": "Redirect URI mismatch."
    },

    作者回复: 这个错误提示你请求传过去的redirect uri和服务器端配置的uri不一致,看看是否配置错了。

  • 2019-06-05
    自己尝试试验,第一步访问`/oauth/authorize`端点报错 InsufficientAuthenticationException;搜了一圈还是没能解决,有人遇到过类似情况吗?(spring boot版本 2.1.5.RELEASE)
    ```
    org.springframework.security.authentication.InsufficientAuthenticationException: User must be authenticated with Spring Security before authorization can be completed.
        at org.springframework.security.oauth2.provider.endpoint.AuthorizationEndpoint.authorize(AuthorizationEndpoint.java:143) ~[spring-security-oauth2-2.3.4.RELEASE.jar:na]
    ```
    展开

    作者回复: 提示用户认证没有成功,获取授权码前必须经过用户认证的,你看看这步是否正确,用户名密码配置是否有误,输入是否正确。

  • 2019-05-30
    github代码太难下了,我转移到gitee上了,大家可以下载
    https://gitee.com/poet/oauth2lab

    作者回复: 谢谢你的好心支持!赞一个!

  • 2019-05-15
    波波老师您好,因为之前一直对几个redict_url参数有疑惑,我使用spring boot 2.1.4进行了实验。
    实验发现 /oauth/authorize 端点并不需要传入redict_url参数,此时的回调地址调用的是在客户端信息数据源中配置的redirectUri。而只有拿着授权码去/oauth/token端点去请求token时才需要该参数,此时该参数用于和数据源中配置的客户端的redirectUri进行匹配。不知在老师使用的boot版本中该参数是必须的吗?
    展开

    作者回复: 你好,第一次是optional可选,第二次是required必须,spring security oauth2只是RFC6749规范的实现,具体以RFC6749官方文档为准,参考4.1.1节:https://tools.ietf.org/html/rfc6749#section-4.1.1

  • 一直没有明白为什么一定要设置回调接口呢,同步调用拿到授权码不就可以?

    作者回复: 因为这个授权码最终是要通过客户应用(一般是WebApp)去和授权服务器交互,才能最终获得令牌,注意这里不是通过浏览器直接和授权服务器交互,而是必须通过客户应用,因为只有客户应用它能存储clientid才有资格,浏览器只是中介实现一个302跳转

  • 2019-01-25
    老师,多讲讲生产环境的实际运用,如果各家五花八门的话,可以挑一些中小型企业的一般做法,这样学习起来才敢在自己的项目中使用。

    作者回复: 你好,谢谢你的建议!本次课程专注微服务八大核心组件,以模块化方式讲解,突出架构原理和实践。我后续还会推出微服务架构生产实践案例,不仅有微服务应用的架构和设计,同时结合k8s部署实践,敬请关注。

  • 2018-12-18
    老师可不可以讲解一下怎么将zuul网关配置为资源服务器,然后调用链下游的微服务就不必配置为资源服务器了吧

    作者回复: zuul网关可以做集中令牌校验,可通过filter实现,具体可参考课程最后一个模块综合案例部分,网关集中验令牌之后,可向后传递用户信息(例如通过http header),下游服务可直接获取用户信息,不必再去集中验令牌

  • 2018-12-12
    老师,获取的Token万一通过抓包的方式或者别的方式获取到了,岂不是没有安全性了?

    作者回复: 一般令牌需走https,且令牌可根据安全场景需求设定有效期,也可吊销,除普通令牌,另还有更安全的PoP(proof of possession)令牌,能验证拥有者身体,可用在安全严格场景。

  • 2018-12-12
    dubbo的二进制协议做 oauth的授权服务器, 需要把oauth的http通信协议改成二进制协议嚒? 授权服务器单独部署的情况;

    作者回复: oauth有官方规范定义(rfc6749),规范中定义的端点是http(s)的,建议遵循规范保持互操作性。

  • 2018-12-08
    老师,你好,我想做一个类型微信公众平台那样的,api开放鉴权。我可以怎么做?就是不希望跳转到那个登陆页,希望一个appId+appsecret就完成授权,然后换取accessToken。有没有相关的博客或者资料推荐?

    作者回复: 不跳转的可考虑采用用户名密码模式,我课程的最后一个模块《综合案例分析》会讲这种模式实现(12月马上上线),可留意,如还有疑问,可加我微信(bulldog2015)沟通。

  • 2018-11-21
    老师您好,针对授权码模式 spring应该是帮我们封装了 login功能,授权以及授权信息生成功能,还有授权后的页面跳转功能,这一部分的细节能简单说一下嘛,比如 接收到code请求后会重定向到login,login成功后继续处理code请求,这几步是如何串起来的

    作者回复: spring security oauth2的确被封装过于复杂,很多学员反应无法完全理解这些oauth2流程,所以下个模块我会讲解如何实现一个oauth2授权认证服务器,包括代码剖析,帮助大家理清这些流程及实现方式,请关注下个第八模块视频课程。

  • 2018-11-19
    http://localhost:8080/oauth/authorize? 为什么这个IP地址后面带的是/oauth/authorize这个呢?

    作者回复: 这个是oauth2规范的获取授权码端点

  • 2018-11-07
    波波老师,您好:
    我开发过程有遇到这个一个场景: 微服务用户的登录模块是前后端分离开发。服务端没有用session。
    现在需要开放当前用户,oauth2授权code模式。##
    当第三方client发起获取oauthcode 请求时候, 服务端如何判断把当前用户与authcode 关联起来?
    服务器端,如何把当前用户与accesstoken关联起来?(是否添加cookie来实现?)
    期待老师的指导。
    展开

    作者回复: 你好,通过描述,我没有完全理解你的问题,建议加我微信:bulldog2015,通用微信进一步交流