Azure APIM 数据级别身份验证 - 人们如何实现这一点?

Azure APIM Data Level Authentication - How do people accomplish this?

场景:外部暴露API,连接到多个支持的数据库。多个客户可以使用 API,他们显然应该只能访问他们的数据。过去,这是通过每个 customer/user 的单独帐户完成的,因此每个帐户都需要在每个后端系统中设置正确的权限。

问题:我想使用 Azure APIM。我不想为 Azure APIM 和后端 Dbs 中的每个用户进行额外维护。我想知道是否有人有任何想法或案例以不同的方式完成此任务。此外,API 可以构建为通过一个帐户访问并具有对表的所有访问权限。

为了使用 API,user/customer 必须在 Developer Portal 注册并获得对给定 API 的 订阅 关联键 。所以你必须验证它们。当你通过 Azure API 管理发布 API 时,使用订阅密钥保护对这些 API 的访问是很容易和常见的。需要使用已发布的 API 的客户端应用程序在调用这些 API 时必须在 HTTP 请求中包含有效的 订阅密钥 https://docs.microsoft.com/en-us/azure/api-management/api-management-subscriptions

Developer Portal 支持不同的身份验证机制,包括 Azure AD。因此,如果您计划使用 Azure AD 对两个门户进行身份验证,则需要相应地进行配置。 https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-aad

我敢肯定有不同的方法可以解决这个问题,但我认为一种常见的方法是使用 Application Roles.

我不认为这真的依赖于 Azure APIM,但您可以利用 OAuth 2.0 support to pre-authorize requests 并且在您的后端,根据传递的令牌中存在的声明,您可以 allow/deny 访问数据。

您的后端通常会向不同的数据库进行身份验证,因为它本身具有对所有数据的完全访问权限,并且您的后端将负责确保只有拥有正确声明的人才能访问数据。