- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在构建一个移动应用程序及其 API 服务器,其架构如下图所示。
我们将 WSO2 作为 Spring Boot API 服务器前面的 API 网关。我们使用 WSO2 API Manager 来限制谁可以调用 API。只有在我们的 WSO2 上注册并拥有正确的消费者 key 和 secret 的客户端才能通过 WSO2 调用 API,客户端首先调用 WSO2 的 token 端点以使用访问 token 交换消费者 key 和 secret ,然后调用所需的 API使用 header Authorization: Bearer <access token>
中的访问 token
我们有一个问题,我们不知道如何为消费者保密,因为安全审计禁止我们将 secret 存储在移动应用程序安装程序包中。
有些问题已经问过了
WSO2 API Manager - How does mobile app connect to API Manager?
WSO2 Api Manager OAuth2 DCR security in public native mobile app
但没有答案正确指出问题所在。他们中的大多数人被 oauth2 流程的复杂性误导了。
为了使问题具体清楚,请假设我们的手机没有用户登录。这个问题的目标是只允许受信任的移动应用程序通过 WSO2 调用 API。
请帮助建议这是否可能。或者我们别无选择,只能允许任何人调用 API。或者 WSO2 的消费者订阅功能根本就不是为直接从移动应用程序使用而设计的?
最佳答案
在做了一些研究之后,我发现了 2 个人们通常会做的选择。
将 API 分为 2 组。第一组是需要在没有用户登录的情况下使用的API,比如获取初始化数据的API,或者获取应用落地页数据的API。这些 API 设置为公开的,允许任何人在没有 clientId 和 secret 的情况下调用。 seconds 组包含需要 token 的安全 API。移动应用程序可以使用 Oauth2 PKCE 流程来交换具有用户身份证明的 token 。
混淆 clientId 和 secret 并将它们保存在移动应用安装程序包中。 API 仍然像以前一样分为 2 组。但是第一组需要客户端级别的token(oauth2客户端凭证类型),第二组需要用户级别的token(资源拥有者密码或者授权码类型)
我更喜欢选项 2。在我看来,我认为第一个选项没有多大意义。选择此选项的人可能只是为了绕过安全审核检查列表,不将 secret 存储在公共(public)客户端
,而不真正担心安全问题。这就像当您不相信您的 child 会安全地保管您家的 key 时,您决定从门上取下锁。
保护每个 API 并将 key 保存在客户端中。即使某些黑客可以设法找到 secret ,他也只能破解第一组的 API,您可以跟踪他使用的 clientId。您知道客户端的预期行为,因此很容易设置警报来检测来自客户端的恶意 Activity 并撤销 token 、重置密码并推出更复杂的混淆算法。
关于android - 使用WSO2作为移动应用程序的API网关时,如何安全地处理comsumer-key和secret,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59475608/
我正在使用 Siddhi [1] 的 Java 库,并且注意到检索和处理由 Siddhi 运行时生成的事件有相当大的延迟。尽管两个Siddhi事件可能具有时间差为X秒的Siddhi事件时间戳,但是在接
我阅读了网站上提供的文档,但没有太多关于如何连接到服务器并从 java 访问其 CEP 功能的信息。例如,它接受 POJO 作为事件模型还是只是 xml?我们可以从 Java 创建事件模型和查询吗?如
我是一名优秀的程序员,十分优秀!