我有原始的 curl 调用,据称是在Unix环境中工作(或者他们在提供商办公室使用的任何东西)。
curl
-u ybeepbeepbeepa:eboopboopboopa
-k
-d "grant_type=mobile&customerId=SE.B2C/abcd&pin=1234&scope=openid"
-H "Content-Type:application/x-www-form-urlencoded"
https://xxx/oauth2/token
使用docs for curl我将标志和属性交换到以下内容。
Invoke-WebRequest
-User ybeepbeepbeepa:eboopboopboopa
-Method POST
-Headers @{"Content-Type"="application/x-www-form-urlencoded"}
-Uri "https://xxx/oauth2/token?grant_type=mobile&customerId=SE.B2C/abcd&pin=1234&scope=openid"
我唯一无法翻译的部分是 -k ,它应该等同于 - insecure 。检查了所说的文档,我找到了一些可能的,虽然很牵强的替代方案(例如 -AllowUnencryptedAuthentication ),但所有这些都失败了,我没有想法。
答案 0 :(得分:2)
代替-k
,您需要使用ServicePointManager
类为应用领域设置证书验证例程:
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }
function Get-BasicAuthCreds {
param([string]$Username,[string]$Password)
$AuthString = "{0}:{1}" -f $Username,$Password
$AuthBytes = [System.Text.Encoding]::Ascii.GetBytes($AuthString)
return [Convert]::ToBase64String($AuthBytes)
}
$Headers = @{"Content-Type"="application/x-www-form-urlencoded"}
$Headers['Authorization'] = "Basic $(Get-BasicAuthCreds ybeepbeepbeepa eboopboopboopa)"
Invoke-WebRequest -Method POST -Headers $Headers -Uri "https://xxx/oauth2/token?grant_type=mobile&customerId=SE.B2C/abcd&pin=1234&scope=openid"
如果你想生成内联的凭据字符串,你可以这样做(尽管它有点笨拙):
$Headers = @{
"Content-Type" = "application/x-www-form-urlencoded"}
"Authorization" = "Basic $([Convert]::ToBase64String([System.Text.Encoding]::Ascii.GetBytes('ybeepbeepbeepa:eboopboopboopa')))"
}