在 WSO2 API 管理器的多个 API 版本中重复使用范围键?
Reuse scope-keys in multiple API-version in WSO2 API Manager?
我们使用 WSO2 API Manager 1.10.0 进行 API 管理。我之前设置了一个 API ,它通过范围到角色映射受到限制。现在我们必须处理这个 API 的多个版本(并非所有客户端都可以立即迁移到新版本),但似乎我不能重复使用相同的范围(范围键和范围名称)我已经限制以前的版本?
这似乎很奇怪?这是否意味着我需要为 API 的每个版本创建唯一的作用域到角色映射?这意味着使用 /default api 的订阅者在请求访问令牌时必须根据他们使用的 API 版本更新他们的范围名称?
这里应该用什么策略?我们通常使用 scope-key <API-Name>-<Restriction-Key>
创建范围。我现在应该使用 <API-Name>-<Version>-<Restriction-Key>
,当用户迁移时,他们需要在请求访问令牌到正确版本时更新他们的范围吗?
我真的希望我们的用户能够以某种方式切换到我们的 API 的新版本时简单地继续使用相同的范围,或者他们是否唯一地绑定到 [=22= 的特定版本]?
找到了这个问题的答案。
首先,如果使用发布者中的"create a new version"创建一个API的新版本,范围可以重复使用;但是一旦您尝试导入新的 swagger 规范,范围就会被删除并且不能在 "manage-phase".
下重复使用
我发现范围实际上是在 /_system/governance/apimgt/applicationdata/provider/<provider-name>/<api-name>/<api-version>/swagger.json
下存储库中存储的 swagger-document 中指定的。 swagger-document 有一个名为 "x-wso2-security" 的 属性,其中包括范围(在 "manage-phase" 期间由发布者读取)。可以向 swagger-document 添加范围(例如从以前的 API-version 复制 x-wso2-security 属性),保存资源并打开发布者,然后范围将出现在"manage-phase".
下使用
我认为这是 WSO2 开发团队在创建发布者时遗漏的东西,但令人高兴的是,可以通过如上所述进行一些手动工作来解决它。
我们使用 WSO2 API Manager 1.10.0 进行 API 管理。我之前设置了一个 API ,它通过范围到角色映射受到限制。现在我们必须处理这个 API 的多个版本(并非所有客户端都可以立即迁移到新版本),但似乎我不能重复使用相同的范围(范围键和范围名称)我已经限制以前的版本?
这似乎很奇怪?这是否意味着我需要为 API 的每个版本创建唯一的作用域到角色映射?这意味着使用 /default api 的订阅者在请求访问令牌时必须根据他们使用的 API 版本更新他们的范围名称?
这里应该用什么策略?我们通常使用 scope-key <API-Name>-<Restriction-Key>
创建范围。我现在应该使用 <API-Name>-<Version>-<Restriction-Key>
,当用户迁移时,他们需要在请求访问令牌到正确版本时更新他们的范围吗?
我真的希望我们的用户能够以某种方式切换到我们的 API 的新版本时简单地继续使用相同的范围,或者他们是否唯一地绑定到 [=22= 的特定版本]?
找到了这个问题的答案。
首先,如果使用发布者中的"create a new version"创建一个API的新版本,范围可以重复使用;但是一旦您尝试导入新的 swagger 规范,范围就会被删除并且不能在 "manage-phase".
下重复使用我发现范围实际上是在 /_system/governance/apimgt/applicationdata/provider/<provider-name>/<api-name>/<api-version>/swagger.json
下存储库中存储的 swagger-document 中指定的。 swagger-document 有一个名为 "x-wso2-security" 的 属性,其中包括范围(在 "manage-phase" 期间由发布者读取)。可以向 swagger-document 添加范围(例如从以前的 API-version 复制 x-wso2-security 属性),保存资源并打开发布者,然后范围将出现在"manage-phase".
我认为这是 WSO2 开发团队在创建发布者时遗漏的东西,但令人高兴的是,可以通过如上所述进行一些手动工作来解决它。