身份认证

词汇解释

  • 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 中获取用户信息了。