gpt4 book ai didi

azure - 使用 .NET Core(API 和 HTTP)创建 Azure AD 应用程序和服务主体

转载 作者:行者123 更新时间:2023-12-03 05:53:24 24 4
gpt4 key购买 nike

为了继续以编程方式创建 Azure 应用程序(从 https://stackoverflow.com/a/44753728/1332416 继续),我有一个获取 subscriptionIDtenantId 的核心,如下所示,但是我不知道如何在本地创建应用程序及其关联的服务主体。这基本上就是在 PowerShell 中使用 New-AzureRmADApplicationNew-AzureRmADServicePrincipal 的地方。这个问题在 https://stackoverflow.com/a/44631758/1332416 得到了部分回答。 ,但看起来 .NET Core 可能是这里出现一些问题的原因,因为找不到类型。

更具体地说,我的代码如下

string resource = "https://management.core.windows.net/";
string clientId = "1950a258-227b-4e31-a9cf-717495945fc2";
string userName = "<replace>";
string password = "<replace>";
string apiVersion = "2016-06-01";

using(var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string tokenEndpoint = "https://login.microsoftonline.com/common/oauth2/token";
var body = $"resource={resource}&client_id={clientId}&grant_type=password&username={userName}&password={password}";
var stringContent = new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded");
var response = await client.PostAsync(tokenEndpoint, stringContent).ConfigureAwait(false);
var result = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

JObject jobject = JObject.Parse(result);
var token = jobject["access_token"].Value<string>();

client.DefaultRequestHeaders.Add("Authorization", $"bearer {token}");
var subcriptions = await client.GetStringAsync($"https://management.azure.com/subscriptions?api-version={apiVersion}").ConfigureAwait(false);
var tenants = await client.GetStringAsync($"https://management.azure.com/tenants?api-version={apiVersion}").ConfigureAwait(false);
Console.WriteLine(subcriptions);
Console.WriteLine(tenants);

//We have the SubscriptionID, TenantId and the token to
//the subscription here. How to do New-AzureRmADApplication and New-AzureRmADServicePrincipal with the application ID here? Specifically I'm considering to use a certificate thumbrint if it matters.
//var subscription = "... from subscriptions...";
//var tenantId = "... from tenants...";
}

最佳答案

您可以获取访问 token 并调用 Azure AD Graph API 来创建应用程序和服务主体。 (Microsoft Graph API 也允许这样做,但只能通过 beta 端点)

您可以在此处找到应用程序实体文档:https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/entity-and-complex-type-reference#application-entity

要获取 token ,您的应用需要在 Azure AD 中为 Azure AD Graph API 授予必要的委派/应用权限。

然后,当您获取 token 时,使用 https://graph.windows.net 作为资源。

然后您应该能够使用如下正文 POST 到 https://graph.windows.net/tenant-id/applications?api-version=1.6:

{
"displayName":"Test app",
"identifierUris": [
"https://mytenant.onmicrosoft.com/testapp"
],
"homePage":"http://localhost"
}

将 URL 中的tenant-id替换为您的租户 ID。

这就是创建的应用程序,在响应中您将获得创建的应用程序。

从中获取 appId 字段,您将需要它来创建服务主体。

然后向:https://graph.windows.net/tenant-id/servicePrincipals?api-version=1.6 发送帖子,正文如下:

{
"appId":"eb167a6d-aaaa-aaaa-aaaa-46e981be37fa"
}

这应该创建相应的服务主体。

关于azure - 使用 .NET Core(API 和 HTTP)创建 Azure AD 应用程序和服务主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44863284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com