Oauth2, нативные приложения и кража токенов - PullRequest
0 голосов
/ 09 октября 2018

Я использую механизм авторизации OAuth2 для моего мобильного приложения для доступа к моему серверу ресурсов.Я определил клиента с секретным именем mobile_client и использую код авторизации для получения маркера обновления.У меня также есть один пользователь user@app.pl, который использует мое приложение на двух мобильных телефонах.Я заметил проблему с кражей токенов.

Сценарий выглядит следующим образом:

                                                +---------------+
 (Phone 1)----------- Refresh Token1----------->| Authorization |
 (Phone 1)<--- Access Token1+Refresh Token2-----|    Server     |
                                                +---------------+
                                  +----------+ 
 (Phone 1)---- Access Token1 ---->| Resource |
 (Phone 1)-- Protected Resource --|  Server  |
                                  +----------+ 
                                                +---------------+
 (Phone 2)---------- Refresh Token2 ----------->| Authorization |
 (Phone 2)<--- Access Token2+Refresh Token3-----|    Server     |
                                                +---------------+
                                 +----------+ 
 (Phone 1)---- Access Token1 --->| Resource |
 (Phone 1)<- 401 TOKEN EXPIRED!  |  Server  |
                                 +----------+ 

Похоже, что user@app.pl на телефоне 1, и телефон 2 получил один и тот же токен обновления с моего сервера авторизации для вызовов с тем же приложением и именем пользователя,Это в итоге привело к тому, что второй вызов обновил токен доступа и на телефоне 1.

Это правильное поведение сервера авторизации?

Я использую Spring Security Oauth2 2.3.3.RELEASEи Spring Security 5.1.0.RELEASE

Edit

Как я вижу в спецификации Google oauth2, они предоставляют больше токенов обновления для каждого пользователя, так что это должно быть настроено каким-либо образом в Spring.

В настоящее время существует ограничение в 50 токенов обновления на учетную запись пользователя для каждого клиента.Если предел достигнут, создание нового токена обновления автоматически делает недействительным самый старый токен обновления без предупреждения.

1 Ответ

0 голосов
/ 12 октября 2018

Предполагая, что вы создаете токены доступа, используя токены обновления, созданные из того же кода авторизации, я бы сказал, что это ожидаемый сценарий, поскольку отзыв старого токена доступа при обновлении токена доступа обеспечивает безопасность.

Пробовали ли выиспользовать токены доступа из 2 разных кодов авторизации?

...