问题标签 [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.
node.js - Passport-saml samlstrategy 函数永远不会被调用
我有一个完全可用的基于 Saml 的登录。该策略如下所示:
问题是该函数从未被调用。它不记录配置文件。
我的身份验证路线如下所示:
同样,从不调用 passport.authenticate 之后的函数。我的登录回调路由如下所示:
一个有趣的事实是,护照从不调用我的序列化和反序列化函数,如下所示:
注意:我已经初始化了护照和护照会话。身份验证有效,只有回调无效。
我花了很多时间调试这个,但没有结果。我已经在这里和其他网站上尝试了大多数解决方案。非常感谢任何帮助。
express - 如何使用在第一次注销时有效但在后续注销时无效的护照 saml 修复 SLO
我必须将应用程序连接到我公司的 ADFS 服务器。我正在为 SSO 和 SLO 使用 passport-saml。SSO 有效,而 SLO 仅在第一次注销时有效。每次用户注销时,我都试图让 SLO 工作。
我一直在寻找解决这个问题的方法,但它避开了我。这是详细信息:
- 我清除浏览器中的 cookie 以从头开始。
- 我登录到我的应用程序,该应用程序重定向到 ADFS 的登录页面
- 输入用户凭据,然后 ADFS 重定向回我的应用主页
- 我注销了我的应用程序,并向 ADFS 服务器发送了一个请求,在本地和 ADFS 上终止了我的会话,然后我被重定向回我的应用程序主页
- 我再次登录,这按预期工作
- 我注销,但这次我被发送到我的 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 注销:
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,但我不明白如何生成它。
谢谢
javascript - 使用 passport-saml 注销 Idp 会话
尝试从 idp 会话中注销用户时收到 400 错误请求。用户从应用程序/护照会话中注销,但不是从 idp 会话中注销。
注销和回调端点的设置如下所示。注销端点附加所需的属性以注销用户并创建 SAMLRequest。
配置是这样设置的:
非常感谢任何对解决问题的帮助。
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.
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 身份提供程序服务器,并引发以下错误 -
请帮助我该怎么做,上面代码中的问题可能出在哪里。
先感谢您。
node.js - node.js 中的 SAML 身份提供程序实现?
在 node.js 中是否有任何用于制作 saml 身份提供者的库。
我正在检查 node.js 中的 saml 实现,他们都说服务提供者代码和身份提供者作为 oauth 或 openlogin url。
我为服务提供商找到的一些库是passport-saml、saml2-js。
你能告诉我 node.js 中是否有 saml 身份提供者的实现?
node.js - 使用 Node.js 处理 SAML 的身份提供者端
我需要实现一个应该能够的身份提供程序服务(使用 node.js)。
- 获取、验证和解析(使用私钥和证书)来自 SP示例的身份验证请求
如果一切都有效,则使用签名的 XML 响应示例进行响应
node.js 中是否有可以处理 SAML 协议的 IdP 端的工具。我熟悉samlify、saml2、passport-saml,它们似乎都处理协议的服务提供者端。
如果这里提到的软件包可以满足我的需求,您能否具体说明它们如何处理这个问题。任何其他方向和/或提示可能会有所帮助。
谢谢
saml - 尝试使用开放/免费 SAML IDP 测试 SAML 身份验证
我正在尝试使用我的应用程序测试和调试 SAML 身份验证。我目前没有自己的 SAML IDP,因此我正在尝试使用免费/开放的 SAML IDP 提供商进行测试。
目前我正在使用 SSOCircle 进行测试:https ://www.ssocircle.com/
在我与该提供商登录后进行测试时,我得到:
发生了错误
原因:无法进行单点登录或联合。
请在“我的调试”中启用附加调试选项。详细的跟踪信息仅适用于付费帐户。检查我们的计划。
任何人都可以使用 SSOCircle 在其应用程序中成功设置 SAML 身份验证。如果是这样,您能否深入了解可能存在的问题。我注册了一个帐户并在他们的网站上注册了我的服务提供商。
我还四处寻找简单的免费 SAML 测试 IDP,但运气不佳。如果有人有一个他们正在使用的工作,那也会很有帮助。