使用 LDAP 服务器配置的 Hyperledger Composer 身份验证失败并出现错误 "email is missing from the user profile"

Hyperledger Composer configured with LDAP server fails authentication with error "email is missing from the user profile"

我已经配置了一个开放的 LDAP 并在其中添加了一些用户,我能够成功登录这些用户,现在我已经启动了 Hyperledger Composer Rest 服务器并且 LDAP 使用 composer providers 环境配置为通行证策略变量。我没有将电子邮件 ID 配置为必填字段,但我只能对在其 LDAP 配置文件中提供电子邮件 ID 的用户进行身份验证。对于用户的其余部分,我收到错误 500。

{
    "error": {
        "statusCode": 500,
        "message": "email is missing from the user profile"
    }
}

如果我在此用户帐户中添加电子邮件 ID 字段,我将能够成功登录。

我附上了 LDAP 中使用的用户配置文件配置。

我正在使用 postman 向我的休息服务器发送 post 请求,该请求将我重定向到 auth/ldap。 提供的 Composer Provider:

COMPOSER_PROVIDERS='{
    "ldap": {
   "provider": "ldap",
   "authScheme": "ldap",
   "module": "passport-ldapauth",
   "authPath": "/auth/ldap",
   "successRedirect": "http://192.168.255.104:8080/auth/account",
   "failureRedirect": "/ldap",
   "session": true,
"json": true,
   "LdapAttributeForLogin": "cn",
   "LdapAttributeForUsername": "cn",
    "server": {
    "url": "ldap://192.168.255.104:389",
    "bindDN": "cn=admin,dc=hsc,dc=com",
    "bindCredentials": "hsc321",
    "searchBase": "ou=users,dc=hsc,dc=com",
    "searchFilter": "(cn={{username}})"
  }
}
}'

使用 passport-ldap 身份验证时,电子邮件是否为必填字段?

是的,我相信 passport-ldapauth 策略需要工作(与 Composer REST 服务器相反)。建议 modify/add 一个用户(从定义了邮件的 LDIF 文件)例如 mail: nwd@hsc.com

ldapadd -x -D cn=admin,dc=hsc,dc=com -W -f add_user.ldif    // or ldapmodify

然后尝试 curl(或您希望的 postman)命令以查看是否有效:

curl -i -r -X POST http://localhost:3000/auth/ldap -H " Content-Type:application/json " -d ' {"username": "nd", "password":"nd" }

你应该得到 cookie。