问题标签 [saml-2.0]

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 投票
2 回答
3376 浏览

c# - 服务提供者之间的 SAML 2.0 身份验证断言(C#、.net、MVC4、组件空间)

我正在构建的系统有问题。我已经成功实施了一个由 SP 发起的 SSO 系统。但是,当考虑到该系统具有多个必须能够交互和交换数据的独特且完全隔离的服务提供者时,就会出现问题。当一个 SP (SP1) 需要与另一个 SP (SP2) 通信时,它们需要能够在保持安全的同时无缝转换。因此,我假设他们需要能够断言或共享 SAML 数据。

例如,用户尝试通过 SP1 访问系统并被重定向到 IdP。用户针对 IdP 进行身份验证,然后 IdP 将通过 http post 断言回 SP1。用户现在在 SP1 上执行一系列任务,最终需要数据传输或浏览器重定向到 SP2。SP2 不知道 SP1 已成功验证用户身份并收到来自 IdP 的 SAML 响应。这就是我的问题出现的地方。我需要实现一种机制,让 SP2 能够了解用户在 SP1 上的状态。更一般地说,我需要允许一组服务提供者中的任何服务提供者就用户的状态相互断言。但是,我找不到有关完成此任务的“官方”方式的文档。

我已经想到了该问题的多种解决方案,但我怀疑它们中的任何一个至少是“官方的”。一种是在 IdP 上保留 SAML 断言列表,可以由 guid 引用。然后将链接从 SP1 传递到 SP2,该链接将引用控制器操作和 guid,从而允许 IdP 将数据重新声明到 SP2。这似乎缓慢而复杂。两个将在 SP1 上收到响应后以某种方式保留 SAML 响应,并在用户被重定向时以某种方式将数据传递给 SP2。

我可能想多了,把这个过程复杂化了。我可能需要转向 IdP 发起的基于 SSO 的解决方案。我可能正在查看文档中的某些内容。

如果有人能对这个话题有所了解,将不胜感激。我很乐意提供有关该主题的任何其他信息。

0 投票
1 回答
15134 浏览

spring-security - Spring Security SAML - 无法验证签名

我在 Tomcat 7 上使用 Spring Security SAML 2.0 示例 webapp,并对其进行了修改以尝试使其针对 Ping Identity 服务进行身份验证。webapp 正在与服务对话,它正在发回一个断言,但在尝试验证签名时失败,如下面的调试输出所示:

我知道它无法验证签名,并且我已获得 Ping Identity 管理员的证书以供使用,但我不确定如何将其包含在应用程序中。我尝试使用 JDK 的 keytool 程序将其添加到示例应用程序附带的 JKS(密钥库)中,但似乎无法在其中找到它。我还尝试将其添加到服务提供商的元数据 xml 文件中,如下所示:

但是它仍然返回相同的错误。

是否有我应该放置证书以验证签名的特定位置?一般来说,我对 SAML 和应用程序安全性比较陌生,所以如果我使用了错误的术语,我深表歉意。

0 投票
2 回答
4725 浏览

java - 如何使用 java 自签名 SAML 2.0 版本的 OpenSAML 断言?

我可以使用 OpenSAML 创建断言,但我想对其进行签名。可以通过两种方式进行签名: 1. 自签名
2. 使用第三方(威瑞信等)

使用 OpenSAML 对断言进行自签名的步骤是什么?

0 投票
2 回答
21553 浏览

c# - 如何使用 C# 正确准备“HTTP 重定向绑定”SAML 请求

我需要使用 HTTP 重定向绑定方法创建一个 SP 发起的 SAML 2.0 身份验证事务。事实证明这很容易。只需获取 IdP URI 并连接一个查询字符串 param SAMLRequest。参数是描述 SAML 请求的 xml 编码块。到现在为止还挺好。

将 SAML 转换为查询字符串参数时会出现问题。我认为这个准备过程应该是:

  1. 构建 SAML 字符串
  2. 压缩这个字符串
  3. Base64 对字符串进行编码
  4. UrlEncode 字符串。

SAML 请求

编码

我怀疑压缩在某种程度上是罪魁祸首。我正在使用DeflaterOutputStream来自SharpZipLib的类,它应该实现行业标准的放气算法,所以这里可能有一些设置我错了?

可以使用这个SAML2.0 调试器(它是一个有用的在线转换工具)来测试编码的输出。当我使用这个工具解码我的输出时,它就变成了无稽之谈。

因此,问题是:您知道如何将 SAML 字符串转换为正确压缩和编码的 SAMLRequest 查询参数吗?

谢谢

编辑 1

下面接受的答案给出了问题的答案。这是所有后续评论和答案更正的最终代码。

编码 SAMLRequest - 工作代码

SAMLRequest变量包含此问题顶部显示的 SAML。

解码 SAMLResponse - 工作代码

0 投票
2 回答
625 浏览

wso2 - WSO2 身份服务器 - 限制对 SSO 服务的访问

我对 SAML 和 WSO2 的理解非常基础,所以提前抱歉。我想知道是否可以将访问 SSO 服务限制为用户子集?

0 投票
2 回答
1027 浏览

saml-2.0 - 如何在 RightNow 框架中使用 SML2.0 实现单点登录?

如何在 RightNow 框架中使用 SML2.0 实现单点登录?

0 投票
1 回答
520 浏览

ssl - Issuer details are not valid. Issuer details should be registered in advance

I am trying to run a test of the SAML2 SSO using WSO2 Identity Server 4.0.0 M7 but am not successful.

I tried to use the 3.2.3 binary but ran into the bug about long hostnames and the identity.xml file (http://stackoverflow.com/questions/9600392/unable-to-configure-wso2-identity-server-for-openid).

These are the examples I'm using: http://sureshatt.blogspot.com/2012/08/saml20-sso-with-wso2-identity-server.html http://wso2.org/library/articles/2010/07/saml2-web-browser-based-sso-wso2-identity-server

I've stood up a new Tomcat7 server and configured it for HTTPS, which works cleanly in the browser. The certs are signed by our trusted enterprise CA and both the private key and chain certs are installed.

Same for the WSO2-IS host which has a new wso2carbon.jks with the private key signed by the same CA. I've exported the host cert from wso2carbon.jks and imported same into the client-truststore.jks. The trusted CA-signed certs are also in client-truststore.jks (at this point just to be sure). They are also in wso2carbon.jks (used to trust the CA reply).

I've changed the HostName and MgtHostName in carbon.xml to match the CN in the private key; the Carbon console comes up cleanly with no SSL issues and I can log in using the 'admin' user with no problem. From there I've updated the SSO configuration using the above example links as guides. That works with no errors.

When I go to each site (e.g., saml2.demo, avis.com, etc.) they redirect perfectly to IS to authenticate. However when I log in I get the error in the log "Issuer details are not valid. Issuer details should be registered in advance". And then I'm stuck.

What have I missed?

0 投票
2 回答
3229 浏览

public-key-encryption - ComponentSpace Saml 2.0 从哪里获取加密断言的密钥

当我运行以下代码(使用 ComponentSpace Saml 2.0 lib)时,Fiddler 向我显示 SAMLRequest 的值是这样加密的,<input type="hidden" name="SAMLRequest" value="PHNhbWxwOkF1dGhu....">这是非常预期的行为。该代码实现了SSO SAML 2.0 POST配置文件的第一步。请注意,代码中没有指定证书密钥来进行任何类型的加密,所以我想知道 ComponentSpace lib 如何决定选择哪一个?

维基百科所说的只是“ SAMLRequest 参数的值是 base64 编码”。没有关于密钥用于编码的信息。

0 投票
1 回答
1221 浏览

java - 在 SalesForce 上具有有效 SAML2.0 断言的 invalid_grant 错误

我尝试使用 OpenSAML 为 SalesForce 实施 SSO。我的代码生成有效的 SAML 断言,由 salesforce SAML 验证器验证。但是当我尝试向 salesforce 发送断言时,我总是遇到这个错误:

我使用以下代码向销售人员发送请求:

我的生成器生成了有效的 SAML(如果我可以信任 salesforce SAML 验证器的结果)。似乎 salesforce 无法解码断言,因为当我发送随机数据而不是 samlAssertion 时,我收到了相同的错误消息。

我还尝试使用 Base64.encodeBase64URLSafeString() 进行编码,但没有积极的结果。

谁能帮我解决这个问题?

0 投票
3 回答
10587 浏览

go - 有 Go 语言的 SAML 库吗?

我看到goauthgo-oauth OAuth 库是为Go Programming Language编写的,但是在网上搜索了几个小时后,SAML却一无所获。

我想使用 Go 来实现使用 SAML 的 Web 服务的 SSO 支持,但是如果没有 Go 的 SAML 库,看起来我将不得不将 SAML 逻辑“包装”在一个单独的服务中,用另一种语言实现。

有谁知道 Go 友好的 SAML 库,或者可能有一些从 Go 程序中使用 Java、C 或 PHP 库的技巧?