2017-05-31 7 views
1

私はユーザ名/パスワードでwsHttpBindingを設定しようとしています。 私が遭遇した問題は、ユーザー名/パスワードを設定する方法です。wsHttpBinding with username password

私は、この設定しました:

binding.Security.Mode = SecurityMode.TransportWithMessageCredential; 
     binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName; 

をしかし、ここでユーザー名/パスワードの設定はありますか?

WSHttpBinding binding = new WSHttpBinding(); 
    binding.Security.Mode = SecurityMode.TransportWithMessageCredential; 
    binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName; 


    Type contractType = typeof(ITest); 
    Type serviceType = typeof(Test); 
    Uri httpUri = new Uri("http://localhost:8083/Test2"); 
    ServiceHost myServiceHost = new ServiceHost(serviceType, httpUri); 

    ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
    smb.HttpGetEnabled = true; 
    myServiceHost.Description.Behaviors.Add(smb); 

    myServiceHost.Open(); 

コード:WCFが認証にWindowsユーザーを使用してデフォルトで

namespace ConsoleApplication1 
{ 
    [ServiceContract] 
    interface ITest 
    { 
    [OperationContract] 
    string Ping(); 
    } 
} 



namespace ConsoleApplication1 
{ 
    class Test : ITest 
    { 
    public string Ping() 
    { 
     return "Pong - it works!"; 
    } 
    } 
} 

答えて

1

。しかし、独自のカスタムバリデータをプラグインすることができます。あなたはUserNamePasswordValidatorから継承されたクラスを作成し、それを使用するWCFを伝える必要があり

myServiceHost.Description.Behaviors.Find<ServiceCredentials>().UserNameAuthentication 
.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom; 
myServiceHost.Description.Behaviors.Find<ServiceCredentials>().UserNameAuthentication 
.CustomUserNamePasswordValidator = new MyCustomValidator(); 

this exampleofficial MSDN documentationを参照してください。

+0

コードの前に何かを追加する必要がありますか?私は最初の行にnull参照例外を受け取ります。 – FrenkyB

+0

基本的に問題は、これはnullです:myServiceHost.Description.Behaviors.Find ()。 – FrenkyB

+1

次に、新しいServiceCredentialsビヘイビアをmyServiceHost.Description.Behaviorsに追加します。 –

関連する問題