通过Graph API添加的App Registration密钥未在Azure门户显示
问题:通过Graph API生成的应用注册密钥在Azure门户不可见
我有一个Azure Function,通过Graph API在Azure AD中重新生成各类应用注册(App Registration)的密钥。调用的接口如下:
POST https://graph.microsoft.com/v1.0/servicePrincipals(appId='{someAppId}')/addPassword { "passwordCredential": { "displayName": "Password friendly name" } }
接口返回200 OK:
{ "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.passwordCredential", "customKeyIdentifier": null, "displayName": "Password friendly name", "endDateTime": "2026-01-30T10:16:31.9513536Z", "hint": "XCE", "keyId": "{redacted}", "secretText": "{redacted}", "startDateTime": "2024-01-30T10:16:31.9513536Z" }
新生成的密钥可正常使用,但在Azure门户的密钥列表中无法看到该密钥。这是一个已知问题,但我未找到解决方案。
更新:C#编程实现代码示例
若要通过C#编程实现该功能,可参考以下代码:
var applications = await GetAppRegistrationsAsync(log, filterCriteria, graphServiceClient); foreach (var application in applications) { var requestBody = new AddPasswordPostRequestBody { PasswordCredential = new PasswordCredential { DisplayName = "Secret Name", //StartDateTime = DateTimeOffset.UtcNow, //EndDateTime = DateTimeOffset.UtcNow.AddYears(1) // Set expiration as needed } }; var resultApp = await graphServiceClient.Applications[$"{application.Id}"].AddPassword.PostAsync(requestBody); }
private static async Task<IEnumerable<Application>> GetAppRegistrationsAsync(ILogger log, string filterCriteria, GraphServiceClient graphServiceClient) { try { var applications = await graphServiceClient .Applications .GetAsync(requestConfiguration => { requestConfiguration.QueryParameters.Filter = filterCriteria; }); // var servicePrincipals = await _graphServiceClient.ServicePrincipals.GetAsync( x => x.QueryParameters.Filter ); return applications is { Value: { } } ? applications.Value : Enumerable.Empty<Application>(); } catch (Exception e) { Console.WriteLine(e); throw; } }
内容的提问来源于stack exchange,提问作者tonycdp
相关产品推荐
相关产品推荐

