我正在使用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配置。