我们在哪里使用 JAAS

Posted

技术标签:

【中文标题】我们在哪里使用 JAAS【英文标题】:where we use JAAS 【发布时间】:2012-04-09 07:22:25 【问题描述】:

我正在学习 Java 安全 JCE/JAAS。我无法获得需要在真实 Web 应用程序中实现 JAAS 登录模块的示例。

谁能指导我在哪里可以在我的网络应用程序中实现 JAAS。据我所知,这是身份验证和授权服务。

/// 如果我现在的理解是正确的,这意味着如果我们的网络服务器或任何其他网络服务器中正在运行任何服务(如 LDAP),并且如果我们想使用该服务,那么我们需要实现 JAAS 来验证我们的应用程序。

【问题讨论】:

我同意,我知道如何实现,但请您解释一下我可以实现的任何场景。 如果可能的话,我想做一个附录。我相信my answer 可能有助于理解您的问题。从概念上说。 【参考方案1】:

JAAS 是在容器上实现登录的一种方式。 JAAS 的主要优势在于它是一个集成在 JRE 中的标准框架 - 因此您可以获得大量信息、示例、连接器等 - 并且它正确地分离了用户身份验证的各种关注点。

特别是,它明确区分了身份验证(验证提供的凭据)和授权(授予用户的角色和权限)。

虽然身份验证通常是“通用的”或“外部的”,例如使用 LDAP 服务器,但授权通常与您的应用程序紧密耦合:角色和权限通常特定于应用程序解决的业务问题。

实现您自己的 JAAS 模块是解决此问题的一种简单方法,同时保持在定义良好的框架的范围内,并且无需提供低级实现来为模块注入登录周期和会话管理容器。

【讨论】:

如果可能的话,我想做一个附录。我相信my answer 可能有助于理解您的答案。从概念上说。【参考方案2】:

您不需要使用标准 servlet 容器实现您自己的 JAAS 登录模块,除非您想修改其标准行为,因为它们为您提供了几种实现它的标准方法。

在这里您将找到一个教程,展示如何在 Tomcat 中使用表单登录(无需滚动您自己的 LoginModule): http://www.avajava.com/tutorials/lessons/how-do-i-use-form-authentication-with-tomcat.html

【讨论】:

像往常一样,对于这类问题,谷歌给出了更好的“答案”:blog.frankel.ch/custom-loginmodule-in-tomcat;只要记住在 web.xml 的 中添加领域的名称【参考方案3】:

通常,作为应用程序开发人员,您不会实现 JAAS 模块。相反,您可以从您正在使用的应用服务器中包含的预先存在的模块中选择需要用于您的应用程序的 JAAS 模块。大多数应用程序服务器都带有各种实现,允许您执行常见的事情,例如使用来自数据库、ldap、活动目录、kerberos 等的信息进行身份验证。您将确定需要使用的身份验证源并适当地配置您的应用程序。

【讨论】:

以上是关于我们在哪里使用 JAAS的主要内容,如果未能解决你的问题,请参考以下文章

“Spring Security”和“Java 认证和授权服务(jaas)”

Kafka 在 kubernetes 上使用 sasl.jaas.config 配置 jaas

全方位解决方案

JaaS 可以用于 Rest 吗?

在webUI中添加principalalsQuery不允许使用空格

如何使用自定义 JAAS 堆栈配置 Spring Security?