Node JS和SAML示例

时间:2017-08-18 14:11:03

标签: node.js passport-saml

我想构建将使用SAML保护的示例应用,我尝试使用passport-saml

我在网上发现了很多示例程序。但无法完成我的示例程序。

是否有可以逐步解释的样本,我可以直接跟进。

我使用SSOCircle作为IDP,将我重定向到SSOCircle的SSO登录页面但登录后显示错误消息

  

发生错误原因:无法执行单点登录或联盟。

以下是我在节点中的代码。

passport.use(new SamlStrategy(
{
  path: '/login/callback',
  entryPoint: 'https://idp.ssocircle.com:443/sso/SSORedirect/metaAlias/publicidp',
  issuer: 'comuteAWS',
  cert: ''
},
function (profile, done) {
  return done(null,
    {
      id: profile.uid,
      email: profile.email,
      displayName: profile.cn,
      firstName: profile.givenName,
      lastName: profile.sn
    });
})

);

我的SP元数据正在关注

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><EntityDescriptor entityID="comuteAWS" xmlns="urn:oasis:names:tc:SAML:2.0:metadata"><SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</NameIDFormat><AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://192.168.254.38:3000/vehicles"/></SPSSODescriptor></EntityDescriptor>

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,然后意识到SSOCircle的entryPoint网址是错误的。

对于SSOCircle,您应该使用此网址

entryPoint: 'https://idp.ssocircle.com/sso/idpssoinit?metaAlias=%2Fpublicidp&spEntityID=Your-Entity-ID'

Your-Entity-ID替换为您的实体ID。

答案 1 :(得分:0)

您需要将SP的SAML元数据导入信任的SSOCircle。这是在“管理元数据”下的SSOCircle Admin UI中完成的。

答案 2 :(得分:0)

我已经这样做但仍然无法正常工作。最后,我使用了wso2身份提供程序,并使用了相同的代码。