首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用带有用户名和密码的调用-WebRequest在GitHub API上进行基本身份验证

使用带有用户名和密码的调用-WebRequest在GitHub API上进行基本身份验证
EN

Stack Overflow用户
提问于 2015-01-14 20:10:15
回答 8查看 320.2K关注 0票数 176

使用cURL,我们可以通过HTTP请求传递用户名,如下所示:

代码语言:javascript
运行
复制
$ curl -u <your_username> https://api.github.com/user

-u标志接受用户名进行身份验证,然后cURL将请求密码。cURL示例用于使用GitHub Api的基本身份验证

我们如何类似地传递用户名和密码以及调用-WebRequest?最终目标是在PowerShell API中使用基本身份验证来用户GitHub。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2015-01-14 20:28:38

我在这里假设基本身份验证。

代码语言:javascript
运行
复制
$cred = Get-Credential
Invoke-WebRequest -Uri 'https://whatever' -Credential $cred

您可以通过其他方法(Import-Clixml等)获得凭据,但它必须是[PSCredential]对象。

根据评论编辑:

GitHub正在破坏RFC,正如他们在你提供的链接中解释的那样

API支持RFC2617中定义的基本身份验证,但有一些细微的差别。主要的区别是RFC需要使用401个未经授权的响应来回答未经身份验证的请求。在许多地方,这将揭示用户数据的存在。相反,GitHub API的响应是“未找到”。这可能会给假定401个未经授权的响应的HTTP库带来问题。解决方案是手动创建授权头。

据我所知,Powershell的Invoke-WebRequest在发送凭据之前等待401响应,而且由于GitHub从不提供凭证,所以您的凭据永远不会被发送。

手动构建标头

相反,您必须自己创建基本的auth标头。

基本身份验证采用由用户名和密码组成的字符串,该字符串由冒号user:pass分隔,然后发送该字符串的Base64编码结果。

这样的代码应该有效:

代码语言:javascript
运行
复制
$user = 'user'
$pass = 'pass'

$pair = "$($user):$($pass)"

$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))

$basicAuthValue = "Basic $encodedCreds"

$Headers = @{
    Authorization = $basicAuthValue
}

Invoke-WebRequest -Uri 'https://whatever' -Headers $Headers

您可以组合一些字符串连接,但我想将其分解以使其更清晰。

票数 215
EN

Stack Overflow用户

发布于 2015-05-13 01:10:08

用这个:

代码语言:javascript
运行
复制
$root = 'REST_SERVICE_URL'
$user = "user"
$pass= "password"
$secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($user, $secpasswd)

$result = Invoke-RestMethod $root -Credential $credential
票数 61
EN

Stack Overflow用户

发布于 2020-02-01 22:06:28

如果有人需要一条衬垫:

代码语言:javascript
运行
复制
iwr -Uri 'https://api.github.com/user' -Headers @{ Authorization = "Basic "+ [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("user:pass")) }
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27951561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档