自己署名 SSL 証明書を使用して https で実行される基本的な http 認証を使用して、自己ホスト型の WCF RESTful サービスを作成しました。すべて正常に動作します。ユーザーは、Web ブラウザーを介してサービス操作にアクセスします。
問題は、顧客がサービス ユーザーに基本認証 (ユーザー名とパスワード) と証明書の両方を使用して認証することを望んでいることです。私はこれを達成できませんでした。
WCF 4.5 で複数の認証方式を使用できる可能性があることを確認しました。私はこれを調べましたが、役に立ちませんでした。
この投稿にも出くわしました(最後の回答を参照)が、試してみると次のエラーが発生しました:
「例外が発生しました: HTTPS リスナー ファクトリは、クライアント証明書と認証スキーム 'Basic' を要求するように構成されました。一度に要求できる認証形式は 1 つだけです。」
私の構成はコードで行われ、次のようになります (これは機能するバージョンです)。
Uri baseAdress = new Uri("https://localhost:8446/");
WebServiceHost host = new WebServiceHost(typeof(RestService));
WebHttpBinding wb = new WebHttpBinding();
wb.Security.Mode = WebHttpSecurityMode.Transport;
wb.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
host.AddServiceEndpoint(typeof(IRestService), wb, baseAdress);
host.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new CustomUserNameValidator();
host.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom;
host.Description.Endpoints[0].Behaviors.Add(new WebHttpBehavior { HelpEnabled = true });
host.Open();
ヒントをありがとう、