首页 > 解决方案 > 使用 LDAP 服务器配置的 Hyperledger Composer 身份验证失败,并出现错误“用户配置文件中缺少电子邮件”

问题描述

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

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

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

我已附加 LDAP 中使用的用户配置文件配置。 LDAP 用户配置

我正在使用邮递员向我的休息服务器发布一个请求,该请求将我重定向到 auth/ldap。提供的作曲家提供者:

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身份验证时是否强制发送电子邮件?

标签: restldaphyperledgerhyperledger-composeropenldap

解决方案


是的,我认为该passport-ldapauth策略需要它才能起作用(而不是 Composer REST 服务器)。建议修改/添加用户(来自定义了邮件的 LDIF 文件),例如mail: nwd@hsc.com

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

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

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

你应该得到饼干。


推荐阅读