#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. Спасибо, я могу реализовать это изменение. Любые предложения по реальной проблеме — двойная аутентификация!