簡體   English   中英

通過PBBI的客戶端身份驗證,未經授權的HTTP請求

[英]The HTTP request is unauthorized with client authentication for PBBI

我試圖通過Web服務連接我的dev PBBI服務器以驗證地址。 好像我的身份驗證有問題。 我沒有關於此的文檔。 如果你們對驗證服務有任何了解,我必須驗證哪些方法?

例外

mscorlib.dll中發生了類型為'System.ServiceModel.Security.MessageSecurityException'的未處理異常

附加信息:HTTP請求未經客戶端身份驗證方案'Ntlm'的授權。 從服務器收到的身份驗證標頭是“ Basic realm =“ DCGRealm””

var validateClient = new ValidateAddressClient("ValidateAddressPort");
 validateClient.ClientCredentials.UserName.UserName ="Admin";
 validateClient.ClientCredentials.UserName.Password = "ADMIN";

 var address1 = new input_portAddress
 {
      AddressLine1 = "1825B Kramer Lane",
      AddressLine2 = "Suite 100",
      PostalCode = "78758",
      City = "Austin",
      StateProvince = "Texas"
  };
  var addresses = new input_portAddress[2];
  addresses[0] = address1;
  var options = new options {OutputCasing = OutputCasing.M};
  output_portAddress[] results =
                    validateClient.ValidateAddress(options, addresses);//Exception happening here.

組態

 <system.serviceModel>
    <bindings>
        <basicHttpBinding>
          <binding name="ValidateAddressSoapBinding" >
             <security mode="TransportCredentialOnly">
              <transport clientCredentialType="Basic"/>
            </security>
          </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://webserviceURL:8080/soap/ValidateAddress"
            binding="basicHttpBinding" bindingConfiguration="ValidateAddressSoapBinding"
            contract="PBBIWebService.ValidateAddress" name="ValidateAddressPort"  />
    </client>
</system.serviceModel>

如何解決呢?

對於配置更新,本節為system.serviceModel > bindings > basicHttpBinding

<basicHttpBinding>
  <binding name="ValidateAddressSoapBinding" >
      <security mode="Transport">
      <transport clientCredentialType="Basic"/>
    </security>
  </binding>
</basicHttpBinding>

在代碼方面

var validateClient = new ValidateAddressClient();
validateClient.ClientCredentials.UserName.UserName = "Admin";
validateClient.ClientCredentials.UserName.Password = "ADMIN";
validateClient.Open();
var address1 = new input_portAddress
{
    AddressLine1 = "1825B Kramer Lane",
    AddressLine2 = "Suite 100",
    PostalCode = "78758",
    City = "Austin",
    StateProvince = "Texas"
};
var addresses = new input_portAddress[2];
addresses[0] = address1;
var options = new options { OutputCasing = OutputCasing.M };
output_portAddress[] results =
                    validateClient.ValidateAddress(options, addresses);
validateClient.Close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM