Go 语言项目开发实战
孔令飞
腾讯云专家工程师,前 Red Hat、联想云工程师
41030 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 61 讲
Go 语言项目开发实战
15
15
1.0x
00:00/00:00
登录|注册

01 | IAM系统概述:我们要实现什么样的 Go 项目?

Controller
View
Model
后端负责返回数据
前端负责页面展示和数据加载
避免非法访问
软件层面的安全保障
服务器层面的安全保障
MVC 架构
前后端分离架构
运营平台授权数据展示
授权日志数据分析
请求 API 完成资源授权
创建平台资源
3 大数据库
9 大组件
资源授权
授权功能:IAM 系统
认证功能:JWT 认证
服务资源的安全
服务自身的安全
项目架构
技能点
认证和授权
软件架构模式
使用流程
架构
功能
认证和授权的功能
Go 应用的安全性
课后练习
IAM 系统的功能、架构和使用流程
Go 应用的安全性
IAM 系统
项目背景
总结
IAM 应用
Go 项目开发

该思维导图由 AI 生成,仅供参考

你好,我是孔令飞。从今天开始我们进入课前准备阶段,我会用 3 讲的时间给你讲清楚,我们要实现的实战项目 IAM 应用长啥样、它能干什么,以及怎么把它部署到 Linux 服务器上。先和我一起扫除基础的障碍,你就能够更轻松地学习后面的课程了。
今天这一讲,我先来说说为什么选择 IAM 应用,它能实现什么功能,以及它的架构和使用流程。

项目背景:为什么选择 IAM 系统作为实战项目?

我们在做 Go 项目开发时,绕不开的一个话题是安全,如何保证 Go 应用的安全,是每个开发者都要解决的问题。虽然 Go 应用的安全包含很多方面,但大体可分为如下 2 类:
服务自身的安全:为了保证服务的安全,需要禁止非法用户访问服务。这可以通过服务器层面和软件层面来解决。服务器层面可以通过物理隔离、网络隔离、防火墙等技术从底层保证服务的安全性,软件层面可以通过 HTTPS、用户认证等手段来加强服务的安全性。服务器层面一般由运维团队来保障,软件层面则需要开发者来保障。
服务资源的安全:服务内有很多资源,为了避免非法访问,开发者要避免 UserA 访问到 UserB 的资源,也即需要对资源进行授权。通常,我们可以通过资源授权系统来对资源进行授权。
总的来说,为了保障 Go 应用的安全,我们需要对访问进行认证,对资源进行授权那么,我们要如何实现访问认证和资源授权呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

IAM 应用是一个基于 Go 语言编写的实战项目,旨在为第三方用户提供身份识别与访问管理服务。文章首先探讨了 IAM 系统的功能和架构,包括用户管理、密钥管理和授权策略管理。IAM 系统采用前后端分离架构,通过 RESTful API 实现前后端通信,提高了开发效率和代码质量。另外,文章还介绍了 MVC 架构及其优势,强调了通过控制器层将视图层和模型层分离,提高了代码维护性和扩展性。IAM 系统的使用流程包括注册登录、创建密钥和授权策略、资源授权和运营分析等步骤。最后,IAM 还提供了 marmotedu-sdk-go SDK 和 iamctl 命令行工具,通过 HTTPS 协议访问 IAM 提供的 RESTful 接口。整体而言,本文通过深入讲解 IAM 应用的功能、架构和使用流程,为读者提供了对 IAM 系统的全面了解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 语言项目开发实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(82)

  • 最新
  • 精选
  • 素衣绾绾
    就是说,项目的源码已经完成,然后作者会在专栏中带着我们一起搭建一个web项目框架的雏形,也就是专栏中说的一些目录规范,api设计规范,错误包设计等,具体的功能代码,就是照着已经写好的代码挑选其中核心的功能进行讲解,是吗?

    作者回复: 专栏会介绍如何开发Go项目,demo项目只是专栏介绍的开发技术的一个落地项目。 二者是包含与被包含的关系,专栏包含了实战项目,Go开发方法和思路,一些知识点的讲解,以及我的一些研发经验和建议。 只看源码,你看到的仅仅是一个源码,但是很可能不了解源码背后的构建思路以及一些其它需要注意的地方,比如说只看源码,你仍然不知道开发规范,仍然不知道用了哪些设计模式和技巧。 所以建议以专栏学习为主,代码阅读为辅。通过代码去验证专栏的设计思路。

    2021-05-27
    6
    53
  • 大菠萝
    authz,这个名字有啥含义么?主要是这个z

    作者回复: 认证:authentication,缩写:authn 授权:authorization,缩写:authz

    2021-07-06
    20
  • 小屎丸
    为啥选择 MongoDB 作为日志数据分析展示库,怎么考虑的?谢谢

    作者回复: 1. mongodb带有数据聚合功能,在某些场景下可以实现复杂的数据统计 2. 而且字段增减随意,查询方便 3. IAM系统授权日志量不大,场景也不复杂,再加上,这里是想展示mongodb的教学,所以就采用了mongo

    2021-07-11
    18
  • 、荒唐_戏_
    完蛋了,上来一个iam系统就没理解😓

    作者回复: iam系统主要完成认证和授权功能。 认证:用来判断是否是平台的合法用户,例如用户名和密码就是认证的一种方式 授权:用来判断,是否可以访问平台的某类资源。 认证和授权 2个功能可以抽象成一个系统,这个系统名我起名为iam。类似于aws的iam,腾讯云的cam和阿里云的ram。 建议你参考下腾讯云的cam以协助你理解:https://cloud.tencent.com/document/product/599/40011。 不难,花几分钟相信你就会理解了。

    2021-06-03
    4
    13
  • helloworld
    是不是可以理解为每一个使用iam系统作为认证和资源授权的业务应用,该业务应用的用户每次访问该业务应用的接口都要先经过iam系统,认证和资源鉴权通过后,才能继续访问该业务应用接口呢,也就是iam是业务应用的网关代理?

    作者回复: 理解的没毛病,可以理解为一个授权webhook。

    2021-06-24
    11
  • Fis.
    我理解authz是面向用户的借口,apiserver是核心处理模块,sdk不直接对接apiserver吗?authz和api server分离设计的优点是什么?另外authz从redis获取数据,那不是有可能读到过期数据?(比如当时写入请求还在写入mysql过程中,还没同步到redis)

    作者回复: sdk可以对接iam-apiserver和iam-authz-server。 authz和api server分离的优点,其实是:数据流和控制流的分离。 这样做的好处如下: 1. 控制流主要是用来做资源的CURD,如果控制流服务出故障,会影响用户的使用,但不会影响用户的业务。 2. 数据流出故障会影响用户的业务。 对于一个系统来说,影响用户业务是很严重的事情,而且我们日常变更最多的是控制流服务,控制流和数据流分离,使得我们发布变更控制流服务时,不会影响到数据流服务,也即不会影响用户的业务。

    2021-07-02
    5
    8
  • Sch0ng
    目标是go工程,IAM只是一个支点。对IAM暂且理解个大概,能跟得上后面的学习即可。学完整个专栏,go工程能力更完善即可,顺带理解IAM更多细节,岂不是美滋滋。

    作者回复: 老哥,理解的很到位!

    2021-06-09
    8
  • 姚智慧
    老师,您好,正好讲到iam系统有几个问题想请教你一下,在项目中使用认证授权,遇到几个疑惑的问题一直困扰着我? 假如APP是内部应用的场景,流程是用户通过登录API直接获取token,然后每次携带token进行请求,网关拦截进行token的认证。 (1)这里面token是保存在客户端的,是否安全? (2)token是有有效期的,网上一般说失败了通过刷新token去刷新,(客户端模式)客户端定时请求去触发,如果客户端多的话,频繁地刷新token的请求,显然带来很大的网络开销?为了解决这个问题,我们通过请求然后判断token时间是否到了阈值,然后续签(服务端实现)。但是这个也有问题,如果长时间没有请求会导致token过期,就不能续签了。如果是像淘宝这种,感觉永远都不会退出的,是不是就是延长token的有效时间+服务端刷新。那么永久有效,需要刷新token吗? (3)oauth2中有客户端概念,我认为客户端就是app,那么appId和秘钥是不是保存到了app应用端,这样会有安全问题吗?如果密码都保存在了app端,服务端还需要对秘钥验证吗?

    作者回复: 1. 使用客户端用用户名登录后,证明客户端短时间是安全的,token默认有2小时的过期时间。 2. 这个刷新成本服务端还是能抗住的。如果token过期就只能重新登录了,至于多久过期,每个业务会根据需要自己选择,但很多开源软件一般默认2小时过期。 3. 密钥保存在客户端,需要客户端使用者去保证密钥不泄露,服务端也会保存一份密钥,用来对请求进行再加密,并和客户端传来的token对比,如果一致则请求通过。

    2021-06-02
    3
    8
  • helloworld
    iam这个认证与资源授权系统和网关的认证与鉴权功能有何本质区别呢

    作者回复: 跟网关的认证功能是一样的,iam的认证功能也是参考了tyk网关的实现。 跟网关的鉴权还是有些区别,iam是对资源鉴权,网关是对api鉴权,就是谁能或不能调用哪个api接口。

    2021-06-09
    2
    7
  • helloworld
    IAM能和网关结合使用吗,还是必须二选一呢

    作者回复: 网关做的是接口鉴权,也就是哪个用户/密钥可以访问哪个接口。而IAM做的是资源鉴权。例如淘宝中的iphone资源等

    2021-06-24
    3
    6
收起评论
显示
设置
留言
82
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部