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>
:
httpsを使用してウェブサイトを設定しても、私自身のuserproviderを使用することはできません。この他にも、 'clientCredentialTyp = "UserName"は常に無効です(何か不足していませんか?) – Manuel
"clientCredentialType = UserName"というのは奇妙です。あなたはあなたが得ているエラーを投稿できますか? – Rajesh
「clientCredentialTypeが無効です」というメッセージが表示されます 「None、Basic、Digest、Ntml、Windows、Certificate」から選択できます – Manuel