0
カスタムユーザー名とパスワード認証を使用するサービス証明書を作成する必要がありますか?カスタムのユーザー名とパスワードでWCFサービスを認証します。WCF認証:カスタムユーザー名とパスワード検証ツールasp.net
次のように私のサービスのweb.configファイルは次のとおりです。
<system.serviceModel>
<bindings>
<wsHttpBinding>`enter code here`
<binding name="NewBinding0">
<security mode="Message">
<transport clientCredentialType="Basic" />
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="WcfTest.Service1Behavior" name="WcfTest.TestService">
<endpoint address="" binding="wsHttpBinding" contract="WcfTest.ITestService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="NewBehavior" />
</endpointBehaviors>
<serviceBehaviors>
<behavior name="WcfTest.Service1Behavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceCredentials>
<!-- Use our own custom validation -->
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="MyValidator,WcfTest"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
とクライアントのWeb.configは次のとおりです。
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_ITestService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00"
sendTimeout="00:01:00" bypassProxyOnLocal="false"
transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8"
useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384" maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName"
negotiateServiceCredential="true"
algorithmSuite="Default"
establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:2374/Service1.svc" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_ITestService"
contract="ServiceReference1.ITestService"
name="WSHttpBinding_ITestService">
<identity>
<userPrincipalName value="NYSA31\abc" />
</identity>
</endpoint>
</client>
</system.serviceModel>
しかし、私は、サービスへのアクセス、次のエラーを取得しています。
サービスとクライアント間のセキュリティ設定が一致しません。サービスがメッセージセキュリティを指定していて、トランスポートがBasic ClientCredentialTypeに設定され、メッセージがUserName ClientCredentialTypeに設定されていて、クライアントがメッセージセキュリティをWindows ClientCredentialTypeに設定されたトランスポートで使用しています。それが問題なのかどうかはわかりませんが、その領域を調べたいと思うかもしれません。 – Tim
@Tim:あなたの返事をありがとう。私のサービスで認証タイプとしてユーザ名を使用していますが、私はデフォルトで認証サービスを参照するように設定されています。クライアントweb.configに修正を加えましたが、同じ問題が発生しています。 –
モードが 'Message'に設定されているので、' Transport'の 'ClientCreadentialType'に何が設定されているかは関係ありません。 –