Замените ClientCredentials заголовком Bearer токена в OperationContextScope SOAP - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь заменить учетные данные клиента на заголовок Bearer Token в службе SOAP. Я использовал поставщика справочных услуг веб-служб WCF и сделал tnet ядро ​​в сравнении с 2019. С заголовками REST и HttpWebRequest. Добавьте все в порядке. У меня нет опыта в C#, и это не то, что я ищу бесплатное решение, но в настоящее время я принимаю любую помощь, которую могу получить, поэтому, пожалуйста, прокомментируйте ..

/*
   * client.ClientCredentials.UserName.UserName = Creds.UserName;
   * client.ClientCredentials.UserName.Password = Creds.Password;
   */

  using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
  {
    HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
    /*
     * httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(client.ClientCredentials.UserName.UserName + ":" + client.ClientCredentials.UserName.Password));
     */

    //String auth = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
    //httpRequestProperty.Headers.Add("Authorization", "Bearer " + auth);
    //httpRequestProperty.Headers.Add("Bearer " + auth);
    //httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = "Bearer " + "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
    //httpRequestProperty.Headers["Authorization"] = "Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
    //httpRequestProperty.Headers["Bearer"] = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";


    MessageHeader usernameTokenHeader = MessageHeader.CreateHeader("Bearer", "https://api.lantmateriet.se/distribution/produkter/taxering/v1.7", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
    OperationContext.Current.OutgoingMessageHeaders.Add(usernameTokenHeader);

    OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;

Ответ следующий:

System.ServiceModel.Security.MessageSecurityException: 'The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Basic realm="auth"'.'

1 Ответ

0 голосов
/ 14 января 2020

Это проблема с адресом пространства имен в схеме xsd. @RuardvanElburg дал правильный ответ. Спасибо

...