【发布时间】:2014-07-07 20:36:57
【问题描述】:
我正在使用 Bearer 令牌为我们的 Web API 2 RESTful API 实现授权服务器。为了提供一些上下文,我正在构建一个 MVC Web 应用程序以及一个 PhoneGap 移动应用程序(将部署到 iOS 和 Android),它们将使用 RESTful API。我已经对该主题进行了大量研究,并且了解我想为我的 MVC 应用程序使用 授权码 流程(因为客户端机密将被保密),但是,这是我的了解我必须为 PhoneGap 应用程序使用 implicit grant 流程,因为它是一个纯粹的客户端应用程序,因此假定它不能保存秘密。
话虽如此,我仍在为我对隐式授权流的安全含义的理解而争论不休。在浏览器中执行时,我理解它是有点安全的(通过验证重定向 uri、短期令牌等)。但是,由于 PhoneGap 将在其自己的浏览器实例中执行(因此通过我需要解析的哈希片段返回令牌),这如何将 API 锁定到仅我的 PhoneGap 客户端?
如何阻止恶意黑客简单地窃取 client_id(嵌入在 HTML/JS 中)并构建他们自己的 PhoneGap 应用程序(或任何其他应用程序)并简单地通过隐式授权/身份验证过程,从而欺骗“已批准”或“官方”PhoneGap 应用程序?这个问题似乎不是我的 API 特有的——这是否意味着所有实现隐式流的 API 都存在这个问题(包括大玩家,例如 Facebook、Twitter 等)?如何防止这种情况发生,这是否意味着我必须拒绝/不实施隐式流程?如果是这样,我如何从我的 PhoneGap 应用程序安全地使用 API?
谢谢!
【问题讨论】:
-
因为我已经在一个网站上实现了这一点,所以我想做的是为手机创建一个特殊的页面来注册/登录,然后使用他们可以使用的会话令牌将它们重定向回来采用。进一步的身份验证请求通过 SSL 发送,令牌作为 HEAD 或 BODY 的一部分是我想要做的。如果我真的实现它(保持真实),我会更新它作为答案。
标签: cordova oauth asp.net-web-api oauth-2.0 authorization