Azure API 管理 - 与底层服务进行身份验证和授权同步
Posted
技术标签:
【中文标题】Azure API 管理 - 与底层服务进行身份验证和授权同步【英文标题】:Azure API Management - Authenticate and Authorization sync with underlying services 【发布时间】:2021-05-06 13:28:01 【问题描述】:我是 Azure API 管理的新手,很高兴收到有关我的实施的建议和建议。
我正在开发一个 B2B Api 通道,供第 3 方通过 API 管理 (APIM) 网关调用我的服务。在 APIM 开发人员门户上,我可以加入新客户端并生成 API 密钥。我的难题是如何最好地弄清楚谁在调用底层服务?
我已经考虑将 APIM 中生成的 API 密钥添加到数据库中,底层服务将调用该数据库进行身份验证,但是,实施将是手动的,并且当第 3 方客户端转到 APIM 并重新生成新的 API 密钥。
我想要的是一种在 APIM 和底层服务之间自动同步授权和身份验证的解决方案。
【问题讨论】:
底层服务是什么意思? @Sajeetharan 它的服务被 API 管理抽象出来 【参考方案1】:由于 API 密钥可以替换,因此您最好依靠 ID 来识别客户端。
您可以在标头中将客户端 ID 传递给后端:https://***.com/a/42277313/2579733
现在如何将 APIM 的客户端 ID 与后端的客户端 ID 关联起来?
如果只有少数客户端,您可以手动更新后端数据库中的关联。如果您可以使用客户的电子邮件来连接 APIM 客户端和您的后端客户端,那就更容易了(大功告成)。
如果您需要注册许多客户并且手动方法不可行...一种方法是使用Delegated Authentication:
委托允许您使用现有网站来处理开发人员登录/注册和订阅产品,而不是使用开发人员门户中的内置功能。它使您的网站能够拥有用户数据并以自定义方式执行这些步骤的验证。
我从未使用过它,但您似乎可以将创建新客户端的责任转移到后端服务(由您开发)。
通过这种方式,您可以访问客户电子邮件,生成 ID,并可以根据需要将 ID 关系存储在后端。
【讨论】:
感谢@Max Ivanov。这就是我想要的。以上是关于Azure API 管理 - 与底层服务进行身份验证和授权同步的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Azure API 管理设计微服务架构中的身份验证和授权策略?
如何将包含基本身份验证的 Azure API 应用程序导入 API 管理