Jetty 认证架构

Jetty authentication architecture

Jetty 身份验证架构使用以下 4 个接口:

org.eclipse.jetty.server.UserIdentity
org.eclipse.jetty.security.LoginService
org.eclipse.jetty.security.IdentityService
java.security.Principal

有人可以解释这 4 个接口在身份验证流程中如何相互交互。

浏览代码似乎不是很有帮助,因为有太多极端情况。我只是对主流感兴趣。

这个问题很难回答,因为它非常开放/模糊。

我会先尝试简单的答案。

首先,基础知识,JVM 提供了什么:

现在 Jetty 细节:

  • org.eclipse.jetty.server.UserIdentity - 这表示用户的标识。又名用户的 PrincipalSubject(如果主体为空,则用户未通过身份验证)。这还包括一些帮助 isUserInRole(String) 样式逻辑的方法。
  • org.eclipse.jetty.security.IdentityService - 这将 UserIdentity 与所属的范围/线程相关联。 (这是一个高级概念,一些安全实现需要挂钩以正确处理安全性。Jetty 仅附带默认行为,即仅为 UserIdentity 创建和执行此类关联。因为安全实现不需要它Jetty 附带)。
  • org.eclipse.jetty.security.LoginService - 这是安全实现的 API,用于来自 login()logout() 的 create/validate/destroy 运行时 UserIdentity 对象样式事件。

最后,它是如何联系在一起的: