代码之家  ›  专栏  ›  技术社区  ›  user3690467

key斗篷和passportjs saml-无法完成saml流

  •  1
  • user3690467  · 技术社区  · 6 年前

    我正在使用passport saml连接到一个keydeap实例。我试过其他的lib,它们和keydeap配合得很好。使用passport saml,我可以在keydove上获得登录UI,但输入正确的用户/密码后,我得到:

    Unexpected error when handling authentication request to identity provider.
    

    key斗篷的相应日志:

    04:28:12,309 WARN  [org.keycloak.events] (default task-121) type=LOGIN_ERROR, realmId=test, clientId=passport-saml, userId=61ce9e95-b9cb-4555-8d16-a1b31bab643b, ipAddress=127.0.0.1, error=invalid_user_credentials, auth_method=saml, redirect_uri=http://localhost:4000/assert, consent=no_consent_required, code_id=dbba7144-2a23-408c-b84b-dd46c2994d66, username=testuser
    

    代码:

    const s = (new SamlStrategy(
      {
        path: '/assert',
        host: 'localhost:4000',
        entryPoint: 'http://localhost:8080/auth/realms/test/protocol/saml',
        issuer: 'passport-saml',
        cert: fs.readFileSync('./config/no-header-keycloak.crt', 'utf-8')
      },
      function(profile, done) {
        done(null, { username: 'test' });
      })
    );
    

    生成的SP元数据

    <?xml version="1.0"?>
    <EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="passport-saml" ID="passport_saml">
      <SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
        <NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
        <AssertionConsumerService index="1" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://localhost:4000/assert"/>
      </SPSSODescriptor>
    </EntityDescriptor>
    

    我不知道keydeap的错误是什么,所以我甚至不知道该怎么解决。如果有人能给我指出正确的方向那会很有帮助的。如果需要,也可以共享keydepot配置。

    0 回复  |  直到 6 年前