如何在移动/网络客户端和后端之间进行完全信任的通信?

时间:2016-04-03 06:17:00

标签: spring web-services security ssl mobile

我有一个移动和网络应用程序来流式传输音乐。这是我的实际架构:

  • RESTful服务(Spring Boot)
  • Spring Security
  • 的OAuth2
  • 使用CA认证的域的HTTPS

问题是: 如何在我的移动客户端和后端之间进行专门的通信?(Web客户端和后端之间的相同内容)

我的建议是将问题分为两部分 - 创建两个网络服务

  1. 一个带有用户证书的移动应用程序后端(没有CRSF保护)。
  2. 网络播放器的一个后端(具有CRSF保护)仅接受来自网络播放器域的请求。
  3. 对于移动设备问题,

    我能够使用Fiddler通过代理拦截我的移动请求,解密HTTPS并获取URL,标头,令牌等重要信息。

    但我知道有一种方法可以避免在被其他CA拦截时拒绝请求,例如后端和移动应用之间的专门信任通信。我怎样才能为移动解决方案做到这一点?

    对于网络播放器问题,

    他的问题更大,因为浏览器会向任何人显示标题,网址和令牌。

    由于我无法像移动应用程序那样隐藏这些信息,因此我只能从网络播放器的域中提出我的后端接受请求。这种情况的最佳解决方案是什么?

    已更新

    反编译移动客户端比我想象的要简单。由于我无法保护/模仿密钥,令牌和网址,因此我建议限制每个用户在后端的令牌。但是我怎么能在网络播放器上做到这一点?我对任何人都有相同的标记(没有用户的身份验证)。

    我发现了关于反编译移动客户端的文档。 http://pt.slideshare.net/denimgroup/developing-secure-mobile-applications-17732256

1 个答案:

答案 0 :(得分:0)

我建议您使用asymmetric cryptography。您从服务器请求公钥,并加密所有后续通信。只有你的后端会理解你发送给它的是什么,因为它只有一个私钥来解密一条消息。

  

请注意,您的用户仍然可以提取未加密的数据   直接来自客户端内存。你没有真正的方法可以禁止这个!