Проверка PS512 JWT на Android не работаетAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проверка PS512 JWT на Android не работает

Сообщение Anonymous »

Я использую JWT по умолчанию, созданные https://jwt.io/. Один использует алгоритм RS512, а другой — алгоритм PS512. Я хочу проверить токен, используя предоставленный открытый ключ в моем приложении для Android. Вот мой градиент:

Код: Выделить всё

jsonwebtoken-api = { group = "io.jsonwebtoken", name = "jjwt-api", version = "0.12.6" }
jsonwebtoken-impl = { group = "io.jsonwebtoken", name = "jjwt-impl", version = "0.12.6" }
jsonwebtoken-json = { group = "io.jsonwebtoken", name = "jjwt-jackson", version = "0.12.6" }
bouncycastle-prov = { group = "org.bouncycastle", name = "bcprov-jdk15to18", version = "1.78.1" }
bouncycastle-bcpkix = { group = "org.bouncycastle", name = "bcpkix-jdk15to18", version = "1.78.1" }

Код: Выделить всё

    implementation(libs.jsonwebtoken.api)
runtimeOnly(libs.jsonwebtoken.impl)
runtimeOnly(libs.jsonwebtoken.json) {
exclude(group = "org.json", module = "json")
}
implementation(libs.bouncycastle.prov)
implementation(libs.bouncycastle.bcpkix)
MainActivity заменяет поставщика безопасности «BC» на:

Код: Выделить всё

    companion object {
init {
Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME);
Security.addProvider(BouncyCastleProvider())
}
}
Вот код для чтения открытого ключа (в целях тестирования хранится как локальная переменная):

Код: Выделить всё

    val publicKey:String = "..."
private fun stringToPublicKey(): PublicKey {
val parser = PEMParser(StringReader(publicKey))
val converter = JcaPEMKeyConverter()
val publicKeyInfo: SubjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(parser.readObject())
return (converter.getPublicKey(publicKeyInfo) as RSAPublicKey)
}
Вот код проверки токена:

Код: Выделить всё

val jwtPS512 = "..."
try {
val parser = Jwts.parser().verifyWith(stringToPublicKey()).build()
val test = parser.parse(jwtPS512)
Log.i("", "$test")
} catch (e: Throwable) {
Log.e("", "", e)
}
Вот ссылка на полный пример проекта: https://github.com/artkoenig/JWT-Test
Проверка работает для Алгоритм RS512, но для алгоритма PS512 получаю следующую ошибку:

Код: Выделить всё

io.jsonwebtoken.security.SignatureException: JWT signature does not match locally computed signature. JWT validity cannot be asserted and should not be trusted.
Пожалуйста, дайте мне знать, если я что-то пропустил.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»