My Node.js(MeteorJS)网站将使用SAML 2.0(他们的要求)通过SSO与第三方平台进行交互。基本上,当登录用户(在我的网站上)点击我们网站上的特定链接时,我们应该创建一个SAML令牌(除了必需的SAML 2.0之外,还有一些与用户相关的特定属性)然后将其发布到第三方平台的URL。他们将处理令牌,然后向用户的浏览器发送重定向,该用户将用户登录到第三方平台的用户帐户,将用户重定向到第三方平台的网站没有用户必须登录该系统,具体而言。 (很抱歉重新说明了SSO的基础知识,但我只是想彻底解释一下我们手头的情况。)
第三方平台充当服务提供商(SP),他们向我提供了我需要添加到SAML断言中的有效负载属性(未加密即可)以正确地将用户登录到他们的系统中。
我已经向第三方平台的支持团队询问了一些关于我在设置SAML引擎方面需要做些什么的问题。我之前从未使用或实施过SAML,所以我即时学习并研究我能找到的所有内容。无论如何,支持成员说如下:
您的SAML引擎(充当IDP)会创建您的SAML令牌 令牌刚刚发布到[第三方平台的]端点。从 这一点你已经给予[第三方平台]所有控制权,我们处理令牌的目的是将重定向返回到你的浏览器窗口。
由于我们充当了我们自己的IDP(我们知道登录用户是谁,我们知道我们需要根据用户帐户在SAML令牌中发送的信息),看来我需要做的就是创建一个具有适当属性的SAML令牌,只需HTTP以编程方式发布它。我错过了什么吗?
SAML是一个老年人"技术和节点是一个更新的"一,关于在Node中实现SAML引擎的文档非常稀少。我看到的关于SAML和Node的大多数内容(此处在S / O和其他地方)通常都指向passport-saml等,其中包含一些与令牌认证和IDP端点相关的模糊示例。从我收集的内容来看,似乎大部分内容对于我需要做的事情来说都是过度的,但作为一个完整的SAML新手,我并不完全确定,我期待着你们所有人为了你的指导。
我的问题的删节版本是: 如果我只需要在Node环境中POST一个SAML令牌,就像创建带有payload属性的令牌一样简单,并在FORM中以编程方式设置该令牌,其中action是第三方SP提供的URL,响应是SAML断言令牌?另外,对于为我创建该令牌的Node库(或至少具有详细信息的示例),您有什么建议?我看到的大多数示例和库对于我实际需要提供的内容似乎都有些过分,但没有参考比较,我不确定。
很多,非常感谢能帮助我解决这个问题的人!