2008-10-17 42 views
5

Oracle có khái niệm này cho phép người dùng cơ sở dữ liệu được xác định bởi người dùng hệ điều hành đang chạy chương trình đang kết nối với Oracle. Xem here.Kết nối với Oracle mà không có tên người dùng hoặc mật khẩu

này cho phép bạn làm, như người dùng trên một máy unix ví dụ, một lệnh như:

sqlplus/

Tôi đang cố gắng để viết một chương trình Java cho Oracle 10,2 nối mà không cần một tên người dùng hoặc mật khẩu . Sự lựa chọn rõ ràng của url:

jdbc:oracle:thin:/@localhost:1521:MYDBSID 

không hoạt động, đưa ra lỗi (Xin lỗi tôi hiện không có lỗi).

Tôi đã thử nhiều hình thức khác để thực hiện việc này, nhưng không có may mắn.

Có ai có bất kỳ đề xuất nào về cách tôi có thể kết nối chương trình Java với Oracle bằng phương pháp nhận dạng hệ điều hành không?

Trả lời

5

Trình điều khiển Thin JDBC là một thực thi Java thuần túy 100% không thể thu thập thông tin cần thiết từ hệ điều hành.

Trình điều khiển JDBC OCI có thể thực hiện việc này! Sử dụng jdbc:oracle:oci8:/@MYDBSID, nó sẽ yêu cầu trình điều khiển Oracle được cài đặt trên máy đó, không phải là vấn đề nếu đây là máy chủ (và khởi động nhanh hơn và hỗ trợ nhiều tính năng hơn trình điều khiển mỏng)

+2

Điều này đúng với các phiên bản cũ hơn của Trình điều khiển JDBC Oracle nhưng không đúng đối với các phiên bản mới hơn (ojdbc5.jar và ojdbc6.jar). Bạn vẫn phải cung cấp kết nối cho người dùng, nhưng nó sẽ hoạt động theo tài liệu ở đây: http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/clntsec.htm#CIHCBCBC – Nick

1

Trình điều khiển jdbc mà tàu oracle KHÔNG có khả năng thu thập tên người dùng và mật khẩu hệ điều hành từ URL mà bạn cung cấp. Giả sử, có các nhà cung cấp trình điều khiển JDBC bên thứ 3 cho ORACLE, một trong số chúng có thể cung cấp chức năng mà bạn đang yêu cầu. bạn nên google xung quanh.

0

Nếu bạn đang truy cập Oracle từ một máy chủ ứng dụng J2EE, bạn có thể đạt được một kết thúc tương tự bằng cách sử dụng JNDI để có được một nguồn dữ liệu.

1

Nhờ những người đã trả lời. Chúng tôi đã đi với trình điều khiển OCI.

tôi đã tìm thấy tài liệu nào cho thấy Oracle 11g không hỗ trợ xác thực người dùng hệ điều hành thông qua driver mỏng mặc dù:

http://www.orindasoft.com/public/Oracle_JDBC_JavaDoc/javadoc1110/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_VSESSION_OSUSER

Tôi không có một thiết lập 11g để kiểm tra điều này, vì vậy tôi không thể chắc chắn điều này hoạt động.

+0

Chỉ dành cho thông tin của bạn: sử dụng trình điều khiển mỏng JDBC Oracle 11g trên cơ sở dữ liệu Oracle 10g hoạt động với xác thực người dùng hệ điều hành (tôi đã thử nghiệm nó). Nhưng lưu ý rằng nó không thực sự an toàn, vì người ta có thể thay đổi lập trình thuộc tính được đề cập ở trên. Ngay cả khi không cho phép xác thực hệ điều hành từ xa, việc chạy chương trình trên cùng một máy từ người dùng trái phép vẫn có nguy cơ cao trong trường hợp này. –

+0

Trình điều khiển có hoạt động đối với chuỗi kết nối/@ TWO_TASK với thiết lập Oracle Wallet không? Có bất kỳ mã kết nối Java mẫu nào không? – johnsam

0

thử sau jdbc: oracle: mỏng: username/password @ localhost: 1521: MYDBSID

bạn cần phải xác định thông tin tài khoản

sqlplus/as sysdba trên unix máy đi qua xác thực hệ thống hoạt động

-1

jdbc:oracle:oci:@ hoạt động với ojdbc6.jar và Oracle 11g2

0

Hỗ trợ xác thực hệ điều hành trong trình điều khiển mỏng JDBC đã được thêm vào 11g (bạn có thể tải xuống trình điều khiển mỏng JDBC từ 11.2.0.4 trên OTN).

Lưu ý rằng bạn phải cho phép xác thực hệ điều hành từ xa trên máy chủ (qua TCP) nếu không nó sẽ chỉ hoạt động với sqlplus sử dụng IPC hoặc BEQ cục bộ. Trong tập tin init.ora của bạn, thêm này:

REMOTE_OS_AUTHENT = TRUE 

Sau đó, nếu bạn sử dụng là "osuserdemo" trên máy client, tạo một người dùng cơ sở dữ liệu như thế này và khởi động lại DB:

CREATE USER OSUSERDEMO IDENTIFIED EXTERNALLY; 
GRANT CONNECT,CREATE SESSION,RESOURCE TO OSUSERDEMO; 

Và Trình điều khiển mỏng JDBC sẽ có thể kết nối mà không cần bất kỳ tên người dùng hoặc mật khẩu nào.

Điều đáng lưu ý là tính năng này - được coi là không được bảo mật cao - đã được bỏ hỗ trợ trong 12c.

Các vấn đề liên quan