问题标签 [spring-saml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2245 浏览

spring - 如何检查 IDP 是否仍然存在有效会话?

我已经使用 Spring Security SAML 实现了 SSO。以下是目前为我工作的内容:

当我尝试访问 SP 的任何资源时,如果我尚未登录,我将被重定向到我的 IdP(在我的情况下为 idp.ssocircle.com)。在 IDP 成功验证后,我被重定向回 SP 并授权传入的 SAML 响应并为相应用户创建会话。直到这里一切都很酷!但是,当我从 IDP 注销(通过从外部单击 idp.ssocircle.com 注销)时,我应该无法访问我的 SP,这在我的情况下没有发生。现在我想做的是编写一个新的过滤器,在处理 SP 上的任何请求之前检查 IDP 的有效会话。我进行了很多搜索,但找不到任何解决我问题的方法。

请提供有关如何实现此过滤器的输入,或者是否有其他方法可以做到这一点?任何建议表示赞赏。

0 投票
1 回答
987 浏览

spring - 使用 Spring Security saml 在 IDP 的会话超时

当 IDP 发生超时时,有人可以解释在 SP 会话中会发生什么吗?

SP 如何知道将用户重定向到 IDP 以再次登录?

每次请求到达时,SP 都会对 IDP 执行 ping 操作吗?

0 投票
1 回答
13780 浏览

spring-security - 在 Spring 中使用 SAML 扩展和 Shibboleth 进行单点登录

我想在基于 Spring 的应用程序中实现单点登录 (SSO) 身份验证层,目的是支持来自不同安全域的身份验证和授权。我已选择 Shibboleth 作为 IdP,但我还没有确定我将为 SP 使用什么。

选择是:

  • Spring Security SAML Extension:组件使新的和现有的应用程序都可以在基于 SAML 2.0 协议的联合中充当服务提供者,并启用 Web 单点登录。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。

0 投票
1 回答
2341 浏览

spring-security - 如何请求 IDP 在 AuthnResponse 中向我发送其他自定义属性?

我已经使用 spring SAML 实现了 SSO,我想知道是否有任何方法可以请求 IDP(在我的情况下为ssocircle.com)向我发送其他属性以及它已经发送的 nameID。假设我希望 IdP 向我发送成功通过身份验证的人的 accountID。我搜索了很多,发现了一些建议,例如:

覆盖WebSSOProfileImpl .java 中的getAuthnRequest方法,以便发送到 IdP 的 authnRequest 具有此属性集。但我不知道如何继续这个?我是否也应该使用这个额外的属性名称和格式来修改我的 SP 元数据?如果是,我该怎么做?或者可以用 RelayState 参数做些什么?在这方面的任何帮助将不胜感激。

谢谢,

阿比拉什

0 投票
2 回答
567 浏览

single-sign-on - 带有 wso2is 的 SLO,idp 不包括 LogoutRequests 中的颁发者

我在这个设置中使用 wso2is 作为 idp 和 2 个应用程序作为 sp。其中一个应用程序使用 java、spring-security-saml-extension,另一个使用 php 和 simplesamlphp。SSO 运作良好,但我无法让 SLO 运作。

我要做的是:

  1. 登录两个 sp-s
  2. 在第一个 sp 中注销
  3. 观察 wso2 日志,看到 wso2 向第二个 sp 发送了 logoutrequest
  4. 第二个 sp 无法读取 logoutrequest

simplesamlphp 错误信息:

由 idp 发出的 saml2 LogoutRequest:

下面的 saml2 SLO-Profile 规范在第 4.4.4 章第 1294 行中明确指出:

<Issuer> 元素必须存在并且必须包含请求实体的唯一标识符

据我了解,作为 Idp 的 wso2is 应该是此处的颁发者,但它未能在消息中包含其 ID。

关于我做错了什么的任何提示?我无法想象这是一个 wso2is 错误!

http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf

0 投票
1 回答
26348 浏览

spring-security - “HTTP 状态 401 - 身份验证失败:传入的 SAML 消息无效”,使用 Salesforce 作为 IdP 实施 SSO

我已经使用 Spring SAML 实现了 SSO,一切正常。到目前为止,它与以下 IDP 合作:1) idp.ssocircle.com 2) openidp.feide.no

现在我正在使用 salesforce.com 作为我的身份提供者进行测试。由于没有上传服务提供商元数据的规定,我在其 IdP 上完成了以下配置设置:

提供我的 entityID 和断言消费者服务 URL。我还上传了我的 SP 证书。我已经下载了它的元数据(idp metadata),如下(隐藏敏感信息):

现在,当我尝试测试我的 SP 时,它首先将我重定向到 IDP(salesforce),询问我输入凭据的位置,但之后我被重定向回我的断言消费者服务 URL(这是我的 SP),但这里是一个例外生成说

HTTP 状态 401 - 此请求需要 HTTP 身份验证(身份验证失败:传入的 SAML 消息无效)。

我尝试了以下但没有工作:( - 虽然没有必要,我已经从销售人员下载了证书文件并将其导入到我的 keystore.jks 中,以确保该密钥用于签名验证。(由于 IDP 元数据中已经存在证书信息,因此不需要)。

这是我在日志文件中找到的内容(仅在成功 AuthnRequest 后添加必要的信息):

有人可以通过查看上面的日志告诉我出了什么问题。任何帮助将不胜感激。

谢谢,

阿比拉什

0 投票
1 回答
1285 浏览

java - Spring SAML 凭证和平台帐户

我能够使用 @ImportResource 注释集成 Spring Boot 和 Spring Security SAML。

现在,我想继续如下:

  1. 用户选择 IdP [DONE]。
  2. 它执行登录(成功)[DONE]。
  3. SP 获取用户数据(通过解析SAMLCredential 对象)[DONE]。
  4. webapp 必须检查通过 SAML 检索的用户 ID(例如电子邮件)是否存在于我自己的数据库中。
  5. a) 如果是,webapp 从数据库中读取角色并设置相关权限。
    b) 如果不是,webapp 必须执行重定向到注册页面,以便将用户插入系统。

通过使用 UserDetailsS​​ervice 实现来执行第 4 点和第 5 点有意义,还是让我设置定义身份验证提供程序、过滤器等的安全上下文?

0 投票
1 回答
803 浏览

java - 使用 Spring Security 定义 HTTP 路由以仅服务“内部”请求

我的问题可能看起来有点奇怪,但我想更好地了解 Spring Security 的工作原理。

我有一个场景如下......

通过使用Spring SecuritySpring SAML,我定义了一个入口点、一些模式和过滤器,以便正确管理http请求。

然后,我还定义了IdP 发现服务

最后,我实现了一个web 控制器来为 http 请求提供服务/sso/idpSelection

当匿名用户尝试访问受保护的页面时,过滤器会将他的请求重定向到/saml/discovery,因此 IdP 发现服务会调用控制器以获取/sso/idpSelection.

很明显,该路由/sso/idpSelection应仅由 IdP 发现服务用作内部资源。

有没有办法拒绝直接访问请求(例如通过浏览器)但同时允许内部进程的路由?

0 投票
2 回答
4873 浏览

saml - 配置 Ping Federate 和 Spring SAML 以验证应用程序

我在运行 Windows_Server-2008-R2_SP1-English-64Bit-Base-2014.04.09 的 AWS EC2 上安装了 PingFederate。我有一个使用 Spring Security 进行身份验证的 Java 应用程序。

我已了解如何使用 PingFederate,我可以设置身份提供者 (IdP) 和服务提供者 (SP)。我已经收集到 IdP 将是应用程序用户提供登录凭据(身份)并将其传递给 SP,在此页面上的此图中,目标应用程序与 SP 分开:

http://documentation.pingidentity.com/display/PF66/Service+Providers+and+Identity+Providers

此图还显示了 IdP 和 SP 两侧的联合身份软件。

我已经用我的本地 PingFederate 服务器创建了一个 IdP 和 SP,只是为了查看配置选项是什么,我对其中的哪些部分实际上需要能够为我的 Spring Security 应用程序拥有 SSO 感到困惑。

我的问题是:

  1. 我是否需要 IdP 和 SP 来实现我正在尝试做的事情。

  2. 现在我们的用户名和密码都存储在 SQL Server 中,我会利用 PingFederate 来验证用户身份吗?

  3. 我什至应该为此使用 Spring Security SAML 还是其他路线更合适?

感谢您的帮助,我已经联系了 PingFederate,但我的区域解决方案架构师恰好要到周五才离开。

如果我的想法完全偏离了我也很抱歉,我正试图把我的想法包裹在需要的东西上。

0 投票
1 回答
7410 浏览

single-sign-on - 使用 PingFederate 为 SSO 配置 Spring SAML

我们决定使用 Ping Federate 作为我们的 SSO 解决方案。我搜索了许多示例,但没有找到清楚描述我需要如何在 PingFederate 端设置我的 SP 和/或 IdP 的弹簧配置。我还没有找到一个 Spring 文档来描述我需要什么来实现它。

任何帮助,非常感谢。