2011-07-20 32 views
19

Tôi đang cố gắng tạo một phiên bản SQL Express trên cùng một mạng, xác thực với người dùng miền của tôi. Nó hoạt động tốt với Windows Authentication trong SSMS. Tôi đã xác minh rằng tôi có thể sử dụng cơ sở dữ liệu MyDB, bao gồm các bảng chỉnh sửa.Bảo mật tích hợp SQL bằng tên máy tính thay vì tên người dùng

Tuy nhiên, khi tôi cố gắng chuỗi kết nối sau:

Server=ipaddress\SQLExpress; Database=MyDB; Integrated Security=SSPI;

tôi nhận lại một lỗi:

Cannot open database "MyDB" requested by the login. The login failed. Login failed for user 'ROMANIA\MONSTER2$'

Vấn đề là MONSTER2 là tên của máy tính của tôi, không phải tên người dùng của tôi. (ROMANIA là tên miền.) Tôi đang làm gì sai?

[Chỉnh sửa] Tôi quên điều gì đó có thể có liên quan: Tôi đang cố mở kết nối từ dịch vụ web chạy trên máy tính của mình.

+0

Bạn cần phải cấu hình webservice của bạn để chạy như một sử dụng tên (chứ không phải là máy tính cục bộ, vì nó dường như là) –

+0

Thật là một điều khó chịu. Cảm ơn bạn đã đăng câu hỏi này. Giúp tôi. –

Trả lời

13

dịch vụ web của bạn đang chạy trong bối cảnh NT AUTHORITY\Network Service an ninh. Điều này sẽ khiến quá trình sử dụng tài khoản máy của máy chủ khi truy cập tài nguyên mạng trong miền.

Bạn sẽ phải định cấu hình dịch vụ web để chạy với nhận dạng tên miền của mình.

Nếu bạn đang lưu trữ dịch vụ web của mình trong IIS, bạn có thể thực hiện việc này thông qua impersonation. Dưới đây là một ví dụ:

<configuration> 
    <system.web> 
     <identity 
      impersonate="true" 
      userName="ROMANIA\username" 
      password="********" /> 
    </system.web> 
</configuration> 
+0

Một lần nữa, tôi có vấn đề chọn câu trả lời nào để đánh dấu là được chấp nhận. Tôi sẽ chọn cái này, xin lỗi Raj. Tôi lên bình chọn cả hai câu trả lời mặc dù. –

11

Đó là do máy chủ web của bạn không được thiết lập để sử dụng danh tính của người sử dụng dịch vụ, mà là danh tính của máy tính đang chạy.

Kiểm tra nếu web.config của bạn cho các dịch vụ web có chứa: <authentication mode="Windows" />

+6

Duh! Bạn nói đúng. Đối với hồ sơ, tôi đã phải đi đến IIS và thay đổi hồ bơi ứng dụng (trong cài đặt nâng cao) để sử dụng danh tính của tôi thay vì mặc định ApplicationPoolIdentity. Tôi sẽ chấp nhận câu trả lời trong 9 phút :) –

0

tôi cần phải làm cả hai trong tình huống của tôi:

<authentication mode="Windows" /> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
<identity impersonate="true" /> 
Các vấn đề liên quan