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

403将PowerShell 5用作Kentico 8.2 REST客户端时出错,rest,powershell,kentico,Rest,Powershell,Kentico,当我将REST请求直接加载到浏览器中,同时登录到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.Encod

当我将REST请求直接加载到浏览器中,同时登录到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
请注意,“用户名”和“密码”是用于登录管理站点的相同凭据(当REST请求在浏览器中工作时),并且用户是全局管理员

PS代码段给了我一个403禁止的错误。我跟着,但我没法让它工作。我做错了什么

编辑:

我启用了REST服务,但现在我遇到了一个错误。同样,用户是全局管理员。我感觉请求中没有包含头(或者头有问题),因为如果我生成哈希并使用哈希参数身份验证而不是基本身份验证,则相同的请求(来自PowerShell)也可以工作。正如评论中所建议的,我尝试过使用Fiddler,但我对它还不熟悉,现在我没有时间深入研究。

刚刚使用最新的修补程序版本(9.0.32和8.2.48)对它进行了测试,效果很好

  • 确保为特定站点启用了REST(而不仅仅是全局设置)
  • 确保您的web.config中有所述的

  • 我对肯蒂科一无所知,但就目前而言,你这里的一切看起来都是对的。你试过在Fiddler中查看原始请求吗。我将捕获browser请求和PowerShell请求,并将两者进行比较,以了解两者的区别。请确保您的web.config中有``,如前所述。否则一些URL将无法工作。然而,在Kentico9中,即使这样也无济于事——似乎是一个bug。在v9之前的所有版本中,它都可以正常工作。提交给我们的开发团队。让我们看看他们对此有何看法……因此,如果REST是全局启用的,并且该值是为站点继承的,那么我应该将其保留为已继承启用,还是手动将其更改为已启用?或者您只是想检查特定于站点的值,以确保它不会覆盖继承的值?我在web.config中确实有
    代码段。另外,如果网站禁用了服务,浏览器请求是否可能成功?换句话说,在成功执行浏览器请求后,推断服务已启用是否正确?请确保已启用设置-继承或手动检查。即使在特定站点禁用REST服务时,浏览器请求也对我有效。。。所以我猜你不能从中推断。服务没有启用。请参阅对问题的编辑。注意,我们今天早上收到一封电子邮件,要求修复REST服务的安全性,即使服务被禁用,也不允许某些请求工作?巧合?不,没有关系。如果在匿名浏览器窗口中打开URL会发生什么?您是获得401还是被要求输入凭据?