我在Azure AD租户中注册了许多应用程序,其中许多应用程序的客户密钥已发布1年或2年。有没有办法在到期前获得警报,因为过期的密钥会导致中断。
答案 0 :(得分:1)
我们还可以查询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");
}
答案 1 :(得分:0)
目前,当客户机密即将到期时,没有开箱即用的警报机制。
您可以在Azure AD反馈条目中投票赞成此问题:Need email alert option when keys are about to expire
或者,您可以通过轮询图(目前是Azure AD Graph,最终是Microsoft Graph / / servicePrincipals在/v1.0/中)来构建自己的警报机制。
查询/servicePrincipals并过滤PasswordCredentials.EndDate和KeyCredentials.EndDate。
您需要进行过滤客户端,因为Graph还不支持对这些值进行过滤。