Tôi tạo ra một proxy của một dịch vụ Web với Visual Studio 2008, và nó tạo cho tôi các mục sau đây trong app.config:Kết nối với WCF để một WebService chứng thực với username/password
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MyNameHandlerSoapBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://www.***/***/***"
binding="basicHttpBinding" bindingConfiguration="MyNameHandlerSoapBinding"
contract="***.MyNameHandler" name="MyName">
</endpoint>
</client>
</system.serviceModel>
Các webservice có xác thực tên người dùng/mật khẩu vì vậy tôi cần thêm nó ở đâu đó ở đây.
Tôi bị mất một chút trong biển tài liệu WCF, tôi nghĩ tôi phải thay đổi từ basicHttpBinding thành wsHttpBinding hoặc customBinding để có thể thêm các phần tử xác thực, nhưng tôi thực sự không hiểu nó. Ai có thể đưa ra bất kỳ mẹo nhanh hay bất kỳ liên kết hữu ích nào nói cách làm như vậy không?
EDIT:
tôi đã thay đổi phần bảo mật:
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="None"
realm="" />
</security>
và thêm vào đoạn code:
ws.ClientCredentials.UserName.UserName = "";
ws.ClientCredentials.UserName.Password = "";
Bây giờ có vẻ như nó có thể được sử dụng thông tin nhưng nó cho tôi lỗi:
URI chương trình cung cấp 'http' không hợp lệ URI dự kiến 'https'
Tôi thậm chí không biết nếu điều này là đúng cách để đi ...
WCF là địa hình cấu hình. Bạn muốn sử dụng cửa hàng auth nào? Windows ... ASP thành viên hoặc tùy chỉnh như một cơ sở dữ liệu? Và bạn đã xem qua điều này: http://msdn.microsoft.com/en-us/library/bb398990.aspx –
Thật vậy. Đó là một dịch vụ web bên ngoài có tên người dùng/mật khẩu duy nhất để sử dụng luôn cho tất cả các cuộc gọi của tôi. Và nó là http. Vì vậy, tôi đoán nó có thể được nhiều hơn một ủy quyền điểm cuối, nếu điều đó có ý nghĩa! – antonioh
Lúc đầu, bạn không thể chỉ định tên người dùng và mật khẩu ở bất cứ nơi nào trong cấu hình (nhưng chỉ trong mã) - sau đó một lần nữa, bạn có muốn có mật khẩu trong một tệp cấu hình rõ ràng không? CÓ THẬT KHÔNG? –