C#에서 ssl 보안 웹 서비스를 사용하려고합니다. 요청은 다음과 같습니다C#에서 SSL (https)을 사용하여 웹 서비스 사용하기
이<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:biw="http://tempuri.org/ws_returnTable"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
>
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>sasdemo</wsse:Username>
<wsse:Password>sasch.111</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<biw:meansclass />
</soapenv:Body>
</soapenv:Envelope>
WSDL의 엔드 포인트 선언은 다음과 같습니다
의 app.config는 다음과 같습니다<wsdl:service name="meansclass">
<wsdl:port binding="tns:meansclassSoapBinding" name="meansclassPort">
<soap:address location="https://sas.ssz.intra.stzh.ch:8443/SASBIWS/services/Shared%20Data/ws/meansclass" />
</wsdl:port>
</wsdl:service>
:
<bindings>
<basicHttpBinding>
<binding name="meansclassSoapBinding" 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="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://localhost:8443/SASBIWS/services/Shared%20Data/ws/meansclass"
binding="basicHttpBinding" bindingConfiguration="meansclassSoapBinding"
contract="ServiceReference1.meansclassPortType" name="meansclassPort" />
</client>
내가 웹에 액세스하려고 해당 C# 코드의 서비스 :
var service = new meansclassPortTypeClient();
service.ClientCredentials.UserName.UserName = "username";
service.ClientCredentials.UserName.Password = "password";
var test = service.meansclass();
그러나 반드시 meansclass()에 의해 예외가 throw됩니다. 독일어의 경우 :
'클라이언트 인증'(...) 유형의 예외 보안 컨텍스트가 없습니다.
나는 많은 것을 봤지만 내가 잘못한 것을 발견하지 못했습니다. 그러한 "보안 컨텍스트"를 어떻게 만들 수 있습니까? 또는 무엇이 잘못 되었습니까?