WCF를 처음 사용하며 현재이 문제로 인해 정말로 손실되었습니다 ... 클라이언트에서 제공 한 사용자 이름과 암호를 사용하여 들어오는 요청을 인증하도록 WCF 서비스를 원합니다. 의 Web.config의ClientCredentialsType = Username을 사용하여 wsHttpBinding을 사용하여 인증 할 수 없습니다.
관련 부분은 다음과 같습니다
<endpoint name="wsBinding"
address=""
binding="wsHttpBinding"
contract="ServiceLib.IBooking"
bindingConfiguration="myWSSettings"
/>
그리고를 ... 이름이 동일하지 않은 경우
<bindings>
<wsHttpBinding>
<binding name="myWSSettings">
<security mode="Transport">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType= "ServiceLib.MyCustomUserNameValidator, ServiceLib" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
MyCustomUserNameValidator 단순히 예외를 throw 단지 임시 검사기입니다 암호.
클라이언트 프로그램 (콘솔 응용 프로그램)이 일을한다 :
HTTP 요청은 '협상'클라이언트 인증 방식 무단 있습니다 :
BookingClient client = new BookingClient("wsBinding");
Passenger passenger = new Passenger();
// ../
client.ClientCredentials.UserName.UserName = "SomeUserName";
client.ClientCredentials.UserName.Password = "WrongPassword";
// ...
// ...
// NOTE: Following should throw My SecurityException Since username and
// Password are not equal
bool confirmed = client.IsTicketConfirmed(passenger);
이것은 내가 얻을 오류입니다. 서버로부터받은 인증 헤더는 'Negotiate, NTLM, Basic'입니다.
정말 도움이 되겠습니까? 나는 이걸 알아 내려고 노력했지만 시간 낭비없이 많은 시간을 보냈다.
감사 하기 Sandeep
참고 : -------- 내 WCF 서비스를 호스팅하는 데에서 GoDaddy를 사용하고
- . 보안 모드 = "메시지"는 부분 신뢰 때문에 사용할 수 없습니다.
- SSL 인증서가 올바르게 설치되었습니다.
사용자 이름/비밀번호를 어디에서 설정할 수 있습니까? – FrenkyB