我开发了一个 Web 应用程序,可以在本地计算机上成功执行 PowerShell 脚本。但是,在将应用程序部署到 Azure 应用服务时,我遇到了错误,表明 PowerShell 命令未执行。尽管我付出了努力,但我找不到任何用于以编程方式创建应用程序注册和添加权限的 C# 代码示例。
场景1:在Microsoft Entra ID(AAD)中创建应用程序注册。
场景 2:更新权限、身份验证类型、将所有者添加到上面创建的应用程序注册中。
本质上,我的目标是完成以下任务:
以下脚本用于创建应用程序注册
$appName = $PartnerName+$PartnerAppSuffix
$redirectUris = @("https://mscloud.onmicrosoft.com/$appName")
$secretName = "secretKey"
$App = New-AzADApplication -DisplayName $appName `
-ReplyUrls $redirectUris `
-Homepage "https://mscloud.onmicrosoft.com/$appName" `
-IdentifierUris "https://mscloud.onmicrosoft.com/$appName" `
-Web @{
ImplicitGrantSetting = @{
EnableAccessTokenIssuance = $true
EnableIdTokenIssuance = $true
}
}
# Create a new service principal for the app
$ServicePrincipal = New-AzADServicePrincipal -ApplicationId $App.AppId
我正在寻找 C# 代码片段,这些代码片段有助于以编程方式创建应用程序注册以及添加权限和所有者。
我同意@Tiny Wang,您可以利用Microsoft Graph API来创建应用程序并分配权限:
using Microsoft.Graph;
using Azure.Identity;
using Microsoft.Graph.Models;
class Program
{
static async Task Main(string[] args)
{
var scopes = new[] { "https://graph.microsoft.com/.default" };
var clientId = "ClientID";
var tenantId = "TenantID";
var clientSecret = "ClientSecret";
var options = new ClientSecretCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
};
var clientSecretCredential = new ClientSecretCredential(
tenantId, clientId, clientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
// Create the application with required permissions
var requestBody = new Application
{
DisplayName = "testrukcapp",
RequiredResourceAccess = new List<RequiredResourceAccess>
{
new RequiredResourceAccess
{
ResourceAppId = "00000003-0000-0000-c000-000000000000",
ResourceAccess = new List<ResourceAccess>
{
new ResourceAccess
{
Id = Guid.Parse("a154be20-db9c-4678-8ab7-66f6cc099a59"),
Type = "Scope",
},
new ResourceAccess
{
Id = Guid.Parse("14dad69e-099b-42c9-810b-d002981feec1"),
Type = "Scope",
},
},
},
},
};
try
{
var result = await graphClient.Applications.PostAsync(requestBody);
Console.WriteLine("Application created successfully!");
Console.WriteLine($"Application ID: {result.Id}");
}
catch (Exception ex)
{
Console.WriteLine($"Error creating application: {ex.Message}");
}
}
}
Microsoft Entra ID 应用程序已成功创建,具有如下权限:
注意:您用于身份验证的应用程序必须被授予
Application.ReadWrite.All
应用程序类型权限。
user.read
权限以创建服务主体。参考: