在Node.js中创建SAML 2.0令牌

在Node.js中创建SAML 2.0令牌,node.js,meteor,saml-2.0,Node.js,Meteor,Saml 2.0,My Node.js MeteorJS站点将按照要求使用SAML 2.0通过SSO与第三方平台进行交互。本质上,当我的站点上的登录用户单击我们站点上的特定链接时,我们应该创建一个SAML令牌,除了必需的SAML 2.0属性外,还包含一些与用户相关的特定属性,然后将其发布到第三方平台的URL。他们将处理令牌,然后向用户的浏览器发送重定向,该重定向将用户重定向到第三方平台的站点,用户将登录到第三方平台的用户帐户,而无需用户登录该系统。很抱歉重新说明SSO基础知识,但我只想彻底解释一下我们目前的情况

My Node.js MeteorJS站点将按照要求使用SAML 2.0通过SSO与第三方平台进行交互。本质上,当我的站点上的登录用户单击我们站点上的特定链接时,我们应该创建一个SAML令牌,除了必需的SAML 2.0属性外,还包含一些与用户相关的特定属性,然后将其发布到第三方平台的URL。他们将处理令牌,然后向用户的浏览器发送重定向,该重定向将用户重定向到第三方平台的站点,用户将登录到第三方平台的用户帐户,而无需用户登录该系统。很抱歉重新说明SSO基础知识,但我只想彻底解释一下我们目前的情况

第三方平台充当服务提供商SP,他们向我提供了我需要添加到SAML断言中的有效负载属性,未加密可以正确地将用户登录到他们的系统中

我已经向第三方平台的支持团队询问了一些关于我需要做什么来设置SAML引擎的问题。我以前从未使用过或实现过SAML,所以我在不断地学习和研究我能找到的一切。无论如何,支持成员说了以下几点:

充当IDP的SAML引擎创建SAML令牌,并且 令牌刚刚发布到[第三方平台的]端点。从…起 此时,您已将所有控制权交给[第三方平台],我们处理令牌的目的是将重定向返回到您的浏览器窗口中

由于我们充当自己的IDP,我们知道登录用户是谁,并且我们知道需要根据SAML令牌的用户帐户在SAML令牌中发送的信息,因此我所需要做的似乎就是创建一个具有适当属性的SAML令牌,并以编程方式进行HTTP post。我遗漏了什么吗

由于SAML是一种较旧的技术,而Node是一种较新的技术,因此关于在Node中实现SAML引擎的文档非常稀少。我在S/O和其他地方看到的关于SAML和Node的大部分内容通常都指向passport SAML等,还有一些与令牌身份验证和IDP端点相关的模糊示例。从我收集的信息来看,似乎所有这些对于我需要做的事情来说都是多余的,但是作为一个完全的SAML新手,我不完全确定,我期待着你们的指导

我的问题节选如下: 如果我只需要在节点环境中发布一个SAML令牌,那么它是否像创建一个具有有效负载属性的令牌一样简单,并以编程方式将该令牌设置为一种形式,其中操作是第三方SP提供的URL,响应是SAML断言令牌?另外,您对节点库有什么建议,或者至少有详细的示例可以为我创建该令牌?对于我实际需要提供的内容,我看到的大多数示例和库似乎都有些过头了,但我不确定是否有可供比较的参考


非常非常感谢任何能帮我解决这个问题的人

我使用as包来创建SAML令牌。我获取它提供的SAML令牌,对其进行base-64编码,然后将该令牌发布到URL端点。一切似乎都正常。嘿,马修,我和你的处境一样。我查看了npmjs.com/package/saml,它说它支持saml1.1。。。你是如何让它与SAML2.0一起工作的?嘿@Josh,关于它支持SAML1.1的说明在我看来有点误导。我第一次读到它时认为它只支持1.1而不支持2.0。然而,在查看了一些文件之后,我注意到要使用saml2.0,必须执行以下操作:var saml2=Meteor.npmRequire'SAML'.Saml20;成功了!谢谢Matthew,这很有帮助!