【问题标题】:Android WebView - JWT AuthenticationAndroid WebView - JWT 身份验证
【发布时间】:2018-07-13 07:44:50
【问题描述】:

我有一个 Android 应用程序,我正在从基本身份验证切换到 JWT,因此,除其他原因外,我不必在本地存储用户的密码。这适用于我的所有 API 请求,但我的应用程序的一部分使用 WebView 来显示托管在我的服务器上的自定义内容。此内容还需要身份验证,目前我使用 WebViewClient 类中的用户名/密码组合来提供凭据。现在我要去 JWT,我不再拥有这些凭据,只有令牌。有没有办法为WebViewClient 提供替代身份验证?我的代码是 Kotlin,但同样的原则也适用于 Java。

inner class WVClient : WebViewClient() {
    override fun onReceivedHttpAuthRequest(view: WebView, handler: HttpAuthHandler, host: String, realm: String) {
        // WHAT DO I DO HERE INSTEAD?
        handler.proceed(username, password)
    }
}

【问题讨论】:

  • onReceivedHttpAuthRequest 仅针对基本或摘要身份验证 see this answer 触发。使用 JWT,您必须自己确定页面何时需要授权。服务器期望如何接收令牌?传递查询字符串不是一个好主意,因此您可以将其添加为标头,因此您可以尝试将其添加到您自己的WebViewClientshouldInterceptRequest 中。

标签: java android kotlin android-webview jwt


【解决方案1】:

根据dewey's 对我的问题的评论,我考虑将身份验证标头添加到请求中,而不是等待站点呈现身份验证请求。在进行 URL 的初始加载时,我只是在“附加 HTTP 标头”可选参数中添加标头,而不是依赖 WebViewClient 的方法来拦截请求。

webView.loadUrl("https://...", mapOf("Authorization" to jwtToken))

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-03-18
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 2023-03-28
  • 2016-04-24
相关资源
最近更新 更多