gpt4 book ai didi

api - 使用客户端凭据流以编程方式在 Azure AD 中添加应用程序

转载 作者:行者123 更新时间:2023-12-04 08:23:13 24 4
gpt4 key购买 nike

为了与 Azure API 管理一起使用,我尝试以编程方式将应用程序添加到 Azure Active Directory (AAD),在我的例子中是使用 Graph API。

我的场景如下:为了保护我想要使用 Azure API 管理进行管理的 Web API,我想利用 AAD 的 OAuth 功能来完成有关身份验证和颁发 JWT token 的繁重工作,然后只需使用验证-jwt 策略,用于验证 Azure API 管理中的一切正常。这样做的好处是我可以或多或少地在后端服务中省略身份验证。

只要我在 Azure AD 中为消费 Web 应用程序创建了一个应用程序,就可以正常工作,但这必须从 Azure 门户手动完成; Azure APIm 不会自动执行此操作。

现在,我正在尝试自动完成工作:我想将对 APIm 中的 API 的订阅委托(delegate)给我正在编写的其他一些 Web 应用程序,然后我想利用 Graph API 创建一个应用程序在 Azure AD 中并授予 API 应用程序权限。

我尝试做的第一件事是让第三个应用程序(我的服务应用程序)拥有对 Azure AD 中的 Windows Azure Active Directory 应用程序的完整应用程序权限;这让我的应用程序可以使用 Graph REST API 访问 AAD。我设法使用 client_credentials 授予(来自 login.microsoft.com)获取访问 token ,但此 token 不允许我在 https://graph.windows.net 上执行 POST/(我的 AAD ID)/applications?api-version=1.5:

    {
"odata.error": {
"code": "Authorization_RequestDenied",
"message": {
"lang": "en",
"value": "Insufficient privileges to complete the operation."
}
}
}

我发现 ( https://msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-permission-scopes ),即使我授予 Directory.ReadWrite.All 权限,应用程序(仅限应用程序)也将无法创建或更新应用程序:

Note: Specifically excludes create or update for entities not listed above. This includes: Application, Oauth2PermissionGrant, AppRoleAssignment, Device, ServicePrincipal, TenantDetail, domains, etc.

我尝试的下一件事是资源所有者密码授予 (grant_type=password),另外传递我自己的凭据,以便我可以在 Graph API 中模拟自己。现在,我对 applications 端点的 POST 成功了。

我的根本问题是:我是否可以向我的应用程序授予足够的权限,以便我可以使用客户端凭据流(而不是代表用户运行的任何流)以编程方式添加应用程序?如果是这样,它是如何完成的?

最佳答案

对不起,唐。我们目前没有任何可用于创建应用程序或服务主体或创建任何 oauth2 权限授予(或您在上面通过 Directory. 提到的任何其他实体)的客户端凭据流(仅限应用程序)的权限范围。读写。所有权限)。我们正在开发额外的仅限应用程序的权限,以便您能够实现此场景,但我没有可以给您的预计到达时间。

如果您使用应用程序+用户(代码流)并授予应用程序 Directory.AccessAsUser.All 权限,则此操作应该是可能的 - 只要有用户使用您的应用程序并且该他们是租户管理员。不确定这是否是您可以接受的解决方法(我猜这与您在密码流程中使用的方法类似 - 尽管我建议您使用此处的代码流程)。

更新:我们为 AAD Graph 添加了一些新的仅限应用程序的权限。 Application.ReadWrite.OwnedBy(允许应用程序创建/拥有另一个应用程序 - 但仅更新它创建的应用程序 - 它无法触及它不拥有的任何其他应用程序)和 Application.ReadWrite.All (其中允许应用程序创建/管理租户中的所有应用程序)。看来第一个比较合适。您可以在 Azure 门户中看到这些显示的 AAD Graph resource .

关于api - 使用客户端凭据流以编程方式在 Azure AD 中添加应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34762918/

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