【问题标题】:How to get thumbprint of the certificate associated with a service principal using Powershell?如何使用 Powershell 获取与服务主体关联的证书的指纹?
【发布时间】:2020-02-12 21:54:44
【问题描述】:

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

我尝试了Get-AzureRmADServicePrincipalCredentialGet-AzureRmADSpCredentialGet-AzureADServicePrincipalKeyCredential 命令,但它们返回Key Identifier 而不是指纹。

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

【问题讨论】:

    标签: azure powershell certificate azure-powershell service-principal


    【解决方案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 来查询您的应用:

    【讨论】:

      【解决方案2】:

      正如@Stanley Gong 所说,您可以使用 MS Graph 来获取它。

      还有一种方法,试试下面的命令,$Thumbprint就是你想要的。

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

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

      【讨论】:

      • 感谢这个工作,也更容易。对我来说,它也适用于企业应用程序的对象 ID。
      猜你喜欢
      • 2018-10-30
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 2016-12-18
      相关资源
      最近更新 更多