问题标签 [passport-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 投票
0 回答
607 浏览

node.js - Passport-saml samlstrategy 函数永远不会被调用

我有一个完全可用的基于 Saml 的登录。该策略如下所示:

问题是该函数从未被调用。它不记录配置文件。

我的身份验证路线如下所示:

同样,从不调用 passport.authenticate 之后的函数。我的登录回调路由如下所示:

一个有趣的事实是,护照从不调用我的序列化和反序列化函数,如下所示:

注意:我已经初始化了护照和护照会话。身份验证有效,只有回调无效。

我花了很多时间调试这个,但没有结果。我已经在这里和其他网站上尝试了大多数解决方案。非常感谢任何帮助。

0 投票
1 回答
940 浏览

express - 如何使用在第一次注销时有效但在后续注销时无效的护照 saml 修复 SLO

我必须将应用程序连接到我公司的 ADFS 服务器。我正在为 SSO 和 SLO 使用 passport-saml。SSO 有效,而 SLO 仅在第一次注销时有效。每次用户注销时,我都试图让 SLO 工作。

我一直在寻找解决这个问题的方法,但它避开了我。这是详细信息:

  1. 我清除浏览器中的 cookie 以从头开始。
  2. 我登录到我的应用程序,该应用程序重定向到 ADFS 的登录页面
  3. 输入用户凭据,然后 ADFS 重定向回我的应用主页
  4. 我注销了我的应用程序,并向 ADFS 服务器发送了一个请求,在本地和 ADFS 上终止了我的会话,然后我被重定向回我的应用程序主页
  5. 我再次登录,这按预期工作
  6. 我注销,但这次我被发送到我的 ADFS 服务器的注销页面。

进一步检查表明 ADFS 没有清除其 cookie,因此 ADFS 会话保持活动状态。

我使用了 Firefox 的 SAML 查看器插件来观察正在发生的事情,这是我的发现:

成功注销时:

HTTP:

GET https://myadfs.org/adfs/ls/?wa=wsignout1.0 HTTP/1.1 主机:myadfs.org 用户代理:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br参考:https ://example.com/dashboard/data DiQx5si4M16zYIMmxa4nq6XVcr2hFlqbsLQjhIqkiFOCkt9LNRdKNZlghQkspUH44qLBq4sTHK0iD13FFmBs5rEE1CWa89oCELhea/Z9hPEtjPpC3Q52cAXBgbOJCTr6OYFYfQKbATqHdTU09/nJOafMK5ID1pf7pmBL+ZTH7Kl64lxhyO/9F84t47TctQhhFqxgsIxmv+ZVHajanNl4E0gXqJ0ULsY2h; SamlSession=aHR0cHMlM2ElMmYlMmZmcGNkcmRldi5tb2ZmaXR0Lm9yZyZGYWxzZSZDdWtyYXNTRCYmJiYmXzFkZjY4M2RhLTM4NTktNDVjNS04ODNkLTA3NmRiYTdiMjk3Yg==;MSISAuthenticated=NC8xNi8yMDE5IDExOjI2OjI4IEFN; MSISLoopDetectionCookie=MjAxOS0wNC0xNjoxMToyNjoyOFpcMQ== 升级不安全请求:1 SamlSession=aHR0cHMlM2ElMmYlMmZmcGNkcmRldi5tb2ZmaXR0Lm9yZyZGYWxzZSZDdWtyYXNTRCYmJiYmXzFkZjY4M2RhLTM4NTktNDVjNS04ODNkLTA3NmRiYTdiMjk3Yg==;MSISAuthenticated=NC8xNi8yMDE5IDExOjI2OjI4IEFN; MSISLoopDetectionCookie=MjAxOS0wNC0xNjoxMToyNjoyOFpcMQ== 升级不安全请求:1 SamlSession=aHR0cHMlM2ElMmYlMmZmcGNkcmRldi5tb2ZmaXR0Lm9yZyZGYWxzZSZDdWtyYXNTRCYmJiYmXzFkZjY4M2RhLTM4NTktNDVjNS04ODNkLTA3NmRiYTdiMjk3Yg==;MSISAuthenticated=NC8xNi8yMDE5IDExOjI2OjI4IEFN; MSISLoopDetectionCookie=MjAxOS0wNC0xNjoxMToyNjoyOFpcMQ== 升级不安全请求:1

HTTP/1.1 302 找到 Content-Length: 0 Content-Type: text/html; charset=utf-8 位置:https://example.com:443/login?SAMLRequest=lZLfa4MwEMf%2fFcl71KjxR7BCqS9C18I69rCXEjXpZJq4XCz982crY6yMwh7vuO9973N3OfChH9lWn%2fRkn8XnJMA6VblCR%2bpzQqWUOKWE4igMUlz7nGKexHUYJdSnKUXOqzDQabVCgesjpwKYRKXAcmXnlE8y7EeYxC%2bEsCBmYeamCX1DTjm7dIrbm%2fLd2hGY58mxaU0rzu6gpeysdbU5eb0%2bdQo5G61AXHtORjHNoQOm%2bCCA2YYd1k9bNtuzZilik4JRNJ3sRIucnbZ7tTdraYW5HykkPyNdhl4Bu23jsctotNWN7lGR33DNIn0s4gDCXHFRccWdac04Auh7XN5K8ObSc9cI8KyZwObeYlPku7ltVf7TbjN9GA6HMvcWeZEvFz8IuB6uUq24FEfSyjgNW47DlGY4og3F6RxjP4nbmid1kCV17v2h%2fE7%2beqDiCw%3d%3d&Signature=pT%2fSUpslARJlvOCah5VzZk4stZLIREyHmUFOO4siHUbkL5eJG4QsfYj9Pq%2bwxnOaPaevYkmiXq0rft3drTzJHspns9UbucyYQvEaSAZVmRTTyfPC3Z0EgVGSvtr0JL3nuDPsq2IfbToseuQQtJFsA%2b94D8KtaLjtUJxiMcQMHyg2yR00Ac3NGt9AsRg1X73X%2frt0XZDN9bSt4R8t%2bt2Yl2UsZsL4GHTGk7RbN3AUrYHsLtKeuN07umXqX3otVtHo%2f9tx2w2h1glYycYbFCk%2bWjox8Mej%2fiLLkpAhw9EXlhiTGrEJ2%2bcYvnQxGokOsz2vXEOoc3%2fhle27LuTPFMN9yw%3d%3d&SigAlg=http%3a%2f%2fwww.w3.org%2f2001%2f04%2fxmldsig-more%23rsa- sha256 服务器:Microsoft-HTTPAPI/2.0 P3P:ADFS 没有 P3P 策略,请联系您的站点管理员了解更多详细信息 Set-Cookie: SamlSession=; 过期=格林威治标准时间 2019 年 4 月 15 日星期一 11:26:39;path=/adfs SamlLogout=aHR0cCUzYSUyZiUyZnJwcHNzb2Rldi5tb2ZmaXR0Lm9yZyUyZmFkZnMlMmZzZXJ2aWNlcyUyZnRydXN0Pz8/aHR0cHMlM2ElMmYlMmZmcGNkcmRldi5tb2ZmaXR0Lm9yZyZGYWxzZSZDdWtyYXNTRCYmJiYmXzFkZjY4M2RhLTM4NTktNDVjNS04ODNkLTA3NmRiYTdiMjk3Yj9fNTBhMTVmZmYtODUxNS00MzI4LWIwYTUtYTc2YjM0NzUwNTg1P3VybiUzYW9hc2lzJTNhbmFtZXMlM2F0YyUzYVNBTUwlM2EyLjAlM2FzdGF0dXMlM2FTdWNjZXNz; 路径=/adfs; 仅http;安全 MSISAuthenticated=; 过期=格林威治标准时间 2019 年 4 月 15 日星期一 11:26:39;路径=/adfs MSISAuth=; 过期=格林威治标准时间 2019 年 4 月 15 日星期一 11:26:39;路径=/adfs ReturnUrl=aHR0cHM6Ly9ycHBzc29kZXYubW9mZml0dC5vcmc6NDQzL2FkZnMvbHMvP3dhPXdzaWdub3V0MS4w; 路径=/adfs; 仅http;安全 MSISSignoutProtocol=U2FtbA==; 到期=格林威治标准时间 2019 年 4 月 16 日星期二 11:36:39;路径=/adfs; 仅http;安全日期:2019 年 4 月 16 日星期二 11:26:39 GMT

萨姆勒:

在随后的不成功注销中:

HTTP:

GET https://myadfs.org/adfs/ls/?wa=wsignout1.0 HTTP/1.1 主机:myadfs.org 用户代理:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br参考:https ://example.com/dashboard/data 连接:保持活动 Cookie:MSISLoopDetectionCookie=MjAxOS0wNC0xNjoxMToyODoyNlpcMQ==; SamlLogout=aHR0cCUzYSUyZiUyZnJwcHNzb2Rldi5tb2ZmaXR0Lm9yZyUyZmFkZnMlMmZzZXJ2aWNlcyUyZnRydXN0Pz8/aHR0cHMlM2ElMmYlMmZmcGNkcmRldi5tb2ZmaXR0Lm9yZyZGYWxzZSZDdWtyYXNTRCYmJiYmXzFkZjY4M2RhLTM4NTktNDVjNS04ODNkLTA3NmRiYTdiMjk3Yj9fNTBhMTVmZmYtODUxNS00MzI4LWIwYTUtYTc2YjM0NzUwNTg1P3VybiUzYW9hc2lzJTNhbmFtZXMlM2F0YyUzYVNBTUwlM2EyLjAlM2FzdGF0dXMlM2FTdWNjZXNz; ReturnUrl=aHR0cHM6Ly9ycHBzc29kZXYubW9mZml0dC5vcmc6NDQzL2FkZnMvbHMvP3dhPXdzaWdub3V0MS4w; MSISSignoutProtocol=U2FtbA==; oA4K2o87swOYB81FTkQNBnNZG171szH89jijOuEAI7hAWdAnM2LjagGZwWpuF2yHbJqQqsGzjvnqbQ6yMTvaEbkooSelFEBeRW2Gg5rGAjj5Pvs+T0ljhVlby6FfFKJ71NDBvn/7PGIglARSZqUZcAuthlhr8pta11WnhsfnyumvLfWvOZHZZjWslKMLBpGEBe1WgcYBUBYUrUeHmCqDRy5Zc4KJXwGrY; SamlSession=aHR0cHMlM2ElMmYlMmZmcGNkcmRldi5tb2ZmaXR0Lm9yZyZGYWxzZSZDdWtyYXNTRCYmJiYmX2NlNDAwODQxLTA2ZDItNDI3Ni05MTRlLWU5N2ExYWRlZmQzZQ==;MSISAuthenticated=NC8xNi8yMDE5IDExOjI4OjI2IEFN 升级-不安全-请求:1

HTTP/1.1 200 OK Cache-Control: no-cache,no-store Pragma: no-cache Content-Length: 8957 Content-Type: text/html; charset=utf-8 过期:-1 服务器:Microsoft-HTTPAPI/2.0 日期:2019 年 4 月 16 日星期二 11:28:45 GMT

萨姆勒:

未发送 SAML

您将看到,在成功注销时,ADFS 会设置 cookie 以清除它们,而不成功的注销则不会。此外,不成功的注销不会发送 SAML 注销请求。

最后,当我清除浏览器中的 cookie 时,第一次登录/注销会话将再次按预期工作,而所有后续注销都不会。我可以看到 cookie 在后续注销时保留,因为 ADFS 没有收到 SAML 注销请求。我只是不明白这在第一次注销时是如何工作的,但在接下来的注销中却不是。我查看了护照-saml 的代码,但似乎找不到问题所在。

任何帮助都会很棒。

这是我的 passport.js 设置:

护照回调网址:

adfs 注销:

0 投票
1 回答
1794 浏览

node.js - 为 Gsuite SSO 生成带有 express 和 passport-saml 的 ACS url

我正在使用 GSuite 的 express 和 passport-saml 使用 nodejs 实现基于 SAML 的 SSO。我可以配置第一部分并让 passport-saml 将我重定向到谷歌登录页面。但是我对 gsuite 要求我完成配置的 ACS url 和身份 ID 感到困惑。因此,当我在谷歌登录页面上登录时,我最终得到了来自谷歌的 503。我想我有点理解 SAML 的工作原理,但我是第一次使用它,所以我可能完全错了。

经过大量研究,我遇到了这个答案,但我不确定我是否理解得很好。它说我可以使用为护照path和参数设置的相同网址callback

这是我的护照配置的样子:

在这里我的护照相关路线是如何配置的:

/login/saml是我用来调度我想与护照一起使用的配置的路线,因为我正在使用MultiSamlStrategy,我没有故意把它放在护照中。

有人可以解释一下我需要为 Gsuite 中的 ACS url 和 Entity ID 设置什么吗?我认为了解 ACS url 必须返回带有我的服务信息的 XML,但我不明白如何生成它。

谢谢

0 投票
1 回答
895 浏览

javascript - 使用 passport-saml 注销 Idp 会话

尝试从 idp 会话中注销用户时收到 400 错误请求。用户从应用程序/护照会话中注销,但不是从 idp 会话中注销。

注销和回调端点的设置如下所示。注销端点附加所需的属性以注销用户并创建 SAMLRequest。

配置是这样设置的:

非常感谢任何对解决问题的帮助。

0 投票
1 回答
2368 浏览

node.js - Passport + SAML with metadata.xml file

I'm setting up a web application with express and ejs and need to integrate SAML authentication. I've got a metadata.xml, a public cert and a private key. Now I want to set up this strategy and use it for authentication. I tried to use a module called passport-saml-metadata, but whenever I try to authenticate it says: Error: Unknown authentication strategy "saml" although it is defined and exported within the same file as other strategies which work.

First I tried to manually configure SAML with the passport-saml module, but then I noticed that their is a passport-saml-metadata which can process my metadata file and build up the strategy, so I decided to use this one. I now have a 'valid' (it does not complain at any time in execution), but the stragety is not found when I call the route. Other strategys in the same file, are recognized and working without hassle.

passport config:

call in app.js

I expect that the strategy is recognized by passport like oauth2 which is defined in the same file as saml. Because both files are exported and no error is shown during execution (besided that the strategy cannot be found), I expect that at least it would call the auth and that I can spot any error.

0 投票
0 回答
257 浏览

node.js - Sailsjs MVC 上的 SAML/ADFS SSO 使用 nodejs 抛出错误:TypeError [ERR_INVALID_CHAR]:标头内容中的无效字符 ["Location"]

我正在使用 ADFS 和 passport-saml 在我的sailsjs 应用程序上设置 SSO,当我尝试登录它时抛出:TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Location"]代替重定向到我们的 adfs(IDp)

我尝试了两个过程,一个是passport-saml(参考 - http://www.passportjs.org/packages/passport-saml/),另一个是passport-wsdef-saml2(参考 - https://github.com/auth0/passport-wsfed-saml2)但是两种实现都出现相同的错误。我已经通过这个 url - SAML/ADFS node.js 实施指南?但在代码中没有发现任何遗漏。我将我的护照-saml 实施代码放在这里。

请帮帮我,我什至无法找到问题所在。根据教程和发现,似乎没有什么不正确的,但它仍然没有重定向到 ADFS 身份提供程序服务器,并引发以下错误 -

请帮助我该怎么做,上面代码中的问题可能出在哪里。

先感谢您。

0 投票
0 回答
2208 浏览

node.js - node.js 中的 SAML 身份提供程序实现?

在 node.js 中是否有任何用于制作 saml 身份提供者的库。

我正在检查 node.js 中的 saml 实现,他们都说服务提供者代码和身份提供者作为 oauth 或 openlogin url。

我为服务提供商找到的一些库是passport-samlsaml2-js

你能告诉我 node.js 中是否有 saml 身份提供者的实现?

0 投票
2 回答
3151 浏览

node.js - 使用 Node.js 处理 SAML 的身份提供者端

我需要实现一个应该能够的身份提供程序服务(使用 node.js)。


如果这里提到的软件包可以满足我的需求,您能否具体说明它们如何处理这个问题。任何其他方向和/或提示可能会有所帮助。

谢谢

0 投票
1 回答
261 浏览

saml - 尝试使用开放/免费 SAML IDP 测试 SAML 身份验证

我正在尝试使用我的应用程序测试和调试 SAML 身份验证。我目前没有自己的 SAML IDP,因此我正在尝试使用免费/开放的 SAML IDP 提供商进行测试。

目前我正在使用 SSOCircle 进行测试:https ://www.ssocircle.com/

在我与该提供商登录后进行测试时,我得到:

发生了错误

原因:无法进行单点登录或联合。

请在“我的调试”中启用附加调试选项。详细的跟踪信息仅适用于付费帐户。检查我们的计划。

任何人都可以使用 SSOCircle 在其应用程序中成功设置 SAML 身份验证。如果是这样,您能否深入了解可能存在的问题。我注册了一个帐户并在他们的网站上注册了我的服务提供商。

我还四处寻找简单的免费 SAML 测试 IDP,但运气不佳。如果有人有一个他们正在使用的工作,那也会很有帮助。

0 投票
2 回答
1913 浏览

passport.js - passport-saml - express - 重定向的 url 未提交表单导致 SAML 断言尚未生效

下面是我今天在控制台上遇到的错误,而不是昨天相同代码运行良好的错误。

我已经验证我从IDP收到了成功,因此应用程序被重定向到配置文件中提到的 URL 中的“/home”端点。

此外,当我提交表单时,在自动重定向后 [显示内部服务器错误]

在此处输入图像描述

我按下浏览器的刷新按钮并提交表单并达到预期的结果。

在此处输入图像描述

我的问题是,为什么这不会自动发生,或者我可以如何以及在哪里以编程方式进行此提交。

护照.js

配置.js

应用程序.js

routeConfig.js