1

私は、制御できないサーバーでホストされているWebサービスを消費しようとしてしばらく苦労してきました(そのため、サーバー部分で実際に構成を行うことはできません)。

私は WCF を使用して、ユーザー名/パスワードと証明書認証の両方の要件 (および HTTPS 接続) を持つ Web サービスを使用しようとしました。

私が持っているコードはこれです:

        EndpointAddress ea = new
                EndpointAddress("https://the.server.address");

        BasicHttpBinding bs = new BasicHttpBinding();

        bs.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
        bs.Security.Transport.ClientCredentialType =
            HttpClientCredentialType.Certificate;

        //here if I put username I get a 'message is not signed' error. 
           If I put credentials I get an 'invalid username/password'.
        bs.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;

        var svc = new myWebServiceClient(bs, ea);

        var request = new ObjectWS();

        svc.ClientCredentials.ClientCertificate.SetCertificate(
                                        StoreLocation.CurrentUser,
                                                 StoreName.Root,
                                X509FindType.FindBySerialNumber,
                                "the serial");

        svc.ClientCredentials.UserName.UserName = "user";
        svc.ClientCredentials.UserName.Password = "pass";

        //the call to the method in the WS
        request= svc.getValue("param");

問題は、私は WCF (および Web サービス全般) の初心者であるため、ユーザー名と証明書認証の両方を使用して Web サービスを使用する方法を実際に知らないことです。また、それが意味があるかどうかもわかりません。まったく。

行で:

bs.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;

資格情報の種類を証明書に設定すると、無効なユーザー名/パスワードが返されます。一方、ユーザー名に設定すると、「メッセージが署名されていないというエラー」が表示されます。

この問題に関するフィードバックやヘルプをいただければ幸いです。よろしく!

4

0 に答える 0