方案:外部公开的API,连接到多个支持的Db。多个客户可以使用该API,显然他们只能访问其数据。过去,这是通过为每个客户/用户使用单独的帐户完成的,因此,每个帐户都需要在每个后端系统中使用正确的权限进行设置。
问题:我想使用Azure APIM。我不希望Azure APIM和后端Db中的每个用户都得到额外的维护。我想知道是否有人有其他想法或案例以其他方式实现了这一目标。同样,可以通过对一个表具有全部访问权限的一个帐户访问来构建API。
答案 0 :(得分:1)
要使用API,用户/客户必须在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
答案 1 :(得分:1)
我敢肯定有多种方法可以解决此问题,但我相信通常的方法是使用Application Roles。
我不认为这真的取决于Azure APIM,但是您可以利用OAuth 2.0 support至pre-authorize requests以及后端,根据传递的令牌中的声明,您可以允许/拒绝访问数据。
您的后端通常会通过对所有数据的完全访问权限来对不同的DB进行身份验证,而您的后端将承担确保只有具有正确声明的人才能访问数据的任务。