gpt4 book ai didi

azure - 如何使用 MSAL 正确请求 Azure 资源管理终结点范围?

转载 作者:行者123 更新时间:2023-12-02 23:28:35 25 4
gpt4 key购买 nike

所以我读到,如果您在某个范围内的资源 URI 末尾添加 .default,它将返回一个正确的 v1 token 。为 MSAL 设置 protectedResourceMap 时,范围到底应该是什么? 'https://management.azure.com/.default ' 似乎不起作用。 ' https://management.azure.com/user_impersonation 也没有'.

设置范围的正确方法是什么,以便在请求我们的应用程序同意时他们批准 Azure 管理 API?

最佳答案

使用两个斜杠,如下所示:

https://management.core.windows.net//.default

这是因为 ARM API 需要在其受众声明 (aud) 中使用斜杠,然后用斜杠将 API 名称与范围分开。

来源: https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/Adal-to-Msal

这是一个完整的示例:

void Main()
{
var tenantId = "<tenantId>";
var clientId = "<clientId>";
var clientSecret = "<clientSecret>";

var credentials = GetCredentials(tenantId, clientId, clientSecret);
Console.WriteLine(credentials);
}

public static async Task<AuthenticationResult> GetCredentials(string tenantId, string clientId, string clientSecret)
{
string authority = $"https://login.microsoftonline.com/{tenantId}/";
IConfidentialClientApplication app;
app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(new Uri(authority))
.Build();

IEnumerable<string> scopes = new List<string>() { "https://management.core.windows.net//.default" };
var result = await app.AcquireTokenForClient(scopes)
.ExecuteAsync();
return result;
}

LINQPad 中 AuthenticationResult 对象的屏幕截图: Screenshot of the AuthenticationResult object in LINQPad

示例代码来自此处: https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-netcore-daemon

关于azure - 如何使用 MSAL 正确请求 Azure 资源管理终结点范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54837001/

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