调用REST API方法以更新本地管理员密码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用REST API方法以更新本地管理员密码相关的知识,希望对你有一定的参考价值。
我必须使用PowerShell为Active Directory编写迁移脚本。此脚本将更新存储在Pleasant Password Server中的KeePass服务器的本地管理员密码。
首先,我使用Windows登录凭据登录KeePass,然后搜索需要更新密码的服务器。
因此,跳过上述功能的脚本我将从生成密码开始:
function Generate-Password {
$alphabets = "abcdefghijklmnopqstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^*"
$char = for ($i = 0; $i -lt $alphabets.Length; $i++) { $alphabets[$i] }
for ($i = 1; $i -le 16; $i++) {
Write-Host -NoNewline $(Get-Random $char)
if ($i -eq 16) { Write-Host `n }
}
}
$pass = Generate-Password
从上面的脚本生成密码后,我想更新我搜索的服务器的密码。
例如:找到Server Details的附件
我想通过函数Generate-Password
更改上面搜索的服务器的密码。
为此,我使用了REST API method of PPS:
function UpdatePassword {
$update = Invoke-RestMethod -Uri “$KeepassURL/api/v4/rest/credential/$CredentialID/password/$pass” -Headers $headers -Method Put -ContentType ‘application/json’
}
我想我在这里用语法犯了一些错误。如何传递生成的密码即。 $pass
到调用的REST方法?
答案
您引用的文档说:
PUT credential/:id ** Update a credential ** Method PUT Requires Authentication? Yes
Parameters id GUID for credential
Input type Credential Result type None
并且Credential
输入类型的文档显示了此示例JSON文档:
Example Credential (JSON)
{ Id: "2b45438a-2f4a-4d96-9ba9-058ea54252fb" Name: "Credential 0" Username: "Credential 0" Password: null Url: "" Notes: "" GroupId: "cfb2c08e-e990-43b7-99d1-c8e23e0ae00e" Created: "2013-11-18T10:14:27.8218898-07:00" Modified: "2015-06-01T13:26:12.336084-06:00" Expires: null ... }
所以你可能需要这样做:
$CredentialID = '2b45438a-2f4a-4d96-9ba9-058ea54252fb'
$uri = "$KeepassURL/api/v4/rest/credential/$CredentialID"
$type = 'application/json'
$body = @{
'Id' = $CredentialID
'Name' = 'Credential 0'
'Username' = 'Credential 0'
'Password' = $pass
...
}
Invoke-RestMethod -Uri $uri -Method Put -Headers $headers -Body $body -ContentType $type
假设您通过$headers
传递已获得的授权令牌。
但是,未经测试,我不太确定你是否需要身体中的所有键/值对或只需要相关的那些,所以你需要稍微玩一下。
以上是关于调用REST API方法以更新本地管理员密码的主要内容,如果未能解决你的问题,请参考以下文章
Keycloak :REST API 调用通过管理员用户名和密码获取用户的访问令牌
如何通过执行操作电子邮件通过 keycloak admin rest api 更新密码