Android 中 Ktor 服务器身份验证的几个问题

Posted

技术标签:

【中文标题】Android 中 Ktor 服务器身份验证的几个问题【英文标题】:Several issues with Ktor server authentication in Android 【发布时间】:2021-06-22 18:12:35 【问题描述】:

minSdkVersion 25 上使用 io.ktor:ktor-auth:1.5.2 时,在尝试构建项目并添加 implementation 'com.google.guava:guava:27.0.1-android' 后,我得到“无法访问类 'com.google.common.util.concurrent.ListenableFuture'”到build.gradle 它又工作了,就像建议的here 一样。

但是,当我尝试生成 JWT 令牌时,JWTCreator.Builder.sign() 方法使用来自 org.apache.commons.codec.binary.Base64Base64.encodeBase64URLSafeString(),我收到以下错误:

java.lang.NoSuchMethodError: No static method encodeBase64URLSafeString([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' appears in /system/framework/org.apache.http.legacy.boot.jar)

除了手动覆盖整个 Ktor 类(这甚至不可能)之外,我还能做些什么吗?请注意,我已经添加了implementation 'commons-codec:commons-codec:1.15',但没有任何改变。

【问题讨论】:

【参考方案1】:

在 Android 上使用 JWTDecode.Android(即使是 Kotlin):

implementation "com.auth0.android:jwtdecode:2.0.0"

【讨论】:

没有任何变化,因为使用 org.apache.commons.codec.binary.Base64 的代码在 Ktor 内部。

以上是关于Android 中 Ktor 服务器身份验证的几个问题的主要内容,如果未能解决你的问题,请参考以下文章

来自 UserHashedTableAuth 的 Ktor 基本身份验证

Ktor 中的表单身份验证

在 KTor 客户端中更改身份验证凭据

Ktor websockets 身份验证

未找到 Ktor 会话

基本身份验证应在邮递员中响应 500(授权),但 401 Unauthorized 可以正常工作。使用 ktor intellij mongodb