当前位置: 首页 > 面试题库 >

使用SAML扩展和Shibboleth在Spring中进行单一登录

狄富
2023-03-14
问题内容

我想在基于Spring的应用程序中实现单点登录(SSO)身份验证层,以支持来自不同安全域的身份验证和授权。我选择了Shibboleth作为IdP,但我尚未确定我将用于SP的内容。

选择是:

Spring Security SAML扩展:组件使新应用程序和现有应用程序都可以充当基于SAML 2.0协议的联盟中的服务提供者,并启用Web Single Sign-On。Spring Security Extension允许在单个应用程序中无缝组合SAML 2.0和其他身份验证和联合机制。可以使用在身份提供者模式下支持SAML 2.0的所有产品(例如ADFS 2.0,Shibboleth,OpenAM / OpenSSO,RM5 IdM或Ping Federate)来连接Spring Security SAML Extension。

Shibboleth(也称为SP):Shibboleth是一项基于Web的技术,可实现SAML的HTTP / POST,工件和属性推送配置文件,包括身份提供商(IdP)和服务提供商(SP)组件。

因此,我有一些问题:

  1. 就可伸缩性和可维护性而言,直接使用Spring SAML作为SP是个好主意吗?
  2. 可以将外部SP与Spring Security一起使用吗?如何配置我的应用程序和/或我的应用程序服务器(JBoss 8.0-WildFly)?
  3. 我在哪里定义角色(针对每种情况)?
  4. 哪个值得选择?
    最好的问候,V.

问题答案:

两者之间的主要区别是部署方案:

Shibboleth SP插件直接部署到Apache / IIS Web服务器。
Spring SAML嵌入在您的应用程序中。
两者都有优点和缺点。

  1. 就可伸缩性和可维护性而言,直接使用Spring SAML作为SP是个好主意吗?

spring SAML

  • 可以很好地控制身份验证的执行方式以及身份验证过程与应用程序的交互方式。您可以例如创建自己的配置UI并动态添加IDP,创建自定义登录屏幕作为应用程序的一部分,可以完全轻松地控制错误处理,轻松支持多个IDP,动态配置SSO的详细信息(请求的AuthnContext,NameID,绑定) ,强制验证)。
  • 轻松解析各种格式的接收到的SAML属性,在同一应用程序中支持多种身份验证方法。
    动态生成SP元数据,它提供有限的多租户并支持所有其他选项(例如,单一注销,密钥持有人,IDP发现)中不可用的配置文件。
  • 与Spring Security无缝交互,带来了自己的一系列好处。借助Spring SAML,您还可以直接在应用程序中配置完整的身份验证和授权策略(例如,哪些页面是否需要身份验证以及何时,基于角色的内容访问控制,动态条件下的身份验证,等等)。
  • 允许您将应用程序部署在任何应用程序服务器或容器上以及任何反向代理服务器或Web服务器之后,而不会影响功能。

Shibboleth插件

  • 这些是静态配置的,通常通过HTTP标头与您的应用程序交互。它们使身份验证逻辑与应用程序本身脱钩,因此您唯一需要注意的就是接受标头和使用正确的安全上下文初始化应用程序会话。IIS / Apache服务器上基于URL模式提供了对哪些页面进行保护的定义,这意味着身份验证和授权策略部分在应用程序外部定义。
  • 您需要确保只能通过Web服务器访问该应用程序(=禁止所有直接访问),因为这将允许伪造标题。
  • 不需要对应用程序本身进行很多更改,因此通常可以轻松地与遗留系统一起使用。
  • 可以将外部SP与Spring Security一起使用吗?如何配置我的应用程序和/或我的应用程序服务器(JBoss 8.0-WildFly)?
    是的,有可能,但是需要付出努力。您可以例如配置WildFly以设置加密格式的共享域cookie,并在Spring Security配置中验证cookie。

  • 我在哪里定义角色(针对每种情况)?
    使用Spring SAML,您可以在处理SAML响应时定义角色,例如通过解析SAML属性。这是通过实现SAMLUserDetailsService接口并将其插入来完成的samlAuthenticationProvider。

使用Shibboleth,您可以使用头将从IDP接收到的属性转发到您的应用程序,并在应用程序中解析它们。

WildFly(可能)使您可以直接在SP中定义安全性上下文和角色,而无需在应用程序中进行配置。这种配置可能无法跨应用程序服务器移植

  1. 哪个值得选择?
    所有选项将使您能够使用SAML 2.0执行WebSSO。人们通常根据需求(例如,定制需求),环境(使用的Web服务器,应用程序服务器),首选的开发方法(Java,.NET等),使用的框架,遗留代码进行选择。许多客户都使用Spring SAML和Shibboleth插件。


 类似资料:
  • 我的要求是使用基于SAML的SSO。从SAML断言中检索用户组并保护其余apiendpoint。我正在使用Spring SecuritySAML扩展和Spring MVC。我采取的步骤是。 < li >使用Spring SAML扩展为SP配置应用程序。[完成] < li >检索断言并分配角色[完成] < li >创建restendpoint。[完成] < li >基于角色保护restendpoin

  • 我能够使用Spring Security SAML扩展使我的应用程序充当IDP socircle的SP。我的客户有以下要求: 1.对断言进行签名:从IDP发送的断言进行了签名,并且运行良好。 在考虑到弗拉基米尔的评论之后。我将绑定更改为HTTP-Post,所以现在我发送带有所示签名的SAML请求。通过执行以下操作,我能够发送使用我的私钥(而不是示例项目提供的私钥)签名的请求: 使用keygen工具

  • 我们有两个独立的产品,都包括Web应用程序和服务器。 我们希望为这两个产品都实现单点登录,这样当用户登录到一个产品时,他可以自动访问属于他的另一个产品中的资源。 我已经探索了一点,发现SAML是我们可以采取的一个很好的方法,但是我们不确定我们想如何进行。 实施我们自己的服务提供商是个好主意吗?我看过Shib SP,但看起来如果我想将其集成到我的产品中,也不会那么容易。 所以我只是向以前遇到过类似问

  • 我一直在用SAML扩展连接ADFS服务器。我已经破解了示例应用程序以使用我的ADFS服务器,一切都很顺利,但是我想知道是否有一种方法可以不使用IDP的登录页面连接到IDP。我的意思是,如果有一种方法可以在后台为最终用户完成这个过程。我在考虑对ADFS做一个查询或类似的事情,从SP登录页面获取用户并进行身份验证,避免用户在IDP登录页面进行身份验证的需要。

  • 我正在尝试通过SAML请求将SSO集成到我们的ASP. NET应用程序中。我正在使用KentorAuthService库来实现这一点。使用kentor库是否是从其他身份提供者(例如(一次登录、快速身份等)进行身份验证的解决方案,或者我应该专门基于身份提供者实施。

  • 提前为英国人道歉。 对于客户端,我们必须构建一个单点登录选项。客户特别要求SAML。客户机跟踪所有信息。到目前为止,我了解SAML,他们将是身份提供商,我们将是服务提供商。 然而,为了让我们的系统正常工作,我们需要有一个用户。因此,我们的系统需要保存与身份提供者相同的信息。我们的想法是在我们的系统中进行卷影复制,并在SAML登录时更新信息。但这似乎与SAMLs原则背道而驰。这样做对吗?还是我们应该