gpt4 book ai didi

azure - 如何在测试代码中以用户身份登录 Azure Active Directory?

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

我是 Azure 新手,在学习 Azure Active Directory (AAD) 的所有功能方面遇到了一些困难,因此我希望您能为我解答一些问题。这是我已经做过的:

  • 我注册了一个网络应用程序,该应用程序充当资源提供者并在 API 管理服务背后提供不同的 API。

  • Web 应用程序在 AAD 中具有多个用户和角色。另外,在应用级别设置了更详细的权限。因此 AAD 无法控制我用户的所有权限。

  • 用户使用OAuth 2.0进行身份验证。实际上,这意味着如果新用户尝试登录我的应用程序,他会被重定向到 Microsoft 的登录页面,输入用户名和密码,然后从 Microsoft 的身份验证服务器获取 JWT token 。

现在我想做的是:

我想编写一个在我的构建服务器上运行的应用程序来测试用户权限。该应用程序必须使用 C# .NET Core 编写。现在我正在努力解决如何从我的代码中以用户身份登录,所以我的问题是:

如何以用户身份从代码登录到 AAD 并获取 JWT token 来测试用户权限?我可以仅使用用户名/密码来完成此操作,还是需要在 AAD 中注册我的测试应用程序?实现我的目标的最佳解决方案是什么?

提前谢谢

最佳答案

Juunas 的评论已经涵盖了大部分所需内容。只是在其后面添加更多细节。

  • 您可以使用MSAL (链接)编写访问您的 API 的 .NET Core 应用程序。
  • 在 MSAL 中,您需要使用 username password authentication (Resource Owner Password Credentials grant)获取 JWT token 。请切勿在您的测试应用程序之外使用此补助金。
  • 根据您的应用的配置方式,仅使用 API 的 clientId 就足够了。不过,最佳做法是注册一个单独的 native 应用。

一些可以帮助您的措辞:

  • ClientId:请求 token 的客户端应用程序的 ID。
  • 范围:您为其获取 token 的 API 范围。。应该已经在您的 API 中的某个位置进行了配置。通常带有 AppId URI。可能的示例可能如下所示:
    • https://<yourtenant>.onmicrosoft.com/<yourapi>/user_impersonation
    • https://<clientId-of-API>/.default
    • ...
  • 权限:您的 AAD,例如https://login.microsoftonline.com/yourtenant.onmicrosoft.com

来自 wiki 的密码授予代码示例(更多示例):

static async Task GetATokenForGraph()
{
string authority = "https://login.microsoftonline.com/contoso.com";
string[] scopes = new string[] { "user.read" };
PublicClientApplication app = new PublicClientApplication(clientId, authority);

try
{
var securePassword = new SecureString();
foreach (char c in "dummy") // you should fetch the password
securePassword.AppendChar(c); // keystroke by keystroke

result = await app.AcquireTokenByUsernamePasswordAsync(scopes, "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e08a8f85a0838f8e948f938fce838f8d" rel="noreferrer noopener nofollow">[email protected]</a>",
securePassword);
}
catch(MsalException)
{
// See details below
}

Console.WriteLine(result.Account.Username);
}

关于azure - 如何在测试代码中以用户身份登录 Azure Active Directory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54650885/

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