2012-02-07 15 views
2

IISでホストされている単純なWCFサービスを作成しました。今私は自分のuserName認証を使用したいと思います。 私のweb.configファイル:WCFで独自のパスワード検証を使用するために使用するIIS設定

<system.serviceModel> 

    <bindings> 
     <basicHttpBinding> 
     <binding name="MyBinding"> 
      <security mode="TransportCredentialOnly"> 
      <transport clientCredentialType="Basic"></transport> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <services> 
     <service name="WcfIIsBasicAuthTest.Service1" behaviorConfiguration="MyBehavior"> 
     <endpoint address="" 
      binding="basicHttpBinding" 
      contract="WcfIIsBasicAuthTest.IService1" 
      bindingConfiguration="MyBinding"/> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MyBehavior"> 
      <serviceCredentials> 
      <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="WcfIIsBasicAuthTest.MyValidator, WcfIIsBasicAuthTest"/> 
      </serviceCredentials> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 

バリ

namespace WcfIIsBasicAuthTest 
{ 
    public class MyValidator :UserNamePasswordValidator 
    { 
     public override void Validate(string userName, string password) 
     { 
      if(!(userName == "test" && password == "test")) 
      { 
       throw new SecurityTokenException("Validation Failed!"); 
      } 
     } 
    } 
} 

私は、Visual Studio内からこのWCFサービスを開始した場合、私は次のエラーを取得する:The authentication schemes configured on the host ('Ntlm, Anonymous') do not allow those configured on the binding 'BasicHttpBinding' ('Basic').

私がに接続しようとした場合サービスがIISでホストされている場合、どの認証タイプが設定されているかに応じてエラーメッセージが表示されますが、動作しません。 The authentication schemes configured on the host ('Anonymous') do not allow those configured on the binding 'BasicHttpBinding' ('Basic').

を私はIISで基本認証を設定した場合は(私は私自身のuserproviderを書きたいので)、それは私が提供したくない有効なローカルユーザーを要求:唯一の匿名認証が有効になっている場合

エラー。

wcfとiisでこのような基本認証ユーザーの設定を行う方法についてのヒントやリンクはありますか? WCFは、ユーザー名、パスワードが平文でチャネルを介して渡されることができdoesntのようあなたがHTTPSセットアップを持っている必要がありますbasicHttpBindingで動作するようにそのために

<security mode="TransportWithMessageCredential"> 
     <message clientCredentialType="UserName"/> 
</security> 

答えて

2

は、あなた自身のUserNameValidatorを使用するため、以下の構成を設定することができます。もう1つの方法は、wsHttpBindingを使用する方法です。

+0

httpsを使用してウェブサイトを設定しても、私自身のuserproviderを使用することはできません。この他にも、 'clientCredentialTyp = "UserName"は常に無効です(何か不足していませんか?) – Manuel

+0

"clientCredentialType = UserName"というのは奇妙です。あなたはあなたが得ているエラーを投稿できますか? – Rajesh

+0

「clientCredentialTypeが無効です」というメッセージが表示されます 「None、Basic、Digest、Ntml、Windows、Certificate」から選択できます – Manuel

関連する問題