构建OAuth2服务器~Golang语言实现

本文档介绍了如何使用Golang构建一个轻量级OAuth2服务器,解释了微服务架构中OAuth2的重要性,并提供了源码分析和安装启动步骤。文章详细讲解了OAuth2的授权流程,包括数据模型、接口模型和架构设计,同时也提到了项目扩展和生产化所需考虑的方面。
摘要由CSDN通过智能技术生成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e2lGUFSU-1581424564707)(http://jskillcloud.com/img/post/20181212/oauth2-gopher@0.25x.png#pic_center)]

前言

自从我和极客时间合作的课程《微服务架构和实践160讲》上线以来,陆续收到一些学员的反馈,包括:

  • Spring Cloud OAuth2复杂难以理解
  • OAuth2的四个流程到底是如何实现的?
  • 课程缺乏项目架构设计和实战开发案例
  • 波波老师实践中是如何做架构设计的?

基于学员的上述反馈和疑问,同时考虑到OAuth2是微服务架构的重要环节,我决定带领大家分析一个轻量级OAuth2服务器(项目名Gravitee)的设计和实现,让大家深入理解OAuth2服务的原理和实现,同时解答大家的一些疑问。

我这边Gravitee项目使用Golang语言实现,为啥使用Golang呢?原因如下:

  1. Golang语言简单,语法简洁受控,适合课程讲解
  2. Golang由Google公司开发支持,背书强大,社区生态好
  3. Golang语言是云原生基础语言,近年社区热门的开源产品,例如k8s/docker/etcd/istio等,都是使用Golang语言开发
  4. 微服务多语言(polygolot)开发的趋势,目前很多互联网公司会同时采用若干种语言开发业务和系统服务,互为补充
  5. OAuth2本身实现和具体语言无关,理解了Golang版代码,不难用其它语言(如Java)实现

注意!!!

  1. 本项目代码仅为课程讲解开发,不是生产级!!!如需生产化,则还需要做很多生产扩展+严格的测试,具体见项目扩展环节。同时,你若对本项目做了有价值生产扩展,欢迎提交pull requets到https://github.com/spring2go/gravitee
  2. 本项目源码主要参考RichardKnop的go-oauth2-server[附录1],感谢原作者!本项目对原项目主要做了如下修改:
  • 数据库从postgresql改为mysql
  • 配置简化为使用本地配置文件
  • 依赖更新和使用glide[附录6]管理

架构和设计

总体架构和接口模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jo7BXTYD-1581424564709)(http://jskillcloud.com/img/post/20181212/arch.png#pic_center)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Wu9vSBv-1581424564710)(http://jskillcloud.com/img/post/20181212/intf.png#pic_center)]

Gravitee总体架构比较简单,使用mysql数据库做存储。数据库之上是数据访问模块,封装数据模型操作。中间层是OAuth2服务模块,这个是Gravitee核心࿰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值