我想与wso2 api manager实现服务器到服务器的通信,所以我的api可以被第三方客户使用,可以创建自己的应用程序并在我的api上订阅。此外,这些客户端应受特定资源集的限制 - 有一组组织ID,每个特定客户端只能访问某些id子集。我发现客户端密钥存储在WSO2AM_DB的IDN_OAUTH_CONSUMER_APPS表中。我可以附加到此数据库并从将实现clientId-to-organizationIds映射的单独服务中读取客户端ID,并且在调解器的帮助下我可以调用此服务,检查是否允许在url中指定组织标识,并在访问令牌中添加组织标识属性因此,如果允许组织,后端服务可以再次检查。但我不确定这是否正确。也许在wso2中有一些东西可以帮助没有这样的操作?
答案 0 :(得分:0)
此外,这些客户应受特定资源集的限制
正如您所知 - API管理器根据端点授权调用。资源(例如特定ID)本身应由后端服务授权。我不确定在API管理器上强制执行此级别的授权是合理的(我不是说它不可能,只是它可能不够灵活)。
也许wso2中有一些东西可以帮助没有这样的操作?
我建议遵循 - 向后端服务发送JWT token。后端服务应该进行授权(基于用户名,应用程序等),而不必硬件绑定到产品数据库。
链接文档还描述了如何实现自己的令牌生成器,因此您可以向jwt令牌添加其他声明(例如组织ID等)。