身份认证
词汇解释
- Authenticate:身份认证,识别用户身份的过程。
- Authorize:授权检查,确定当前用户是否有权访问资源的过程。
工作机制
- Authenticate,由框架实现,对所有请求都有效(一直开启)
- 它由一个专门的HttpModule来实现,当发现有用户登录身份凭证时(Cookie或者请求头),会自动识别
- 会自动续期用户的登录身份凭证
- 用户登录身份凭证可以微服务之间透明传递,例如 A->B->C 的服务调链,服务C仍然能获取用户身份并实现安全校验。
- 用户识别的过程发生在进入 HttpAction 之前,所以可在 HttpAction 中获取当前用户信息
- Authorize,框架提供必要(基础的)验证手段 [Authorize] 来实现
- [Authorize] 可以标记在 Controller 或者 Action 上面,以表达不同的应用范围
- [Authorize] 支持4类过滤方式:用户名, 角色,权限号,用户身份类型IUserInfo
- [AllowAnonymous] 可以表示允许【匿名用户】访问
实现过程
当用户成功登录后,服务端会生成一个登录凭证(JWT Token),
只要后续请求带上这个登录凭证,服务端就可以知道当前是谁,即还原 UserInfo 对象,
这个过程是在 Nebula中自动完成的,包含凭证继期处理,开发人员不需要参与处理。
身份认证 结束后,就可以在 HttpModule/Controller 中获取用户信息了。