26 | IAM项目是如何设计和实现访问认证功能的?
该思维导图由 AI 生成,仅供参考
如何设计 IAM 项目的认证功能?
- 深入了解
- 翻译
- 解释
- 总结
IAM项目通过策略模式实现了Basic认证和Bearer认证两种认证方式,并在具体代码中展现了认证的实现细节,为读者提供了全面的认证功能设计和实现方案。文章详细介绍了iam-authz-server和iam-apiserver的Bearer认证实现,以及IAM项目认证功能设计技巧,为读者提供了深入的技术细节和实践经验。IAM项目中,不同客户端适用不同的认证方式,如控制台、App端使用`用户名:密码`的Basic认证,而iamctl、API调用、Go SDK则采用更安全的Bearer认证。IAM项目采用了将API接口注册到API网关中,通过API网关的Token认证功能来实现对API接口的认证。同时,IAM项目还需要调用iam-authz-server提供的RESTful API接口进行资源授权,适合采用Bearer认证。在认证过程中,IAM项目需要将用户名/密码、密钥等信息保存在后端的MySQL中,并考虑内存和数据库的数据一致性。IAM项目中实现了Basic认证和Bearer认证两种认证方式。Basic认证通过用户名和密码进行认证,通常用在登陆接口,登陆成功后会返回JWT Token,前端会保存该Token在浏览器的Cookie或LocalStorage中,供后续请求使用。总的来说,IAM项目通过策略模式实现了Basic认证和Bearer认证两种认证方式,并在具体代码中展现了认证的实现细节,为读者提供了全面的认证功能设计和实现方案。
《Go 语言项目开发实战》,新⼈⾸单¥68
全部留言(16)
- 最新
- 精选
- helloworld本文的意思是说正常的生产环境下,iam-apiserver和iam-authz-server的api的认证功能其实都应该放到网关来实现的,本文之所以由iam项目亲自来实现就是为了方便讲解认证的具体实现方法,我理解的对不对?
作者回复: 老哥理解的没毛病
2021-07-268 - Geek_f23c82麻烦问下authserver什么时候派发的jwt token?
作者回复: iamctl jwt sign 通过这个命令签发token,authzserver解析token进行认证
2022-05-29归属地:广东3 - 党jwt需要后端解析并从缓存中拿用户对应秘钥在进行运算进行鉴权,这些流程是不是有点复杂和多余啊,登录时候直接随机生成一个token(uuid hash)传给前端并保存到缓存中,缓存中token直接对应用户的session,每次前端传过来token 根据是否能用token获取缓存中的session来鉴权 这样岂不是实现简单 也安全啊
作者回复: 这样做不太合理: 1. 如果很多用户,那应用程序会缓存并维护很多session,对应用程序是一种压力,如果应用程序重启,那登录会失效,这种是不合理的 2. jwt token中能够包含很多信息,可以基于这些信息做更多的认证逻辑
2021-11-113 - 冷峰为什么每个用户都要有一个SecretKey, 所有的用户用同一个SecretKey不行吗?
作者回复: 这样不安全了,A、B、C都使用同一个secretKey,那都依赖于同一个secretKey,如果A想更改secretKey的过期时间,不就影响到B、C了。secretKey也属于用户资源,每个用于都应该有一个,符合产品设计思路
2021-08-17113 - 🌀🐑hfy🐣请问老师为什么bearer认证里面还要basic认证?
作者回复: bearer认证中没有basic认证。是不是理解错了?可以再看看,有问题再留言
2022-09-26归属地:广东22 - season第四步,设置HTTP Header username: colin 。 应该是 第四步,给gin.Context中添加 username: colin 。 ?
作者回复: 嗯嗯,是一样的
2022-10-13归属地:广东1 - seasonParseWithClaims怎么理解? func (p *Parser) ParseWithClaims(tokenString string, claims Claims, keyFunc Keyfunc) (*Token, error) {} 使用Claims来解析,并返回 token?
作者回复: 用来解析Token,并将解析后的claims存放到传入的claims变量中
2022-10-13归属地:广东1 - season技巧2:使用抽象工厂模式 auth.go文件中,通过newBasicAuth、newJWTAuth、newAutoAuth创建认证策略时,返回的 都是接口。通过返回接口,可以在不公开内部实现的情况下,让调用者使用你提供的各种认证 功能。 1. 不公开内部实现的情况下,是指不公开哪个函数的内部实现? 2. 让调用者使用你提供的各种认证功能,指的是哪些方法?
作者回复: 1. 相对于调用者来说,不用公开newBasicAuth、newJWTAuth、newAutoAuth方法的实现。 2. basic认证、jwt认证、和basic+jwt自动选择的认证方式
2022-10-13归属地:广东1 - 党jwt貌似不可以实现实时踢人吧 一个账号登录了 在登录一次 让上次的token失效 这个jwt不可以吧
作者回复: 这个JWT是没这种功能的
2021-11-2941 - yandongxiao总结: IAM系统采用 Basic + bearer 两种认证方式。Basic 认证要求输入用户名和密码,返回 JWT Token;虽然客户端在访问 iam-apiserver 或者 iam-auth-server 时,在 bearer 认证中携带该 Token,服务端对该请求进行认证。 1. 服务端basic认证实现逻辑:通过 gin middleware 实现了签发 JWT 的功能。jwt.New 对象在实例化时,传递多个回调函数,比如 Authentiactor, LoginResponse 等。 2. 服务端bearer认证实现逻辑:在 gin 中以 middleware 的方式存在,借助 jwt package 完成认证。认证完成后,会在 Context 中保存Username,方便后面的handler使用
作者回复: 总结的好细!
2021-11-271