【问题标题】:What is the difference between JAAS, SAML and RealmJAAS、SAML 和 Realm 有什么区别
【发布时间】:2014-05-09 05:00:58
【问题描述】:

我试图学习JAAS,然后我想出了SAMLRealm这两个术语,现在我很困惑。

JAAS 的任何基础教程中,我们几乎都在配置普通Realm 配置的基础。如果我阅读了SAML 的配置,那么它看起来类似于JAAS。我完全不知道为什么不同的名字。可能是 SAML 建立在 RealmJAAS 建立在 SAML 上,不确定任何机构可以清楚地说明区别.

如果您分享任何链接,请提出一个谦虚的要求,请定义一点,以便在我阅读它们时对我有所帮助。

我已经在 J​​BOSS 和 Glassfish 上成功配置了基于 JAAS 的 BASIC 和 FROM 的身份验证。它帮助我保护了我的JSPServelets(Web 项目)。如果我想保护一个 EJB 作为我的应用程序的一部分,在哪里查看。

【问题讨论】:

  • 如果可能的话,我想做一个附录。我相信my answer 可能有助于理解您的问题。从概念上说。

标签: java security saml jaas jdbcrealm


【解决方案1】:

JAAS 是一组用于 Java SE 和 EE 的标准 API,它提供了实现身份验证和有限授权的基本方法。 JAAS 进行身份验证的典型用途是通过 LoginModules。 LoginModule 接口 (javax.security.auth.spi.LoginModule) 的实现能够根据 CallbackHandler 中调用者提供的凭据对用户进行身份验证。大多数应用程序服务器允许您插入自己的 LoginModules。 JAAS 的其他关键概念是 Subject(关于用户的信息的集合)和 Principal(用户的单个属性 - ID、密码)。 JAAS的授权能力比较有限,很少直接使用。

Java Web 应用程序的标准身份验证机制(如 web.xml 描述符中声明的 FORM、BASIC 或 DIGEST)通常将所提供凭据的验证委托给已配置的 JAAS LoginModules。

领域是一个概念,用于表示不同应用程序/系统的身份验证和授权策略分离。例如。如果您想在应用程序 A 中使用 LDAP 对用户进行身份验证,而应用程序 B 使用数据库表,您可以将他们放入不同的安全领域,以便隔离并正确执行他们的安全要求。使用该术语的典型系统是 Tomcat,但您也会在其他容器/应用程序服务器中发现相似之处。在大多数情况下(例如,在部署单个应用程序时),您无需过多担心 Realms。

Java EE 提供了使用基于角色的访问控制 (RBAC) 来保护 EJB 的标准机制。您首先定义哪些角色适用于您的应用程序,然后定义访问您的应用程序的哪些用户属于哪些角色。然后,您可以使用声明式授权(= 使用安全注释(例如 @RolesAllowed、@PermitAll、@DeclareRoles)注释您的方法,或使用 XML 描述符执行相同操作)或编程授权(= 通过调用 isCallerInRole 来测试用户是否属于某个角色EJBContext 直接在您的代码中)。基本教程可以在这里找到http://docs.oracle.com/javaee/6/tutorial/doc/bnbyl.html

SAML 与以前的野兽截然不同。您可以通过一种非常简单的方式将 SAML WebSSO 视为一种身份验证方法。通常,SAML 是一种标准,它定义了一种基于 XML 的协议,用于以安全的方式在远程系统之间传输有关用户、他们的身份验证事件和安全属性的信息。除了协议本身之外,SAML 标准定义了协议的典型用例,最常见的是 Web 单点登录(一种在称为身份提供者的实体从应用程序外部验证用户并登录到应用程序的可能性 - 服务提供者没有透露用户的凭据)。在这些用例中,SAML 类似于 OpenID 或 OAuth 2.0 身份验证,您可以看到 Facebook 或 Google 向第三方开发者提供的。

希望这会有所帮助, 弗拉基米尔·谢弗

【讨论】:

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

看看这对你有没有帮助。领域是具有特定配置的区域。 JAAS 和 SAML 都是身份验证模块,可以配置为在该 reaml 上处理身份验证。 SAML 是一种身份验证方案。 http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language

【讨论】:

    【解决方案3】:

    为了补充其他答案,我发现this article 的以下解释很有帮助:

    实际上,SAML 和 JAAS 是两个截然不同的安全框架。 SAML 是用于交换身份验证和授权信息的 XML 框架。 SAML 提供了一个标准 XML 模式来指定身份验证、属性和授权决策语句,它还指定了一个基于 Web 服务的请求/回复协议来交换这些语句。

    另一方面,JAAS 通过特定于实现的登录模块接收有关用户的信息,对用户进行身份验证,并验证他们是有效的主题。

    据我了解,JAAS 可用于为您的应用程序实现自定义身份验证和授权,并且有很多可能的方法可以做到这一点,其中一些涉及 SAML。例如,您可以使用 SAML 获取用户的身份和角色/组信息;这将存储在您的 JAAS 模块需要解析的 XML 令牌中。

    【讨论】:

    • 如果可能的话,我想做一个附录。我相信my answer 可能有助于理解您的答案。从概念上讲。
    猜你喜欢
    • 2014-01-30
    • 2011-12-03
    • 2012-07-31
    • 2011-04-03
    • 2011-12-20
    • 2021-01-15
    • 2015-08-04
    • 2010-10-02
    • 2011-12-12
    相关资源
    最近更新 更多