2013-01-09 29 views
9

Tôi đang cố truy cập ứng dụng khách wcf. Tôi biết mọi người đang nhận được thông tin từ nó ngay bây giờ, vì vậy tôi biết nó hoạt động. Vấn đề của tôi là tôi dường như không thể vượt qua nó. Dịch vụ này là một dịch vụ chứng nhận lẫn nhau. Tôi có các chứng chỉ phù hợp trong các cửa hàng cá nhân của tôi trên máy cục bộ của tôi. Ngay cả với điều đó, tôi nhận được ngoại lệ sau đây:SSPI: tên nguyên tắc người dùng WCF client

A call to SSPI failed, see inner exception 

Tìm kiếm sâu vào ngoại lệ và tôi thấy điều này:

Message : The target principal name is incorrect 

Làm thế nào tôi có thể giải quyết này? Tôi có cần mạo danh người dùng trong hồ bơi ứng dụng đang chạy không? Tôi có cần phải thêm một Identity \ ServicePrincipleName hoặc Identity \ UserPrincipleName? Có ai chạy vào một vấn đề tương tự như thế này?

Trả lời

0

Tôi đã tạo lại máy khách và điểm cuối trong tệp output.config bây giờ có <identity> <userPrincipalName value="[email protected]" /> </identity> trong Thẻ điểm cuối. Vì vậy, các thiết bị đầu cuối mới trông giống như -

<endpoint address="net.tcp://machinename:6001/ReferenceDataService" binding="netTcpBinding" bindingConfiguration="netTcpBindingConf" contract="IReferenceDataService" > 
    <identity> 
<userPrincipalName value="[email protected]" /> 

này giải quyết vấn đề của tôi

+0

Trong trường hợp bất kỳ ai không quen thuộc với WCF - tôi đã sử dụng svcutil.exe để tạo lại máy khách và tệp output.config được tạo với nó. – rhinobear

0

Đối với tôi, nó làm việc khi tôi đã chỉ định tên người dùng của máy chủ trong thiết bị đầu cuối. Không phải tên người dùng của khách hàng. Và đó là một UPN, không phải là SPN.

new EndpointAddress(
    new Uri("net.tcp://server:1234/MyWcf/svc"), 
     EndpointIdentity.CreateUpnIdentity("[email protected]")) 

Từ những gì tôi hiểu, khách hàng xác minh rằng họ đang nói chuyện với người dùng mong đợi.

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