【问题标题】:Authentification for Android without third-party library没有第三方库的安卓认证
【发布时间】:2021-11-16 05:11:51
【问题描述】:

有没有什么方法可以在不使用 Retrofit 以外的第三方库的情况下使用 OAuth 2 进行身份验证?

【问题讨论】:

    标签: android oauth-2.0


    【解决方案1】:

    如果您谈论的是基于 Bearer 令牌的身份验证,您只需在请求中添加“授权”标头即可。

    如果你使用 HttpURLConnection

    URL url = new URL("http://www.my-back-end.com/");
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    urlConnection.setRequestProperty("Authorization", "Bearer yourToken");
    urlConnection.setRequestMethod("POST"); // Can be GET or something else
    
    try {
         InputStream in = new BufferedInputStream(urlConnection.getInputStream());
         parseResponse(in);
    } finally {
        urlConnection.disconnect();
    }
    
    

    【讨论】:

      【解决方案2】:

      鼓励移动应用满足RFC8252 中的要求,其中最重要的两个是:

      • 用户通过系统浏览器登录,因此应用永远不会看到密码。在 Android 上,最用户友好的方式是使用 Chrome 自定义标签,就像 Gmail 和其他安全应用所使用的那样。

      • 使用基于标准的授权代码流 (PKCE),包括各种安全检查和棘手的 HTTP 语言。

      您可以自己编写代码,但 Retrofit 基于 JSON,OAuth 消息基于浏览器重定向和表单 URL 编码的帖子。

      推荐的 Android 解决方案是使用 AppAuth 库来实现这些要求 - 我的 blog post 展示了它的外观并让您能够快速运行工作应用程序。不过,完整的解决方案并不是一项快速的工作,可能需要与利益相关者进行讨论。

      实施 OAuth 后,用户体验有潜在的好处,例如使用 WebAuthn 进行安全无密码登录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 2018-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-11
        • 2017-03-11
        相关资源
        最近更新 更多