2017-05-19 141 views
0

我在Azure AD Tenant中註冊了很多應用程序,其中許多應用程序都有一兩年的客戶端密鑰。有沒有辦法在到期之前得到警報,因爲過期的密鑰會導致中斷。客戶端密鑰到期警報

+1

相關反饋項目:https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/9392007-need-email-alert-option-when-keys-are-about- to-exp – BenV

回答

0

在這個時候,沒有開箱即用的機制來提醒客戶機密何時到期

您可以投票給這要求在Azure的AD反饋詞條:Need email alert option when keys are about to expire

另外,你可以建立通過查詢自己的告警機制圖形(目前在Azure AD圖和最終的Microsoft Graph一次/ servicePrincipals在/v1.0/中)。

查詢/servicePrincipals並過濾PasswordCredentials.EndDate和KeyCredentials.EndDate。

因爲Graph不支持對這些值進行過濾,所以您需要過濾客戶端。

+0

謝謝,您是否有示例代碼?另外,這可以通過App Auth流程中的無頭程序完成嗎? –

0

我們也可以查詢application得到密鑰的結束日期。以下是使用客戶端憑據流通過Azure Graph客戶端進行參考的代碼示例。並且請確保您已授予此API使用客戶端憑證流程的Directory.Read.All權限。

var graphResourceId = "https://graph.windows.net"; 
var appId= ""; 
var appObjectId = ""; 
var secret = ""; 
var clientCredential = new ClientCredential(appId,secret); 
var tenantId = "xxx.onmicrosoft.com"; 
AuthenticationContext authContext = new AuthenticationContext($"https://login.microsoftonline.com/{tenantId}"); 
var accessToken = authContext.AcquireTokenAsync(graphResourceId, clientCredential).Result.AccessToken; 

Uri servicePointUri = new Uri(graphResourceId); 
Uri serviceRoot = new Uri(servicePointUri, tenantId); 

ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, async() => await Task.FromResult(accessToken)); 

var app = activeDirectoryClient.Applications.GetByObjectId(appObjectId).ExecuteAsync().Result; 

foreach (var passwordCredential in app.PasswordCredentials) 
{ 
    Console.WriteLine($"KeyID:{passwordCredential.KeyId}\r\nEndDate:{passwordCredential.EndDate}\r\n"); 
} 
相關問題