Как получить jwt токен
В приложении можно авторизоваться через google . После автаризации в kakaotalk, клиент получает токен и другие параметры: И казалось бы все хорошо, но тут же следующем запросом идет авторизация на сервер приложения, в котором передается JWT токен (X-Access-Token).
Насколько я знаю токен подписывается секретным ключом и поэтому его нельзя сuенерировать на клиенте, но запросов для генерации jwt на сервер не было, тогда как генерируется токен?
Ответы (1 шт):
Я думаю секретный ключ на то и секретный чтобы его нельзя было получить. Посему я думаю у вас есть два выхода:
- Найти решение без генерации jwt токена - допускаю что у вас где-то проблема в взаимодействии с сервером. Не могли люди пишущие данный сервис не предусмотреть работу клиента в их системе. Клиент никогда не занимается генерацией ключей доступа к серверу, это не его задача и архитектурно серверу придется заранее знать секретный ключ чтобы сверять то что вы закодировали и то что он должен ожидать. Вот пример декодирования токена:
вот инструмент для такого. Чтобы получить информацию например из jwt токена (то что находится в правой стороне таблички на скрине) можно использовать такой вариант:
private fun decodeToken(jwt: String): String {
val parts = jwt.split(".")
return try {
val charset = charset("UTF-8")
val payload = String(Base64.getUrlDecoder().decode(parts[1].toByteArray(charset)), charset)
payload
} catch (e: Exception) {
"Error parsing JWT: $e"
}
}
и дальше использование метода:
val mDecode = decodeToken(строка_с_вашим_токеном)
val sid = JSONObject(mDecode).getString(название_поля_нужного_вам)
но так вы секретную часть как вы понимаете не получите :(
- Ну и второй вариант решения проблемы - связаться с разработчиками сервиса (если вы не делаете ничего противозаконного) и спросить у них апи для работы или документацию.
Я бы вам советовал изучить как именно происходит авторизация, где берется токен, может там какие-то запросы раньше проходят. Я очень сильно сомневаюсь что вам нужно генерировать токен, либо придется где-то найти ключ для его создания.
