403使用PowerShell 5作为Kentico 8.2 REST客户端时出错

时间:2016-07-21 20:50:04

标签: rest powershell kentico

当我直接在我同时登录Kentico 8.2管理站点的浏览器中加载它时,此REST请求有效:

https://www.example.com/rest/CMS.SettingsKey

现在,我需要使用PowerShell 5返回相同的结果。我尝试了以下各种版本:

$url = "https://www.example.com/rest/CMS.SettingsKey"
$httpMethod = "Get"
$credentialsBytes = [System.Text.Encoding]::UTF8.GetBytes("username:password")
$credentialsEncoded = [System.Convert]::ToBase64String($credentialsBytes)
$headers = @{}
$headers.Add("Authorization", "Basic $($credentialsEncoded)")
$settings = (Invoke-RestMethod -Uri $url -Method $httpMethod -headers $headers)
Write-Host $settings

请注意"用户名"和#34;密码"是用于登录管理站点的相同凭据(当REST请求在浏览器中工作时),并且用户是全局管理员。

PS片段给出了403 Forbidden错误。我关注了this pagethis page,但我无法让它发挥作用。我做错了什么?

编辑:
我启用了REST服务,但现在我收到了401 Unauthorized错误。同样,用户是全局管理员。我感觉标题没有被包含在请求中(或者标题有问题),因为如果我生成一个哈希并使用哈希参数身份验证而不是基本身份,那么相同的请求可以起作用(来自PowerShell)认证。我按照评论中的建议尝试使用Fiddler,但我是新手,而且我现在没有时间深入潜水。

1 个答案:

答案 0 :(得分:1)

刚刚使用最新的修补程序版本(9.0.32和8.2.48)进行了测试,它运行正常。

  1. 确保为特定网站启用REST(不仅是全局设置) Enable REST for specific site
  2. 确保您的web.config中有<modules runAllManagedModulesForAllRequests="true">,如here所述。