Gitlab’ın LDAP bağlantısında özel karakter sorunu ve çözümü

Gitlab’a LDAP üzerinden giriş

Gitlab’ı kurduktan sonra SAMBA DC ve MS AD üzerinden, LDAP kullanıcıları ile giriş için bir çok kaynakta belirtildiği gibi aşağıdaki satırları /etc/gitlab/gitlab.rb dosyasına yazmak gerekmekte.

gitlab_rails[‘…


This content originally appeared on DEV Community and was authored by Ali Orhun Akkirman

Gitlab'a LDAP üzerinden giriş

Gitlab'ı kurduktan sonra SAMBA DC ve MS AD üzerinden, LDAP kullanıcıları ile giriş için bir çok kaynakta belirtildiği gibi aşağıdaki satırları /etc/gitlab/gitlab.rb dosyasına yazmak gerekmekte.

gitlab_rails['ldap_enabled'] = true
gitlab_rails['prevent_ldap_sign_in'] = false
gitlab_rails['ldap_servers'] = {
'main' => {
  'label' => 'LDAP',
  'host' =>  '192.168.1.44',
  'port' => 636,
  'uid' => 'sAMAccountName',
  'encryption' => 'simple_tls',
  'verify_certificates' => false,
  'bind_dn' => 'cn=gitlab,cn=Users,dc=ev,dc=lab',
  'password' => 'Parola123!',
  'tls_options' => {
    'ca_file' => '',
    'ssl_version' => '',
    'ciphers' => '',
    'cert' => '',
    'key' => ''
  },
  'timeout' => 10,
  'active_directory' => true,
  'allow_username_or_email_login' => false,
  'block_auto_created_users' => false,
  'base' => 'dc=evde,dc=lab',
  'user_filter' => '',
  'attributes' => {
    'username' => ['uid', 'userid', 'sAMAccountName'],
    'email' => ['mail', 'email', 'userPrincipalName'],
    'name' => 'cn',
    'first_name' => 'givenName',
    'last_name' => 'sn'
  },
  'lowercase_usernames' => false,

  }
}

Büyük "İ" ve sorun izleme

Bu ayarlardan sonra normal şartlarda bir problem olmasa da SAMBA DC üzerindeki kullanıcılarda DN bilgisinde büyük harfle yazılan "İ" bulunuyorsa kullanıcı giriş yaparken engellendiği ve kullanıcının engelli listesine taşındığı görülmekteydi.

SAMBA DC loglarını incelediğimizde giriş loglarında olumsuz bir log gözükmemekle beraber, yukarıdaki yapılandırma dosyasındaki gitlab kullanıcısı ile de giriş yapıldığı görünmekte. (Tabi daha sonradan anlaşıldığı kadarıyla kullanıcı girişi yaptıktan sonra gitlab bir kere daha dn bilgisini filan çekiyor)

Bunun üzerine Gitlab loglarını aşağıdaki gibi incelediğimizde Gitlab'ın her şeyi küçültüğünü, DN bilgisini de aldığı ve bunu küçülttüğünü, bu küçültme sonrasında kullanıcı bulunamadı hatası verdiği görülmekteydi.

tail -f /var/log/gitlab/gitlab-rails/application*

Dolayısıyla sorun Gitlab üzerinde DN bilgisinin olduğu gibi kullanılmayıp tüm karakterleri küçültülmesi ile çıktığı görülmektedir. Tabi büyük "İ"'nin küçüğünün İngilizce'deki karşılığı tam belli olmadığı için Gitlab'ın küçülttüğü "İ", SAMBA tarafında büyük-küçük harf duyarlılığına yakalanmayıp sorunun ana kaynağını oluşturuyor.

Workaround çözüm

Workaround çözüm olarak /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/auth/ldap/dn.rb dosyasındaki to_normalized_s fonksiyonu içerisini aşağıdaki gibi yaparak sorun çözülebilmekte.

       def to_normalized_s
          self.class.new(*to_a).to_s.downcase.gsub("i̇", "İ").upcase
        end

Sonrasında aşağıdaki gibi restart edilmesi uygun olacaktır.

gitlab-ctl upgrade
gitlab-ctl restart

Eklenen şey özet olarak küçük "iki noktalı i"'nin büyük İ'ye çevrilmesi ve sorunun daha garantilenmesi için "upcase" yani büyütülmesi. Bu şekilde sadece "İ" sorunu için çözüm oluşturmakla birlikte en_EN.UTF-8'deki başka sorunları çözmeyeceği aşikar. Dolayısıyla hardcoded bir çözüm.

https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/auth/ldap/dn.rb#L230

MS AD'de bu sorunun yakalanmaması

SAMBA'da bu sorunun olması fakat MS Aktif Dizin'de bu sorunun olmamasını araştırdığımızda ilginç bir noktaya geldik. Bu nokta AD'de İngilizce dahi kurulsa büyük "İ"'nin küçüğü olarak hem i hem de i̇ büyük-küçük harf duyarsız olarak aratılabilmekte. Ve tabi ki bu nedenle SAMBA'ya göre MS AD'de ali varken ali̇ isimli aynı hesap oluşturulamamakta ve bu isimler varken ALI veya ALİ isimli kullanıcı da oluşturulmamakta. SAMBA ise en_US-UTF-8 standartı uyarınca ALI ve ali'yi aynı kabul edip, ALİ'yi ayrı bir isim gibi kabul etmekte.

Konunun genel kültür kısmı

Konuya genel olarak baktığımızda problemin aslında Türkçe dilindeki İ'nin küçüğü olan i'nin, İngilizce dilindeki I'nın küçüğü olan i ile karışmasıyla ortaya çıktığı görülmektedir.

Image description


This content originally appeared on DEV Community and was authored by Ali Orhun Akkirman


Print Share Comment Cite Upload Translate Updates
APA

Ali Orhun Akkirman | Sciencx (2022-03-26T17:34:37+00:00) Gitlab’ın LDAP bağlantısında özel karakter sorunu ve çözümü. Retrieved from https://www.scien.cx/2022/03/26/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-ve-cozumu/

MLA
" » Gitlab’ın LDAP bağlantısında özel karakter sorunu ve çözümü." Ali Orhun Akkirman | Sciencx - Saturday March 26, 2022, https://www.scien.cx/2022/03/26/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-ve-cozumu/
HARVARD
Ali Orhun Akkirman | Sciencx Saturday March 26, 2022 » Gitlab’ın LDAP bağlantısında özel karakter sorunu ve çözümü., viewed ,<https://www.scien.cx/2022/03/26/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-ve-cozumu/>
VANCOUVER
Ali Orhun Akkirman | Sciencx - » Gitlab’ın LDAP bağlantısında özel karakter sorunu ve çözümü. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/03/26/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-ve-cozumu/
CHICAGO
" » Gitlab’ın LDAP bağlantısında özel karakter sorunu ve çözümü." Ali Orhun Akkirman | Sciencx - Accessed . https://www.scien.cx/2022/03/26/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-ve-cozumu/
IEEE
" » Gitlab’ın LDAP bağlantısında özel karakter sorunu ve çözümü." Ali Orhun Akkirman | Sciencx [Online]. Available: https://www.scien.cx/2022/03/26/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-ve-cozumu/. [Accessed: ]
rf:citation
» Gitlab’ın LDAP bağlantısında özel karakter sorunu ve çözümü | Ali Orhun Akkirman | Sciencx | https://www.scien.cx/2022/03/26/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-ve-cozumu/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.