Azure AD:限制使用者对特定 Web API 的访问



我正在使用Microsoft Azure。我已经发布了几个网络API。每个都有身份验证/授权,以Azure Active Directory(AAD)为唯一提供商。我们有一个AAD租户。

消费者将成为合作公司的申请。对于每个消费者,我都在AAD中创建了一个应用程序注册。使用该应用程序注册的应用程序ID和密钥,我可以成功获取令牌并致电Web API(通过Postman进行了测试)。

我的问题是每个消费者凭据都可以访问每个API。我只想限制消费者对特定API的访问。例如,消费者可以访问API P和Q;消费者B可以访问API Q和R。有一些重叠和一些独特性。我一直在网上文档。他们对这种服务对服务的情况很少提及。我找不到与我的场景相匹配的示例代码。如何在AAD单人租户中强制执行消费者的API映射?

在服务对服务方案中,最简单的方法是在Web API端编写您自己的验证逻辑。

在Web API端获得访问令牌后,在访问令牌中检查客户端ID(appid索赔),如果不允许该客户端访问Web API,拒绝它并返回错误响应。

另一种方法是检查应用程序角色:

  1. 在您的Web API应用中,在清单中设置应用程序角色,例如:

    "appRoles": [
    {
      "allowedMemberTypes": [
        "Application"
      ],
      "displayName": "tester",
      "id": "9f29f99b-5c77-4fba-a310-4a5c0572e8ff",
      "isEnabled": true,
      "description": "read client app",
      "value": "tester"
    }  
    

    ]

  2. 在您的客户端应用程序中,在Azure Portal中注册,在Required permissions Blade中授予相关的应用程序许可。添加申请权限后,请不要忘记通过单击Grant Permissions按钮(使用Admin的帐户登录)来进行管理员同意。

  3. 在您的Web API代码中,在配置启动文件中的角色声明类型后,使用isInrole()或[授权]属性检查访问。

您可以参考该文档,该文档说明并显示了细节步骤。请参阅Configuring client application to request application roles of resource API节。

最新更新