gpt4 book ai didi

java - Jaas LoginModule 范围和 session 处理

转载 作者:行者123 更新时间:2023-11-30 07:48:08 25 4
gpt4 key购买 nike

我可能只是误会了 JAAS。我开始研究 JAAS,因为我需要为应用程序提供自定义的 LoginModule。

但每次我看到 LoginModule 的例子时,他们总是将主题定义为私有(private)/ protected 字段,在方法之间访问。

所以我的问题是:LoginModule 实例的范围是什么?它是保证总是在其他方法之前调用初始化的单例吗?或者每个经过身份验证的主题是否有一个 LoginModule?是完全不同的东西吗?

作为奖励问题? JAAS 如何处理 session ?我无法在任何地方找到 sessionID(尽管我可能错过了一些非常明显的地方)

最佳答案

What is the scope of an instance of the LoginModule?

这取决于创建/管理模块的组件。

在 Java SE 中,SPI 的典型/预期用途是通过 LoginContext类,默认情况下,延迟实例化和初始化它的每个 configured模块一次,就在委托(delegate)给它们的 login 方法之前。随后,上下文保留对完全相同的模块实例的引用,直到它被处理。因此,模块的生命周期取决于其封装上下文的生命周期。由于上下文的 Subject 同样只设置一次,上下文的模块可以(它们实际上必须为了满足他们的契约(Contract))安全地引用它直到他们的“时间结束” ".

上述契约及其 promise 自然只在模块由标准登录上下文管理时有效。例如,如果应用程序选择直接与模块交互,它还必须承担这样做的责任,同时遵守标准登录上下文的协议(protocol)——或者对模块实现提出更多要求。后者往往发生在 Java EE 中,其中供应商(阅读:本例中的 Java SE 应用程序)可能要求模块派生自它们自己的类和/或伴随非标准配置。

How does JAAS handle sessions?

它没有1。它在设计时并没有真正考虑到网络身份验证。它与 Servlet 和 EJB 等框架的集成也没有标准化。

作为一个标准,JAAS 寻求“仅仅”两件事:

  • 在成功验证后使用主体和凭据填充主题。
  • Augment线程的 call stacks与那些校长,所以authorization稍后可以根据主体和特定代码的 trustworthiness 在单个调用堆栈帧的粒度范围内执行(是源自 http://example.comProtectionDomain,由 “Fred”“Alice”签名,并包含声明方法 foo() 的特定调用的类,在代表 标识的实体执行时授予指定的 Permission校长{“Gill”“人力资源经理”}?)。

除了这两个之外的任何东西—— session 、网络协议(protocol)消息、身份验证流、Java EE 角色,以及你拥有的东西——都是非标准的,并且由使用 JAAS 的应用程序或框架自行决定。在 Java EE 中 numerous标准化efforts已经进行了超过years试图弥合 Java SE aka JAAS aka sandbox 和 Java EE 安全模型之间的差距。


1 如果我们稍微远离网络应用领域,我们可以查看 LoginContext(如果与一个或多个线程关联)和 AccessControlContext(首先与经过身份验证的 SubjectPrincipal 结合,以便携带有意义的授权语义)作为一种 session 。然而,所有可能的方法都可以将它们绑定(bind)到某个 Web 应用程序(框架)中,这些方法与标准 JAAS 无关;例如,在 Servlet 设置中,身份验证和授权由应用程序管理,可以LoginContext 或其封装的 Subject 作为属性附加到HttpSessionHttpServletRequest;或者 Servlet 容器本身可以在幕后使用AccessControlContext,以便将在容器管理的身份验证期间建立的主体与服务请求的线程相关联(并通过扩展请求本身)。

关于java - Jaas LoginModule 范围和 session 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49434160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com