Gitlab'ın LDAP bağlantısında özel karakter sorunu ve çözümü
Gitlab'a LDAP 사용자 정의
Gitlab은 SAMBA DC와 MS AD를 연결하기 위해 다음과 같은 방법으로 LDAP를 실행하고 있습니다.
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 "İ" 및 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.
해결 방법 çözüm
해결 방법은/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 다시 시작 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 "I"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 gore 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 일반적인 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.
Reference
이 문제에 관하여(Gitlab'ın LDAP bağlantısında özel karakter sorunu ve çözümü), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aciklab/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-3nc0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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,
}
}
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.
해결 방법 çözüm
해결 방법은/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 다시 시작 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 "I"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 gore 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 일반적인 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.
Reference
이 문제에 관하여(Gitlab'ın LDAP bağlantısında özel karakter sorunu ve çözümü), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aciklab/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-3nc0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def to_normalized_s
self.class.new(*to_a).to_s.downcase.gsub("i̇", "İ").upcase
end
gitlab-ctl upgrade
gitlab-ctl restart
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 gore 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 일반적인 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.
Reference
이 문제에 관하여(Gitlab'ın LDAP bağlantısında özel karakter sorunu ve çözümü), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aciklab/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-3nc0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Gitlab'ın LDAP bağlantısında özel karakter sorunu ve çözümü), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aciklab/gitlabin-ldap-baglantisinda-ozel-karakter-sorunu-3nc0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)