簡體   English   中英

在 Azure 應用程序注冊中用證書替換密碼

[英]Replacing secret with certificate in Azure app registration

我目前正在使用帶有 Azure 應用程序注冊的客戶端密碼來從應用程序服務訪問 Azure 媒體服務。 我想用證書替換客戶端密碼,因為證書會持續更長時間。 我已成功生成證書並將其上傳到應用程序注冊。

使用客戶端密碼似乎很簡單。 我為應用程序注冊客戶端 ID、應用程序注冊客戶端密碼和租戶 ID 創建環境變量(在應用程序服務配置或 local.settings.json 中),然后使用以下代碼:

private async Task<ServiceClientCredentials> GetCredentialsAsync(string aadClientId, string aadSecret, string aadTenantId)
{

    ClientCredential clientCredential = new ClientCredential(aadClientId, aadSecret);
    return await ApplicationTokenProvider.LoginSilentAsync(aadTenantId, clientCredential, 
     ActiveDirectoryServiceSettings.Azure);
}

如何更改此代碼以使用證書?

我嘗試在我的環境中重現相同的內容並得到如下結果:

我創建了一個Azure AD 應用程序並上傳了一個證書:

在此處輸入圖像描述

要使用證書生成訪問令牌,您可以在app.settings文件中聲明以下參數:

"AzureAd": {
"Scope":"https://graph.microsoft/.default",
"Instance":"https://login.microsoftonline.com/",
"Domain":"XXX.onmicrosoft.com",
"TenantId":"YourTenantID",
"ClientId":"ClientID",

"ClientCertificates": [
{
"SourceType":"KeyVault",
"KeyVaultUrl":"https://xxx.vault.azure.net",
"KeyVaultCertificateName":"certName"
}
]
},

您可以參考damienbod的這篇博客,詳細了解如何生成訪問令牌。

我嘗試使用如下參數在 Postman 中生成訪問令牌

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:clientId
client_assertion_type:urn:ietf:params:oauth:client-assertion-type:jwt-bearer
scope:https://graph.microsoft.com/.default
grant_type:client_credentials
client_assertion:client_assertion

在此處輸入圖像描述

參考:

帶有 Nicola Delfino 證書的 Azure AD OAuth 客戶端憑據流

使用 christosmatskas 證書調用 MSGraph 的應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM