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