2012-05-04 37 views
9

Tôi đang cố gắng thiết lập Gerrit để sử dụng Thư mục Họat động của công ty chúng tôi để xác thực. Tôi biết nhiều người đã xoay xở để làm việc này nhưng nó sẽ không có tác dụng với tôi.Gerrit và Active Directory

Nếu tôi chạy một lệnh ldapsearch như sau tôi nhận được kết quả chính xác, vì vậy tôi biết chuỗi tìm kiếm của tôi là chính xác:

ldapsearch -h myserver -b "CN=Users,DC=mycompany,DC=com" -D "CN=adam,CN=Users,DC=mycompany,DC=com" -w mypassword "(sAMAccountName=adam)" 

Nhưng sử dụng các thiết lập tương tự trong cấu hình Gerrit tôi không hoạt động:

[auth] 
    type = LDAP 
[ldap] 
    server = ldap://myserver 
    accountBase = CN=Users,DC=mycompany,DC=com 
    groupBase = OU=Gerrit,DC=mycompany,DC=com 
    user = CN=adam,CN=Users,DC=mycompany,DC=com 
    password = mypassword 
    referral = follow 
    accountPattern = (sAMAccountName=${username}) 
    groupPattern = (cn=${groupname}) 
    accountFullName = displayName 
    accountMemberField = memberOf 
    accountEmailAddress = mail 

Khi tôi cố gắng đăng nhập bằng tài khoản của tôi, tôi có được ngoại lệ sau đây trong etc/error_log:

[2012-05-04 10:03:04,595] ERROR com.google.gerrit.server.auth.ldap.LdapRealm : Cannot query LDAP to autenticate user 
javax.naming.NamingException: [LDAP: error code 1 - 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece^@]; remaining name 'CN=Users,DC=mycompany,DC=com' 
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3072) 
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2978) 
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2785) 
    at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1839) 
    at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1762) 
    at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1779) 
    [...] 

Có ai đã thiết lập cấu hình tương tự có thể trợ giúp không?

Trả lời

4

Xin lỗi các bạn, lỗi của tôi ở đây. Trong cấu hình của tôi, tôi đang sử dụng ldap.user làm tên cài đặt thay vì ldap.username. Một khi tôi đã thay đổi thì ràng buộc AD của tôi hoạt động đúng.

0

Lỗi là bạn đang cố gắng tìm kiếm mà không cần ràng buộc, nhưng đó là những gì ứng dụng LDAP của bạn phải làm cho bạn, do đó Gerrit nên sử dụng thông tin được cung cấp, ràng buộc, sau đó tìm kiếm. Nhưng lỗi ngụ ý rằng nó đang bỏ qua một bước ở đó.

1

Trong ví dụ của bạn, bạn sử dụng "CN=adam,CN=Users,DC=myusers,DC=com", nhưng thông báo lỗi cho biết tên phân biệt phải là một cái gì đó như ...,CN=Users,DC=NRII,DC=com. Kiểm tra xem các đối tượng cơ sở bạn chỉ định trong cấu hình có chính xác không, ví dụ: mục nhập nào là cn=adam cấp dưới?

+0

Xin lỗi, nên đã được đổi thành "mycompany". Tên phân biệt cho người dùng của tôi chắc chắn là 'CN = adam, CN = Người dùng, DC = mycompany, DC = com' vì nó hoạt động trong lệnh ldapsearch, nhưng không phải trong Gerrit. –

0

Tôi đấu tranh để làm cho nó hoạt động (Gerrit 2.13.1). Vào thời điểm đó tôi đã ở một công ty có quy mô cao nên tôi không dám yêu cầu tạo ra một người dùng chuyên dụng cho Gerrit trên Active Directory của công ty. Rất tiếc, quy trình tạo người dùng chuẩn trong công ty này (trong Windows?) Là họ và tên, dẫn đến tên người dùng AD như:

CN = Doe, John, OU = Người dùng EvilCorp, DC = foo, DC = bar, DC = corp

 ^
     | 

mắt Expert sẽ thấy vấn đề có thể thông qua các nhân vật không gian trong Users OU = EvilCorp nhưng đây là dấu phẩy

,

trong họ, mẫu FirstName như CN = Doe, John đã tạo sự cố.

Một khi tôi đã Gerrit sử dụng dành riêng của tôi tạo ra (GerritUser, không tên đầu tiên), các dòng:

username = CN = GerritUser, OU = EvilCorp Users, DC = foo, DC = bar, DC = corp

đã được chấp nhận và tôi có thể đăng nhập bằng id và mật khẩu người dùng Windows/AD thông thường của người dùng.

Lưu ý rằng tập tin gerrit.config bị tuyên bố vô hiệu nếu bạn cố gắng để thoát khỏi dấu phẩy như CN = Doe \, John ... có hoặc không có dấu nháy kép "

Rõ ràng cho một regex nhà văn mà cắt trên dấu phẩy chỉ sẽ thuận tiện hơn

Lưu ý:. thử nghiệm với Gerrit trên Windows

Tóm tắt etc/gerrit.config

... 
[auth] 
type = LDAP 
[ldap] 
server = LDAP://xx.yy.zz.ww 
username = CN=GerritUser,OU=EvilCorp Users,DC=foo,DC=bar,DC=corp 
accountBase = ou=EvilCorp Users,dc=foo,dc=bar,dc=corp 
accountPattern = (&(objectClass=user)(sAMAccountName=${username})) 
accountFullName = displayName 
accountEmailAddress = mail 
... 

Tóm tắt etc/secure.config

... 
[ldap] 
password = Password_Of_GerritUser 
... 
Các vấn đề liên quan