RocketChat / RocketChat/Rocket.Chat

Cannot import ldap user when he has more than one email

Open
#10,247 2 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area: authentication
Dominant language
TypeScript
Stars
46.1k
Forks
13.9k
Avg merge
3d 3h
Merged PRs (30d)
130

Description

`# ldapsearch -LLL -x -d 256 -h ldap1 -b dc=testdc,dc=ru '(uid=romank)' mail
request done: ld 0x83f3878 msgid 1
dn: uid=romank,ou=People,dc=testdc,dc=ru
mail: r.kravtzov@testdc.ru
mail: r.kravtsov@testdc.ru
mail: romank@testdc.ru
request done: ld 0x83f3878 msgid 2


20180328-07:12:37.099(0) [34mLDAPHandler ➔ info Init LDAP login romank
[20180328-07:12:37.099(0) [34mLDAP ➔ Connection.info Init setup
[20180328-07:12:37.101(0) [34mLDAP ➔ Connection.info Connecting ldap://ldap-proxy:389
[20180328-07:12:37.102(0) [34mLDAP ➔ Connection.info Starting TLS
[20180328-07:12:37.123(0) [34mLDAP ➔ Connection.info TLS connected
[20180328-07:12:37.124(0) [34mLDAP ➔ Search.info Searching user romank
[20180328-07:12:37.131(0) [34mLDAP ➔ Search.info Search result count 1
[20180328-07:12:37.132(0) [34mLDAP ➔ Auth.info Authenticating uid=romank,ou=People,dc=testdc,dc=ru
[20180328-07:12:37.168(0) [34mLDAP ➔ Auth.info Authenticated uid=romank,ou=People,dc=testdc,dc=ru
[20180328-07:12:37.168(0) [34mLDAPHandler ➔ info Querying user
[20180328-07:12:37.170(0) [34mLDAPHandler ➔ info User does not exist, creating romank
[20180328-07:12:37.172(0) rocketchat_logger rocketchat_logger.js:278 [31mLDAPSync ➔ error Error creating user { Error: Match error: Expected string, got object in field email at check (/app/bundle/programs/server/packages/check.js:62:15) at createUser (/app/bundle/programs/server/packages/accounts-password.js:1186:3) at AccountsServer.Accounts.createUser (/app/bundle/programs/server/packages/accounts-password.js:1273:10) at addLdapUser (/app/bundle/programs/server/packages/rocketchat_ldap.js:1273:31) at MethodInvocation. (/app/bundle/programs/server/packages/rocketchat_ldap.js:728:18) at /app/bundle/programs/server/packages/accounts-base.js:874:30 at tryLoginMethod (/app/bundle/programs/server/packages/accounts-base.js:700:14) at AccountsServer.Ap._runLoginHandlers (/app/bundle/programs/server/packages/accounts-base.js:873:18) at AccountsServer.Accounts._runLoginHandlers (/app/bundle/programs/server/packages/rocketchat_lib.js:2741:36) at MethodInvocation.methods.login (/app/bundle/programs/server/packages/accounts-base.js:931:27) at MethodInvocation.methodMap.(anonymous function) (packages/rocketchat_monitoring.js:2731:30) at maybeAuditArgumentChecks (/app/bundle/programs/server/packages/ddp-server.js:1877:12) at DDP._CurrentMethodInvocation.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:126) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at DDPServer._CurrentWriteFence.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:98) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at Promise (/app/bundle/programs/server/packages/ddp-server.js:902:46) at new Promise (:null:null) at Session.method (/app/bundle/programs/server/packages/ddp-server.js:875:23) at /app/bundle/programs/server/packages/ddp-server.js:754:85 message: 'Match error: Expected string, got object in field email', path: 'email', sanitizedError: { Error: Match failed [400] at errorClass. (/app/bundle/programs/server/packages/check.js:105:27) at new errorClass (packages/meteor.js:607:17) at check (/app/bundle/programs/server/packages/check.js:62:15) at createUser (/app/bundle/programs/server/packages/accounts-password.js:1186:3) at AccountsServer.Accounts.createUser (/app/bundle/programs/server/packages/accounts-password.js:1273:10) at addLdapUser (/app/bundle/programs/server/packages/rocketchat_ldap.js:1273:31) at MethodInvocation. (/app/bundle/programs/server/packages/rocketchat_ldap.js:728:18) at /app/bundle/programs/server/packages/accounts-base.js:874:30 at tryLoginMethod (/app/bundle/programs/server/packages/accounts-base.js:700:14) at AccountsServer.Ap._runLoginHandlers (/app/bundle/programs/server/packages/accounts-base.js:873:18) at AccountsServer.Accounts._runLoginHandlers (/app/bundle/programs/server/packages/rocketchat_lib.js:2741:36) at MethodInvocation.methods.login (/app/bundle/programs/server/packages/accounts-base.js:931:27) at MethodInvocation.methodMap.(anonymous function) (packages/rocketchat_monitoring.js:2731:30) at maybeAuditArgumentChecks (/app/bundle/programs/server/packages/ddp-server.js:1877:12) at DDP._CurrentMethodInvocation.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:126) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at DDPServer._CurrentWriteFence.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:98) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at Promise (/app/bundle/programs/server/packages/ddp-server.js:902:46) at new Promise (:null:null) at Session.method (/app/bundle/programs/server/packages/ddp-server.js:875:23) at /app/bundle/programs/server/packages/ddp-server.js:754:85 isClientSafe: true, error: 400, reason: 'Match failed', details: undefined, message: 'Match failed [400]', errorType: 'Meteor.Error' }, errorType: 'Match.Error' }
[20180328-07:12:37.172(0) Exception while invoking method 'login' Error: Match error: Expected string, got object in field email at check (/app/bundle/programs/server/packages/check.js:62:15) at createUser (/app/bundle/programs/server/packages/accounts-password.js:1186:3) at AccountsServer.Accounts.createUser (/app/bundle/programs/server/packages/accounts-password.js:1273:10) at addLdapUser (/app/bundle/programs/server/packages/rocketchat_ldap.js:1273:31) at MethodInvocation. (/app/bundle/programs/server/packages/rocketchat_ldap.js:728:18) at /app/bundle/programs/server/packages/accounts-base.js:874:30 at tryLoginMethod (/app/bundle/programs/server/packages/accounts-base.js:700:14) at AccountsServer.Ap._runLoginHandlers (/app/bundle/programs/server/packages/accounts-base.js:873:18) at AccountsServer.Accounts._runLoginHandlers (/app/bundle/programs/server/packages/rocketchat_lib.js:2741:36) at MethodInvocation.methods.login (/app/bundle/programs/server/packages/accounts-base.js:931:27) at MethodInvocation.methodMap.(anonymous function) (packages/rocketchat_monitoring.js:2731:30) at maybeAuditArgumentChecks (/app/bundle/programs/server/packages/ddp-server.js:1877:12) at DDP._CurrentMethodInvocation.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:126) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at DDPServer._CurrentWriteFence.withValue (/app/bundle/programs/server/packages/ddp-server.js:902:98) at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:15) at Promise (/app/bundle/programs/server/packages/ddp-server.js:902:46) at new Promise (:null:null) at Session.method (/app/bundle/programs/server/packages/ddp-server.js:875:23) at /app/bundle/programs/server/packages/ddp-server.js:754:85
[20180328-07:12:37.173(0) Sanitized and reported to the client as: Match failed [400]
[20180328-07:12:37.173(0) undefined undefined
[20180328-07:12:38.166(0) [34mLDAP ➔ Search.info Idle
[20180328-07:12:38.167(0) [34mLDAP ➔ Connection.info Disconecting
[20180328-07:12:38.169(0) [34mLDAP ➔ Search.info Closed
`

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in packages/rocketchat_ldap.js at addLdapUser, using the reported LDAP response with multiple mail values and the createUser validation error as the reproduction. Trace how the email field is passed into user creation, then verify that importing this LDAP user completes successfully without the expected-string error.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
authentication
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.