01 | IAM系统概述:我们要实现什么样的 Go 项目?
该思维导图由 AI 生成,仅供参考
项目背景:为什么选择 IAM 系统作为实战项目?
- 深入了解
- 翻译
- 解释
- 总结
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-27653 - 大菠萝authz,这个名字有啥含义么?主要是这个z
作者回复: 认证:authentication,缩写:authn 授权:authorization,缩写:authz
2021-07-0620 - 小屎丸为啥选择 MongoDB 作为日志数据分析展示库,怎么考虑的?谢谢
作者回复: 1. mongodb带有数据聚合功能,在某些场景下可以实现复杂的数据统计 2. 而且字段增减随意,查询方便 3. IAM系统授权日志量不大,场景也不复杂,再加上,这里是想展示mongodb的教学,所以就采用了mongo
2021-07-1118 - 、荒唐_戏_完蛋了,上来一个iam系统就没理解😓
作者回复: iam系统主要完成认证和授权功能。 认证:用来判断是否是平台的合法用户,例如用户名和密码就是认证的一种方式 授权:用来判断,是否可以访问平台的某类资源。 认证和授权 2个功能可以抽象成一个系统,这个系统名我起名为iam。类似于aws的iam,腾讯云的cam和阿里云的ram。 建议你参考下腾讯云的cam以协助你理解:https://cloud.tencent.com/document/product/599/40011。 不难,花几分钟相信你就会理解了。
2021-06-03413 - helloworld是不是可以理解为每一个使用iam系统作为认证和资源授权的业务应用,该业务应用的用户每次访问该业务应用的接口都要先经过iam系统,认证和资源鉴权通过后,才能继续访问该业务应用接口呢,也就是iam是业务应用的网关代理?
作者回复: 理解的没毛病,可以理解为一个授权webhook。
2021-06-2411 - 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-0258 - Sch0ng目标是go工程,IAM只是一个支点。对IAM暂且理解个大概,能跟得上后面的学习即可。学完整个专栏,go工程能力更完善即可,顺带理解IAM更多细节,岂不是美滋滋。
作者回复: 老哥,理解的很到位!
2021-06-098 - 姚智慧老师,您好,正好讲到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-0238 - helloworldiam这个认证与资源授权系统和网关的认证与鉴权功能有何本质区别呢
作者回复: 跟网关的认证功能是一样的,iam的认证功能也是参考了tyk网关的实现。 跟网关的鉴权还是有些区别,iam是对资源鉴权,网关是对api鉴权,就是谁能或不能调用哪个api接口。
2021-06-0927 - helloworldIAM能和网关结合使用吗,还是必须二选一呢
作者回复: 网关做的是接口鉴权,也就是哪个用户/密钥可以访问哪个接口。而IAM做的是资源鉴权。例如淘宝中的iphone资源等
2021-06-2436