2015-06-18 13 views
9

Hey Tôi gặp sự cố khi kết nối với Máy chủ SQL với mã Java đang chạy trên Linux.Kết nối với SQL Server từ Linux qua JDBC bằng cách sử dụng IntegratedSecurity (xác thực Windows)?

Nếu tôi đặt integratedSecurity = true, sau đó mã java không thành công với các lỗi sau:

WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path 
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:b030b480-453d-4007-8151-a552150f74cd 

Mà làm cho cảm giác như sẽ không có tập tin sqljdbc.dll trên Linux.

Nhưng nếu tôi đặt integratedSecurity = false, sau đó tôi nhận được lỗi sau:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'IT_DEV_USER'. 

Vì vậy, không ai biết làm thế nào tôi có thể kết nối với SQL Server với integratedSecurity thiết lập để sai? (Lưu ý rằng tôi không thể thậm chí kết nối khi mã Java đang chạy trên Windows khi integratedSecurity được thiết lập là false.

Nếu không, có cách nào tôi có thể nhận integratedSecurity làm việc trên Linux?

Trả lời

-2

Bạn không thể sử dụng Tuy nhiên, nếu bạn kích hoạt cả chế độ SQL Server và Windows Authentication trên SQL Server, thì bạn có thể tạo một đăng nhập, ánh xạ tới cơ sở dữ liệu tương ứng và sử dụng nó trong java từ Linux.

Để bật xác thực máy chủ SQL:

  1. Nhấp chuột phải vào máy chủ của bạn trong studio quản lý
  2. Thuộc tính
  3. an
  4. xác thực
  5. Server -> SQL Server và chế độ Windows Authentication
+0

Này, tôi đã cố gắng này và nó vẫn không hoạt động. Ý tưởng nào? – fulhamHead

+1

Bạn sẽ có thể sử dụng xác thực Kerberos được tích hợp trong trình điều khiển JDBC SQL Server. –

3

Nếu bạn muốn sử dụng bảo mật tích hợp và sử dụng JDBC Driver 4.0 hoặc lớn hơn sau đó bạn thêm những điều sau vào chuỗi kết nối jdbc của mình. thông tin

integratedSecurity=true;authenticationScheme=JavaKerberos 

thêm: http://blogs.msdn.com/b/psssql/archive/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication.aspx

+2

Bạn đã thực hiện thành công việc này chưa? Tôi đang nhận được một Không thể để có được tên chính cho lỗi xác thực ... – fulhamHead

+0

Cố gắng xác định tên cá thể, nó nên sửa chữa nó. https://msdn.microsoft.com/en-us/library/ms378428.aspx –

+1

Theo tôi biết, chỉ cần thêm rằng kerberos cần phải được sử dụng là không đủ: bạn cần phải có kerberos cấu hình chính xác, và bạn cần phải có một vé kerberos từ AD. –

0

Thêm authenticationScheme=JavaKerberos công trình đối với tôi trong Linux, nhưng hãy chắc chắn để loại bỏ integratedSecurity=true kể từ khi bạn không sử dụng Windows.

0

Nếu bạn không muốn kết nối an ninh tích hợp, sau đó thiết lập tham số là false và thay vào đó cung cấp người dùng và mật khẩu trong connURL như sau:

String connectionUrl = "jdbc:sqlserver://localhost:port;databaseName=DB_NAME;integratedSecurity=false;user=login_user;password=login_pwd;"; 
Các vấn đề liên quan