【发布时间】:2012-06-28 22:05:31
【问题描述】:
是否有任何适用于 NodeJS 的 SAML 库?似乎有大量可用于节点的代码,但没有 SAML 库。如果没有,有什么理由不这样做吗?
【问题讨论】:
是否有任何适用于 NodeJS 的 SAML 库?似乎有大量可用于节点的代码,但没有 SAML 库。如果没有,有什么理由不这样做吗?
【问题讨论】:
Node.js 仍然是一项新技术,主要用于实时创新的初创公司或企业。因此 SAML 在其中并不流行,您会在该领域发现更多的 OAuth。 SAML 不是一个简单的实现规范(与 SWT 或 JWT 之类的东西相反)。最难的部分是数字签名,它需要 XML 规范化等。
几个月前,我写了一篇关于在 node.js 中使用 Windows Azure ACS(使用 WS-Federation 协议和 SimpleWebTokens)的文章
http://nodeblog.cloudapp.net/using-windows-azure-access-control-service-acs-from-a-node-app
如果您有兴趣为 node.js 编写 SAML 库,请告诉我。我对此很感兴趣。
马蒂亚斯
【讨论】:
还有这个npm包,我还没有使用或实现过,但是看起来很有希望……
【讨论】:
我还没有真正尝试过,但它似乎是您正在寻找的: https://npmjs.org/package/passport-saml
这也是一种新的(它是在发布最后一个答案之后出现的)。
【讨论】:
passport-saml 自 2015 年 12 月起不再维护,并且存在已知的安全漏洞以及许多无法解决的突出问题。我不知道有什么好的选择——在寻找一个时发现了这个。但解决方案肯定不再是护照-saml
给你一个http://github.com/leandrob/saml20
var saml = require('saml20');
var options = {
publicKey: 'MIICDzCCAXygAwIBAgIQVWXAvbbQyI5Bc...',
audince: 'http://myservice.com/'
}
saml.validate(rawAssertion, options, function(err, profile) {
// err
var claims = profile.claims; // Array of user attributes;
var issuer = profile.issuer: // String Issuer name.
});
【讨论】:
rawAssertion 参数来自哪里?它是http请求的一部分吗?