Gitlab Omnisharp package – Change LDAP DN for external user

Scenario:

Change DN from “cn=李小李,ou=IT中心,ou=XX公司,dc=xx,dc=com” to “cn=李小李,ou=HR Dept,ou=XX公司,dc=xx,dc=com” for user #11.

Step 1 – Connect to boundled PostgreSQL database

# sudo gitlab-psql -d gitlabhq_production
psql (10.9)
Type "help" for help.

gitlabhq_production=#

Refer to: https://docs.gitlab.com/omnibus/settings/database.html#connecting-to-the-bundled-postgresql-database

Step 2 – Search user DN by user id in the psql shell

gitlabhq_production=# select * from identities where provider = 'ldapmain' and user_id = 11;
 id |                           extern_uid                           | provider | user_id |         created_at         |         updated_at         | saml_provider_id | secondary_extern_uid 
----+----------------------------------------------------------------+----------+---------+----------------------------+----------------------------+------------------+----------------------
  9 | cn=李小李,ou=IT中心,ou=XX公司,dc=xx,dc=com | ldapmain |      11 | 2018-06-27 15:01:13.457313 | 2019-12-19 03:26:00.777429 |                  | 
(1 row)

gitlabhq_production=#

Step 3 – Update user DN

update identities set extern_uid = CONCAT('cn=',E'\u674e',E'\u5c0f',E'\u674e',',ou='HR Dept',',ou=XX',E'\u516c',E'\u53f8',',dc=q1oa,dc=com') where provider = 'ldapmain' and user_id = 11;
UPDATE 1
gitlabhq_production=#

Notes: You can’t input chinese characters in the psql shell, so you need encode the chinese chars in unicode format and use CONCAT function to concat ascii and unicode characters in the update SQL statement. Refer to: https://kb.objectrocket.com/postgresql/use-psql-to-insert-a-record-with-unicode-characters-845

PS: In GitLab ver 12.2.5 (09f8edbc29a), it is able to modify user’s DN by : Admin Area -> Overview -> Users -> find user and switch to “Identities” tab -> Edit