【问题标题】:On OAuth (1.0a and 2.0) and Http Basic Auth关于 OAuth(1.0a 和 2.0)和 Http Basic Auth
【发布时间】:2013-07-15 15:15:34
【问题描述】:

我正在尝试找出在安全性方面的最佳选择对于可能(将来)与专用 Android 应用一起使用的 Web 应用程序。

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

请记住,当我提到 OAuth 时,我将 OAuth 1.0a 和 OAuth 2.0 视为不同的替代方案。

这是我的疑问:

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

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

3) 鉴于我不是资深的安全专家,OAuth 是否是一个合理的选择?

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

【问题讨论】:

    标签: security http authentication ssl oauth


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

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

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

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

    【讨论】:

    • 感谢您的帮助。关于第 2 点,由于我正在开发我的 自己的 应用程序(根本没有第三方),如果发送密码来代替令牌真的很重要吗?因为严格地说是“私人”场景,我仍然不相信 OAuth 会比 Basic Auth 更有用。无论如何,恶意用户 A 是否会窃取用户 B 的令牌,他仍然可以冒充 B 使用我的 Web 应用程序(或移动应用程序),能够完全(而不是更多)做他在基本身份验证保护环境中可以做的事情,因为用户/通行证只能用于此特定目的。对吗?
    • @Seether 不同之处在于,该用户可能在其他地方使用了相同的密码。因此,如果密码在某个地方被泄露,则该用户在其他服务中的帐户可能会处于危险之中。
    • @Seether,阻止 oauth-token 比阻止用户更容易。您可以在网站上提供一个页面,用户可以在其中查看她的 oauth 会话列表以及上次使用的时间、IP 地址和用于终止访问令牌的按钮。这个页面当然不应该通过 oauth 获得:)
    • 好吧,用户总是使用相同密码的坏习惯很重要。但实际上,这只是取决于用户的事情,所以我们不能在这里真正责怪 auth 方法(至少不能完全)。第二点听起来更有趣:所以通过使用 OAuth,我可以提供一个页面 - 就像 gmail 一样 - 我可以允许用户查看他们的会话并撤销它们。现在这很好,所以只偷了一个令牌(没有密码)只会让我保持会话活跃,直到被所有者杀死,并且无法创建一个新的。 B.A.是不可能的吗?
    • 使用 BasicAuth 登录名+密码是用户的凭据,因此泄漏最终会危及帐户
    猜你喜欢
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 2020-11-12
    • 2020-10-18
    相关资源
    最近更新 更多