Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAAS、SAML和Realm之间有什么区别_Java_Security_Saml_Jaas_Jdbcrealm - Fatal编程技术网

Java JAAS、SAML和Realm之间有什么区别

Java JAAS、SAML和Realm之间有什么区别,java,security,saml,jaas,jdbcrealm,Java,Security,Saml,Jaas,Jdbcrealm,我试图学习JAAS,然后我想出了SAML和Realm,现在我感到困惑 在JAAS的任何一个基本教程中,我们都在配置基本的领域配置。如果我阅读了SAML的配置,那么它看起来类似于JAAS。我完全不知道为什么会有不同的名字。可能是SAML是建立在领域和JAAS上的SAML,不确定是否有人能清楚地说明区别 请谦虚的请求,如果你共享任何链接,请定义一点,这样当我阅读它们时,它能帮助我 我已经成功地在JBOSS和Glassfish上配置了JAAS的基本身份验证和基于FROM的身份验证。它帮助我保护我的JS

我试图学习
JAAS
,然后我想出了
SAML
Realm
,现在我感到困惑

JAAS
的任何一个基本教程中,我们都在配置基本的
领域
配置。如果我阅读了
SAML
的配置,那么它看起来类似于
JAAS
。我完全不知道为什么会有不同的名字。可能是SAML是建立在领域JAAS上的SAML,不确定是否有人能清楚地说明区别

请谦虚的请求,如果你共享任何链接,请定义一点,这样当我阅读它们时,它能帮助我


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

看看这是否有帮助。领域是特定配置所在的区域。JAAS和SAML都是身份验证模块,可以配置为在该reaml上处理身份验证。SAML是一种身份验证方案

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

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

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

JavaEE提供了使用基于角色的访问控制(RBAC)保护EJB的标准机制。首先定义哪些角色适用于应用程序,然后定义访问应用程序的用户属于哪些角色。然后,您可以使用声明性授权(=使用诸如@RolesAllowed、@PermitAll、@DeclareRoles之类的安全注释注释您的方法,或者使用XML描述符执行相同的操作)或编程授权(=通过在代码中直接调用EJBContext上的isCallerInRole来测试用户是否属于某个角色)。基本教程可以在这里找到

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

希望这有帮助,
弗拉基米尔·谢弗(Vladimir Schafer)

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

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

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


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

如果可能,我想做一个补充。我相信这可能有助于理解你的问题。“从概念上说,”弗拉基米尔·查弗,如果可能的话,我想补充一下。我相信这可能有助于理解你的答案。如果可能的话,我想做一个附录。我相信这可能有助于理解你的答案。从概念上说。