问题标签 [omniauth-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 投票
2 回答
768 浏览

ruby-on-rails - ADFS SAML 身份提供者重定向到状态为“响应者”的服务提供者

我正在使用omniauth-saml对 Ruby on Rails 应用程序上的用户进行身份验证。

身份验证一直运行良好,直到我们声明尝试与使用 ADFS(Windows Active Directory)的公司合作。

我们的应用程序能够路由到 ADFS 登录屏幕,进行登录操作,当 ADFS 重定向回我们的应用程序时,我们会看到错误消息:

调试,我们可以看到omniauth-saml 是生成此消息的原因。

通过挖掘发送到我们应用程序的有效负载,“SAMLResponse”属性包含一个带有以下部分的 xml 文档:

我们认为这与omniauth-saml 提供的错误消息有关。

ADFS 明显难以调试,但我们认为以下错误消息是造成这一考验的原因:

我对 ADFS 的理解是有限的,所以我不确定这些错误是由 ADFS 错误配置还是由我们需要添加到我们的应用程序以使其与 ADFS 一起使用的特定内容引起的......

您的帮助将不胜感激!

0 投票
0 回答
2366 浏览

single-sign-on - SP 元数据。WantAssertionsSigned 是假还是真?

我是SP。我正在尝试帮助 IdP 适当地向我发送(未经请求的 SSO)SAML 断言。但发生的情况是 SAML 没有签名。

在我的日志中,回调阶段启动后,它会引发一条错误消息:

ERROR -- omniauth: (saml_degreed) Authentication failure! invalid_ticket: OneLogin::RubySaml::ValidationError, Found an unexpected number of Signature Element. SAML Response rejected

当我从终端复制他的 SAML 消息并对其进行 64base 解码时,我看到的是从 element <saml:Issuer>到 element的跳转<saml:Subject>。没有<Signature>元素。

当我告诉他我收到的消息中没有<Signature>元素时,他(通过电子邮件)向我发送了他应该发送的消息,带有<Signature>元素。

我这边(SP)有什么事情要做吗?在我的元数据文件下方找到。我已经尝试将 WantAssertionsSigned 以及 AuthnRequestsSigned 更改为“true”,但仍然失败。

0 投票
0 回答
664 浏览

single-sign-on - 什么是 OpenSSL::X509::CertificateError(嵌套 asn1 错误):?

Idp 正在向我发送 SAML 消息(未经请求)。但是有些东西不起作用。我的日志是:

就在回调阶段启动后,它失败并引发:

致命 -- : [3b967525-74f6-49bc-a03a-86fb6f0059c5] OpenSSL::X509::CertificateError(嵌套 asn1 错误):

我试图理解错误但失败了。

0 投票
1 回答
254 浏览

ruby-on-rails - Omniauth-Saml with Devise - 映射和使用属性

我对 Rails 很陌生,但我们有一个使用 Devise 和 Omniauth 进行身份验证的应用程序,并且最近按照用于 Devise 集成的 Omniauth 文档集成了 Omniauth-Saml:https ://github.com/omniauth/omniauth-saml#devise-集成身份验证有效,我们可以毫无问题地创建用户和使用这些帐户。

在 SAML 响应属性中是一个 lacode(4 位字符串)。我们想根据参考 lacode 检查此用户属性。如果他们的cag 与参考cag 匹配,我们想在user.rb 模型中设置verified_at 属性。

我已经更新了用户模型并测试我是否将 oauth_lacode 设置为“9064”以匹配 oauth_lacode_ref 然后代码有效并且用户的验证时间和日期在帐户创建时设置。

应用程序/模型/user.rb

我没有正确映射和调用散列中的 lacode,因为我在日志中看到此错误“NoMethodError(#OneLogin::RubySaml::Attributes:0x00007f7a5040ad40 的未定义方法 `lacode'):”

这就是我在 config/initializers/devise.rb 中映射属性的方式

我已向 IDP 确认 'urn:oid:0.9.2342.19200300.100.1.17' 已映射到 SAML 响应中的 lacode。

与上面的 User 模型一样,这就是我尝试从 User 模型中访问 lacode 的方式。“saml_cag = auth.extra.raw_info.lacode”

这是来自 Omniauth Saml 的指导:

:attribute_statements - 用于将 SAMLResponse 中的属性名称映射到 OmniAuth 信息哈希中的条目。例如,如果您的 SAMLResponse 包含一个名为“EmailAddress”的属性,请指定 {:email => ['EmailAddress']} 以将该属性映射到信息哈希中的相应键。还支持以 URI 命名的属性,例如 {:email => ['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress']}。注意:所有属性也可以在 auth_hash[:extra][:raw_info] 下的数组中找到,因此此设置应仅用于映射属于 OmniAuth 信息哈希模式的属性。

最后这句话是否意味着我不需要/不能映射属性。任何人都可以帮助或指出我正确的方向吗?

0 投票
1 回答
133 浏览

ruby-on-rails - 使用 OmniAuth 2.0,我们如何在使用 Devise 的 Rails 身份验证失败时重定向到 IdP?

OmniAuth 2.0 要求对 IdP 身份验证服务器的请求是 POST 而不是 GET。

对于大多数用户来说,这意味着在他们的登录页面上,他们有指向 Facebook 和 Google 等 OmniAuth 提供商的链接,他们将这些链接或按钮上的方法更改为 POST。没问题。

但是对于我的一个应用程序,我们想要它,以便如果身份验证失败(例如进入应用程序并且您仍然需要登录),我们将自定义 Devise::Failure 应用程序重定向到 IdP 身份验证服务器。当然,这意味着您通过 GET 请求来到我们的应用程序,我们发现您未通过身份验证,因此我们将您重定向到 IdP。但我们不能再这样做了,因为它必须是一个 POST。我能看到的唯一方法是我必须删除我们的自定义失败应用程序,以便您被重定向到我们指向 IdP 的链接所在的正常登录页面。

关于如何保持当前重定向直接到 IdP 逻辑的任何想法?

0 投票
0 回答
29 浏览

devise - 通过 ruby​​-saml gem 的 omniauth:request.env['omniauth.auth'] 总是 nil

对于我的应用程序,我想拥有“omniauth-google-oauth2”、“omniauth-ruby”和正常的设计身份验证,而对于前两个,我有以下路线

看法

saml_controller

结尾

request.env['omniauth.auth']在回调中得到 nil 而响应对 saml 有效,对于 google-oauth2 获取正常数据

User 和 ServiceUser 模型没有omniauthable。

Omniauth 初始化:

我不能在omniauth初始化程序中使用saml设置,因为我想拥有动态idp_sso_target_urlidp_cert以后。

我应该怎么做才能在 request.env['omniauth.params'] 中获取有效数据

0 投票
1 回答
64 浏览

ruby-on-rails - 使用 omniauth-saml 发送动态参数

我需要一种使用从 SP 到 IDP 的omniauth-saml 发送动态参数的方法。要求是有 2 个网站网站 1 和网站 2。网站 1 由另一个已经实施 saml 的团队控制。在我的网站上,我添加了一个按钮,单击它,我将向网站 1 发送请求。除了请求,我还需要发送用户参数,例如名字、姓氏、电子邮件和一些自定义属性。在我之前的stackoverflow帖子中,我能够理解我需要使用omniauth-saml 和一些基本细节。但是我仍然无法发送动态属性的问题。

当我浏览文档时,我相信我需要使用

但我不确定如何通过它传递动态参数。在我之前的帖子中,有人推荐我做一个猴子补丁,但它对我不起作用。任何人都可以有任何建议

0 投票
1 回答
59 浏览

kubernetes - 如何将 SSO 集成添加到我的自我管理的 gitlab 实例中?

我已经使用安装成功将 gitlab 实例部署到我的 GCP 集群中helm,如下所示。

我想使用 keycloak 向这个实例添加单点登录,有没有办法在这个安装中添加 keycloak 身份验证。我也在尝试像这样添加omniauth,--set global.omniauth.enabled= true但不确定它是否会起作用。

使用 helm 实现这一目标的最佳方法是什么。