使用 powershell 重置 Azure 服务主体的客户端密码

Reset the client secret of Azure Service Principal using powershell

我想使用 powershell 命令重置服务主体客户端密码。

我按照文章 https://docs.microsoft.com/en-us/powershell/azure/create-azure-service-principal-azureps?view=azps-5.8.0 中的以下步骤操作 但它没有重置密码

Remove-AzADSpCredential -DisplayName ServicePrincipalName
$newCredential = New-AzADSpCredential -ServicePrincipalName ServicePrincipalName

你能告诉我我做错了什么吗?我只想重置密码并拥有新的密码

我执行了上面的命令,然后我去了那个服务主体的应用程序注册,在那里我去了证书和秘密,我看到它没有创建新的秘密。

使用 bash 我可以通过执行以下命令来重置密码,但我希望使用 powershell 命令来完成密码

az ad sp credential reset --name

I went to the app registration of that service principal and there I went to certificates & secrets I see it has not created new secret.

好吧,实际上命令 New-AzADSpCredential 确实为您创建了一个新秘密。 首先,你需要知道App Registration(AD App)和Service principal的关系,见Application and service principal objects in Azure Active Directory.

简而言之,服务主体是特定租户中AD App的本地表示。当您为服务主体创建秘密时,它不会出现在 Certificates & secrets blade 中,您可以通过 Get-AzADSpCredential.

获取它

如果您想重置您可以在门户中找到的密码,您需要通过Remove-AzADAppCredential and New-AzADAppCredential.

重置 AD 应用程序的密码(即应用程序注册)

您可以参考下面的示例,它重置了一个值为 ce96a0ed-5ae8-4a5a-9b3c-630da9ea3023 的密钥,有效期为一年,您可以在门户中找到它。

$obj = (Get-AzADApplication -DisplayName joyappv2).ObjectId
Remove-AzADAppCredential -ObjectId $obj -Force
$azurePassword = ConvertTo-SecureString "ce96a0ed-5ae8-4a5a-9b3c-630da9ea3023" -AsPlainText -Force
$date = Get-Date
$newCredential = New-AzADAppCredential -ObjectId $obj -Password $azurePassword -StartDate $date -EndDate $date.AddYears(1)

注意:密值创建后无法再次获取,请在创建时保存。