【发布时间】:2019-01-23 08:29:46
【问题描述】:
我一直在使用 Azure fluent 管理 API (https://github.com/Azure/azure-libraries-for-net),并在 .NET Core 中取得了一些成功。
但是,我想提示用户输入一些 Microsoft 帐户的凭据。这些凭据可以访问一个或多个 Azure 租户/订阅,因此我希望能够使用结果来浏览和管理那里的资源。
这与我认为 Azure Data Studio 所做的非常接近:您可以输入一些 Azure 凭据,您的资源将出现在应用程序中。
我正在尝试了解解决此问题的最佳方法。当您谈论 Azure AD 应用程序注册时,似乎有十亿个网站,但我还没有找到一个富有成效的特定搜索查询。我知道我可以注册应用程序,获取客户端 ID 和客户端密码。我知道我可以将其设置为可供当前租户或所有租户中的组织帐户使用。
我可以将“Azure 服务管理(委派权限:user_impersonation)”权限添加到我的应用程序 API 权限部分,但下一步是什么?
如果我使用Microsoft.Identity.Client(如https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-netcore-daemon),我会遇到一些问题:
-
AcquireTokenForClientAsync不会提示用户 - 我猜是因为它正在获取应用程序以自己的权限执行操作的令牌? -
AcquireTokenOnBehalfOfAsync想要 JWT .. 太棒了!我会通过我从AcquireTokenForClientAsync得到的那个!不,AADSTS70002: Error validating credentials. AADSTS500137: The token issuer doesn't match the api version: A version 1 token cannot be used with the v2 endpoint。 - 我不知道我想要什么范围。
https://management.azure.com/user_impersonation显然无效..https://management.azure.com/.default有效,但对吗?这是我在网上为 Graph API 范围找到的一个猜测,是前者和.default后缀的组合。有这方面的文档吗? - 我最终获得了 JWT 和租户 ID。我找不到将 JWT 与 Fluent 管理 API 结合使用的方法。我的帐户(例如)与 3 个租户或 5 个不同的租户/目录相关联 - 那么我该如何选择?
这正是我尝试过的,合适的路线可能是不同的。总而言之:我希望 .NET Core 控制台应用程序请求用户凭据,然后访问他们有权访问的 Azure 资源,以便执行一些资源管理。
【问题讨论】:
标签: azure asp.net-core .net-core azure-active-directory