2013-12-13 4 views
2

Есть ли способ подключения к веб-службе с учетными данными пользователя уровня сообщений с помощью powershell.Учетные данные пользователя уровня WCF с помощью powershell

У меня есть проверенный веб-сервис, который прекрасно работает с программой C#, что я подключить уточняющие полномочия следующим образом:

DEVService.ServerLinkClient webService = new DEVService.ServerLinkClient("ServerLinkEndPoint"); 
webService.ClientCredentials.UserName.UserName = "*****"; 
webService.ClientCredentials.UserName.Password = ""*****"; 

Конфигурация веб-сервиса заключается в следующем:

<bindings> 
    <basicHttpBinding> 
    <binding name="ServerLinkBinding" maxBufferSize="2097152" maxReceivedMessageSize="2097152" 
      maxBufferPoolSize="2097152" sendTimeout="00:02:00" receiveTimeout="00:02:00"> 
     <security mode="TransportWithMessageCredential"> 
     <message clientCredentialType="UserName" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

<services> 
    <service name="APOServiceLibrary.ServerLink" 
      behaviorConfiguration="SecureBehaviourServerLink"> 
    <endpoint name="ServerLinkEndPoint" 
       address="" 
       binding="basicHttpBinding" 
       bindingConfiguration="ServerLinkBinding" 
       contract="APOServiceLibrary.IServerLink"> 
    </endpoint> 
    <endpoint address="mexServerLink" 
       binding="mexHttpsBinding" 
       contract="IMetadataExchange"> 
    </endpoint> 
    </service> 
</services> 


<behaviors> 
    <serviceBehaviors>  
    <behavior name="SecureBehaviourServerLink"> 
     <serviceMetadata httpsGetEnabled="True"/> 
     <serviceDebug includeExceptionDetailInFaults="False"/> 
     <serviceCredentials> 
     <userNameAuthentication userNamePasswordValidationMode="Custom" 
customUserNamePasswordValidatorType="APOServiceLibrary.ConnectionSecurityServerLink, APOServiceLibrary"/> 
     </serviceCredentials> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

I иметь подключение к простой веб-службе в прошлом с powershell, но эта служба была настроена на использование проверки подлинности Windows. В этом случае транспортный уровень является только базовым, и сообщение ожидает определенного имени пользователя и пароля.

Это скриптовый я пытаюсь использовать для извлечения набора данных из веб-службы:

#setup the credentials to connect 
$securePasswd = ConvertTo-SecureString "*******" -AsPlainText -Force 
$tempCredentials = New-Object System.Management.Automation.PSCredential (""*******" ", $securePasswd) 

# Connect to the web services 
$web_serv = New-WebServiceProxy -uri https://127.0.0.1/ServerLink.svc -Credential $tempCredentials 

# get some data 
$test_data = New-Object System.Data.DataSet 
$test_data = $web_serv.getDataSet() 

Однако, когда я пытаюсь подключиться с помощью учетных данных и попытаться выполнить команду я получаю следующее ошибка:

Exception calling "getDataSet" with "0" argument(s): "An error occurred when verifying security for the message." 

Любая помощь была бы замечательной!
Или даже знать, можно ли указать имя пользователя и пароль на уровне сообщений в соединение powershell было бы полезно!

ответ

0

Я нашел это: http://social.technet.microsoft.com/Forums/windowsserver/en-US/54d89b12-8623-47d1-8873-b4ba7927a4a5/powershell2-newwebserviceproxy-soap-security-header?forum=winserverpowershell

В основном предполагает, что Нью-PowerShell WebServiceProxy commandlet не достаточно детализированы, чтобы иметь дело с этим уровнем сложности.

С этой целью я работал вокруг моей проблемы путем изменения веб-службы, чтобы использовать только безопасность Tranport следующим образом:

<binding name="ServerLinkBinding" maxBufferSize="2097152" maxReceivedMessageSize="2097152" 
     maxBufferPoolSize="2097152" sendTimeout="00:02:00" receiveTimeout="00:02:00"> 
    <security mode="Transport" /> 
</binding> 

И требует имя пользователя и пароль будут предоставлены каждому методу (в моем случае работает из-за ограниченного числа методов).

Смежные вопросы