Как получить доступ к токену JWT и обработать запрос? - PullRequest
0 голосов
/ 02 июня 2019

Мне дали проект веб-API весенней загрузки.Существует приложение-флаттер, которое отправит токен jwt в качестве запроса, и API должен получить значение «ticket» из полезной нагрузки, а затем проверить базу данных и отправить необходимые данные.Я совершенно новичок в этой области, но у меня нет выбора, кроме как завершить его.

Я хотел упростить вопрос, просто приняв токен и попытавшись расшифровать его и получить значение "ticket".Но я не смог этого сделать, так как не смог получить токен с самого начала.Аутентификация выполняется другим API, который предоставляет токен jwt приложению флаттера.Затем приложение флаттера отправит этот токен в любом запросе на мой API.У меня есть пример базы данных с необходимыми данными, и мне придется разрешить запрос с помощью «билета» (который действует как имя пользователя) из базы данных и предоставит данные.Мне не нужно выполнять какую-либо часть аутентификации - мне просто нужно извлечь токен из запроса - расшифровать его и получить значение «ticket», а также выполнить поиск в базе данных и предоставить данные.

token : eyJhbGciOiJIUzUxMiJ9.eyJ0aWNrZXQiOiJzdmxhZGFAZ21haWwuY29tIiwic2NvcGVzIjpbIlJPTEVfQURNSU4iLCJST0xFX1BSRU1JVU1fTUVNQkVSIl0sImlzcyI6Imh0dHA6Ly9zdmxhZGEuY29tIiwiaWF0IjoxNDcyMzkwMDY1LCJleHAiOjE0NzIzOTA5NjV9.uaHqDrTNnn5TAljcWRYac9ifJJv5NR5cdn7id2xVCAKLD37_pY62jPlk70XtwqgSar03n2qEgzWyTdWXRcnsgQ

reuest : localhost:8080/persons?access_token=eyJhbGciOiJIUzUxMiJ9.eyJ0aWNrZXQiOiJzdmxhZGFAZ21haWwuY29tIiwic2NvcGVzIjpbIlJPTEVfQURNSU4iLCJST0xFX1BSRU1JVU1fTUVNQkVSIl0sImlzcyI6Imh0dHA6Ly9zdmxhZGEuY29tIiwiaWF0IjoxNDcyMzkwMDY1LCJleHAiOjE0NzIzOTA5NjV9.uaHqDrTNnn5TAljcWRYac9ifJJv5NR5cdn7id2xVCAKLD37_pY62jPlk70XtwqgSar03n2qEgzWyTdWXRcnsgQ

Код не нужен. Я просто хочу узнать, как он работает.На YouTube есть много видео, но все они сконцентрированы на аутентификации, которую мне не нужно выполнять, и ни одно из них не показывает, как обрабатывается запрос из приложения.Любые ресурсы также будут отличной помощью.Спасибо.

1 Ответ

0 голосов
/ 02 июня 2019
reuest : localhost:8080/persons?access_token=eyJhbGciOiJIUzUxMiJ9.eyJ0aWNrZXQiOiJzdmxhZGFAZ21haWwuY29tIiwic2NvcGVzIjpbIlJPTEVfQURNSU4iLCJST0xFX1BSRU1JVU1fTUVNQkVSIl0sImlzcyI6Imh0dHA6Ly9zdmxhZGEuY29tIiwiaWF0IjoxNDcyMzkwMDY1LCJleHAiOjE0NzIzOTA5NjV9.uaHqDrTNnn5TAljcWRYac9ifJJv5NR5cdn7id2xVCAKLD37_pY62jPlk70XtwqgSar03n2qEgzWyTdWXRcnsgQ

Из вышеприведенного запроса вы можете сконструировать контроллер следующим образом:

    @GetMapping("/persons")
        public ResponseEntity loadPersons(@RequestParam("access_token") String access_token,HttpServletRequest request){
         //Here you can play with the token now 

        //you can also get the token if it is coming with request header as follows :
           String token =request.getHeader("access_token");//replace with the specific key

        }

например

public boolean isValidJWTToken(String jwtToken){
        boolean isValid = true;
        try {
            Jwts.parser().setSigningKey(generateKey()).parseClaimsJws(jwtToken);
        } catch (Exception e) {
            isValid = false;
        }
        return isValid;
    }
private Key generateKey() {

        byte[] keyBytes=environment.getProperty("auth.jwt.secret.key").getBytes();

        return new SecretKeySpec(keyBytes, 0,keyBytes.length,environment.getProperty("auth.jwt.secret.algo"));
    }

TheJWT Token состоит из 3 частей.

1. HEADER:ALGORITHM & TOKEN TYPE
2. PAYLOAD:DATA
3. SIGNATURE

Все вышеперечисленные 3 части ориентированы на ваш бизнес.Таким образом, вы можете лучше узнать, какой алгоритм используется для кодирования.Соответственно, вы можете сделать декодирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...