JAAS,SAML和Realm有什么区别

时间:2014-03-29 18:03:55

标签: java security saml jaas jdbcrealm

我正在尝试学习JAAS,然后我提出了SAMLRealm这两个词,现在我很困惑。

JAAS的任何基本教程中,我们几乎都配置了普通Realm配置的基本配置。如果我读取SAML的配置,那么它看起来与JAAS类似。我完全不知道为什么不同的名字。可能 SAML 建立在领域 JAAS SAML 上,不确定任何正文可以明确说明差异。

如果您分享任何链接,请提出一个简单的请求,请定义一下,以便在我阅读时帮助我。

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

3 个答案:

答案 0 :(得分:8)

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

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

Realm是一个概念,用于表示不同应用程序/系统的身份验证和授权策略的分离。例如。如果要使用LDAP对应用程序A中的用户进行身份验证,并且应用程序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单点登录(可以在名为Identity Provider的实体上从应用程序向外部验证用户并登录到应用程序 - 无需服务提供商揭示用户的凭据)。在这些用例中,SAML类似于OpenID或OAuth 2.0身份验证,您可以通过Facebook或Google向第三方开发人员提供这些身份验证。

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

要添加其他答案,我发现this article中的以下说明非常有用:

  

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

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

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