0

我有一个与 Azure AD 中的服务主体关联的证书。如何使用 powershell 获取与其关联的证书名称或指纹?

我已经尝试过Get-AzureRmADServicePrincipalCredential,Get-AzureRmADSpCredentialGet-AzureADServicePrincipalKeyCredential命令,但它们返回Key Identifier的不是指纹。

基本上我想在撤销它之前识别哪个证书与委托人相关联。

4

2 回答 2

2

正如@Stanley Gong 提到的,您可以使用 MS Graph 来获取它。

这是另一种方法,请尝试以下命令,这$Thumbprint就是您想要的。

请注意,这<object-id>是您的 AD 应用程序(应用程序注册)的对象 ID,而不是服务主体(企业应用程序),它们是不同的。

$CustomKeyIdentifier = (Get-AzureADApplicationKeyCredential -ObjectId "<object-id>").CustomKeyIdentifier
$Thumbprint = [System.Convert]::ToBase64String($CustomKeyIdentifier)

在此处输入图像描述

于 2019-10-16T09:44:32.940 回答
1

尝试下面的 PS 命令以通过 Microsoft Graph API 获取证书指纹:

$clientId = "<your Azure AD App ID>"
$clientSec="<your Azure AD App Secret>"

$appObjId = "<object ID of the app that you want to query>"

$tenant = "<your tenant ID>"
$body=@{
    "grant_type"="client_credentials";
    "resource"="https://graph.microsoft.com/";
    "client_id"= $clientId;
    "client_secret" = $clientSec
}

$accessToken=(Invoke-RestMethod -Uri "https://login.windows.net/$tenant/oauth2/token" -Method POST -Body $body ).access_token

$keyCreds = Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/applications/$appObjId/keyCredentials" -Method Get -Headers @{"Authorization" = "Bearer $accessToken"}

$keyCreds.value.customKeyIdentifier

结果:我在门户网站上的证书: 在此处输入图像描述

查询结果: 在此处输入图像描述

请注意,确保您用于获取令牌的应用程序具有以下权限,以便它可以调用 Microsoft 图形 API 来查询您的应用程序:

在此处输入图像描述

于 2019-10-16T09:20:27.853 回答