首页 > 解决方案 > 如何使用 Azure App Restration 的 App Roles 来控制 Azure Enterprise 应用程序中的访问

问题描述

我有一个连接到 Azure 注册应用程序的 WPF 桌面应用程序。在该注册应用程序中,我创建了应用程序角色。然后,在 Azure 企业应用程序中,我添加了一个用户,该用户具有在应用程序注册中创建的应用程序角色之一。但是,我不知道如何使用这个应用角色。我似乎无法从身份验证期间返回的 JWT 令牌访问角色,也似乎无法使用该角色来修改 Azure 中的访问权限。

如何使用应用角色修改访问权限?

标签: azure-active-directory

解决方案


首先,您的 WPF 应用程序不会根据您的描述调用任何 API(官方 API 或您自己的 Web API)。

并且您在代表您的 WPF 应用程序的应用程序注册中定义应用程序角色。尽管这里没有服务端应用程序,但我们可以将其称为客户端应用程序。

所以在这种情况下,app 角色应该存在于id token (not access token)中。

您需要解析代码中的 id 令牌并找到应用角色,然后对其进行验证。


还有另一种情况,您实际上是在调用某种 API,但您在帖子中没有提及。

在这种情况下,我认为您想从 access token获取并验证 app 角色。我们需要在应用注册中定义代表服务端应用的应用角色。

又是两种情况。

一种是您正在调用官方 API,例如 Microsoft Graph API。这种情况不允许您在服务端设置应用角色,因为我们无权更改官方 Microsoft Graph 应用注册。您需要利用上面介绍的 id 令牌中的应用程序角色。但通常我们不会像这样控制权限,因为 Microsoft Graph 有自己的权限控制方法。

第二个是您正在调用托管在 Azure 上的自己的 Web API。我们称之为 AAD 保护的 Web API。在这种情况下,您需要通过以下受保护的 Web API 创建一个代表您的 Web API 的应用程序注册:应用程序注册并在此应用程序注册中定义应用程序角色,并在与此应用程序注册关联的企业应用程序中分配应用程序角色。

之后,您可以在访问令牌中获取应用角色并通过以下受保护的 Web API 验证它们:验证范围和应用角色


尽管我已经解释了所有这些情况,但这可能无法解决您的问题。

看起来你的情况是第一个。您可以先在https://jwt.ms中解码您的 id 令牌以确定应用角色是否存在。


推荐阅读