security - 在 OAuth(1.0a 和 2.0)和 Http Basic Auth

标签 security http authentication ssl oauth

我正在尝试找出在网络应用程序的安全性方面最好的选择,该应用程序可能(在未来)也可以与专用的 Android 应用程序一起使用。

然而,我经历过的可能选择是 OAuth(两条腿)和通过 TLS 的基本 Http 身份验证。

请记住,当我提到 OAuth 时,我同时考虑 OAuth 1.0a 和 OAuth 2.0,当然是作为不同的替代方案。

这是我的疑惑:

1) 首先,现在建立一个基于 OAuth 1.0a 的安全系统是否有意义?它是否应该被认为“太旧”,因此是一个完全错误的选择?

2) 我想不出一个现实世界的场景,其中 2-legged OAuth 显然是比 Http(S) Auth 更好的选择。我能从中获得哪些额外奖励?

3) 鉴于我不是经验丰富的安全专家,OAuth 会是一个合理的选择吗?

4) 是否存在可以使用的支持框架或其他第三方辅助工具,以便在更短的时间内和/或以更少的努力获得 OAuth 的安全可靠的实现,而不是仅仅试图完全弄清楚由他/她自己

最佳答案

  1. 这绝对有道理。我个人的意见是,OAuth 1.0a 应该仍然是首选解决方案,除非您完全确定您需要 OAuth 2。OAuth1 是一个严格定义的安全协议(protocol),OAuth2 是一个用于创建协议(protocol)的“框架”,其中一些安全性较低。

  2. 主要区别在于,使用 OAuth 时,您永远不会通过网络发送密码。此外,您的 android 应用程序不需要知道用户的密码。如果您不知道密码,就不能因为泄露​​密码而受到指责。

  3. OAuth 1.0a 是一个非常合理的选择。只需确保使用长(我的意思是 1K+ 长) secret 。 Secret 不随请求传输,因此不会占用带宽,但用于生成数字签名。

  4. 有。但由于您对 android 感兴趣,而我不是 android 专家,所以我会把它留给其他人。如果您单独提出这个问题,您将有更好的机会获得好的答案

关于security - 在 OAuth(1.0a 和 2.0)和 Http Basic Auth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17693515/

相关文章:

java - 如何在HTTP客户端库中返回JSON?

java - 如何将 SOAP 响应安全地存储在数据库中?

android - 无法再解密

HTTP 客户端超时和服务器超时

php - 在 Laravel Auth() 中通过电子邮件/电话号码登录

apache - 仅在访问特定域时使用 HTTP Auth

java - Spring Security 数据库授权

asp.net - 避免 ASP.NET 中的 session 劫持

javascript - 使用随机 header 的 HTTP(S) 请求安全性

python - 与 curl 一起工作,请求失败;如何修复我的请求代码?