Вызов-WebRequest выдает отказ в доступе из-за недействительных учетных данных при доступе к URL-адресу Sitecore EE с включенной аутентификацией IIS

#powershell #sitecore

#powershell #sitecore

Вопрос:

Я пытаюсь получить StartUrl пользователей Sitecore (настроенный на вкладке профиля) в powershell, а затем передать его в Invoke-WebRequest в powershell, чтобы получить код состояния ответа для StartUrl (чтобы узнать, является ли StartUrl допустимым URL или нет).

Для доступа к StartUrl пользователь должен пройти проверку подлинности в приложении Sitecore. У нас также включена аутентификация в IIS. Итак, чтобы получить доступ к StartUrl в браузере, пользователь должен сначала пройти аутентификацию в IIS, а затем пройти аутентификацию в Sitecore (двойная аутентификация). Как мы можем добиться этого в powershell? Я использую приведенный ниже сценарий и не могу понять, где указать учетные данные Sitecore в этом

 $IISuser = 'User'
$IISpass = 'Password!'
$pair = "$($IISuser):$($IISpass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{
    Authorization = $basicAuthValue
}
$url = "https://mySitecoreInstance/?sc_mode=editamp;sc_itemid={50F6C3EC-CE89-4987-B0EF-5005938FE61D}amp;sc_site=websiteamp;sc_lang=en-US"
(Invoke-WebRequest $url -Headers $Headers).StatusCode
  

Ошибка —

 Invoke-WebRequest : Server Error
401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the credentials that you supplied.
At line:11 char:2
  (Invoke-WebRequest $url -Headers $Headers).StatusCode
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
      FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
  

Тот же сценарий отлично работает, если $url — это URL-адрес входа в Sitecore, для доступа к которому не требуется аутентификация Sitecore, т.Е. $url = https://mySitecoreInstance/Sitecore/login

Комментарии:

1. Это [$ pair = «$($ IISuser): $($ IISpass)»] не является способом передачи creds в Windows. Это должен быть домен имя пользователя или username@domainn.com . У меня нет опыта работы с SiteCore или того, что он ожидает. Никогда не вставляйте учетные данные обычного текста в сценарии. Это ненужный риск, который может / будет преследовать вас. Используйте Get-Credential и присвоите результаты переменной, которую вы можете передать. [$Creds = Get-Credential -Учетные данные $env:ИМЯ ПОЛЬЗОВАТЕЛЯ]

2. Спасибо, я могу реализовать это изменение. Любые предложения по реальной проблеме — двойная аутентификация!