|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Пытаюсь прикрутить авторизацию к скелету сервера, получается не особо)) Подскажите куда копать дальше. В интернетах все примеры для web клиентов, ввод логина с паролем идет через форму, а как сделать авторизацию для клиента на том же андроиде не понятно. Суть в чем: отправляем с клиента запрос типа http://?dress%:8081/auth?login=login&password=pass , авторизируемся (или получаем сообщение об ошибке) и далее уже получаем доступ к тем запросам, которые требуют авторизации. Контроллер: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Конфиг: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Что нужно реализовать в методе userLogin() ? Или я туплю и оно не так в принципе делается ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2019, 15:54 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
1. НИКОГДА, НИКОГДА!!! не используйте для авторизации GET запросы и тем более не передавайте логины и пароли в URL. Этот запрос может закешироваться и могут утянуть злоумышленники. То бишь безопасности НОЛЬ. 2. Используйте JWT авторизацию. Тот же OAuth от сприга. Можете авторизовываться откуда угодно. 3. В методе userLogin нужно проверить полученные данные на корректность - не null и не пустые ли. Далее. нужно сходить в бд и глянуть а есть ли такой юзверь по логину и проверить пароль, подходит ли он тому что пришло. ПАРОЛИ хранить в зашифрованном виде!!! не повторяйте ошибок Лицокниги. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2019, 16:28 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Tsyklop1. НИКОГДА, НИКОГДА!!! не используйте для авторизации GET запросы и тем более не передавайте логины и пароли в URL. Этот запрос может закешироваться и могут утянуть злоумышленники. То бишь безопасности НОЛЬ. Это понятно, спасибо, тут все в качестве примера, не более. Я саму цепочку пока уловить не могу, как, что и где нужно вызвать. Tsyklop3. В методе userLogin нужно проверить полученные данные на корректность - не null и не пустые ли. Далее. нужно сходить в бд и глянуть а есть ли такой юзверь по логину и проверить пароль, подходит ли он тому что пришло. ПАРОЛИ хранить в зашифрованном виде!!! не повторяйте ошибок Лицокниги. Это тоже все понятно, оно даже есть, вопрос в том, как авторизировать пользователя, если все ок, с помощью каких механизмов ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2019, 16:59 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
bobo96Это тоже все понятно, оно даже есть, вопрос в том, как авторизировать пользователя, если все ок, с помощью каких механизмов ? Если OAuth или JWT то через токен. Клиенту отдайтся токен и при каждом запросе клиент шлет этот токен. Сервер его проверяет и т.д. Если без этого то: через сессию, но тогда будет проблема на других девайсах, тех же андроидах ибо нужно будет сохранять куку JSESSIONID. Можно через куки токеном. Принцип тот же что и через сессию, но на дольший срок ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2019, 17:11 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Tsyklopbobo96Это тоже все понятно, оно даже есть, вопрос в том, как авторизировать пользователя, если все ок, с помощью каких механизмов ? Если OAuth или JWT то через токен. Клиенту отдайтся токен и при каждом запросе клиент шлет этот токен. Сервер его проверяет и т.д. А можно пример ? Какую-нибудь элементарщину, что б был откуда плясать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2019, 17:55 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
bobo96, https://www.baeldung.com/spring-security-oauth-jwt https://www.callicoder.com/spring-boot-spring-security-jwt-mysql-react-app-part-2/ ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2019, 19:32 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Tsyklopbobo96, https://www.baeldung.com/spring-security-oauth-jwt https://www.callicoder.com/spring-boot-spring-security-jwt-mysql-react-app-part-2/ Спасибо!) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2019, 19:51 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
TsyklopЕсли без этого то: через сессию, но тогда будет проблема на других девайсах, тех же андроидах ибо нужно будет сохранять куку JSESSIONID. У вас не работают на сотовом сайты? Какая проблема с андроидом? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2019, 22:50 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
bobo96Я саму цепочку пока уловить не могу, как, что и где нужно вызвать. Вы сделайте сначала для веб клиентов. а потом уже для не веб клиентов. Потому что не веб клиент это не http а например сокет\UDP\TCP\FTP. Поэтому не трогайте пока андроид. Клиент эксплорер там один в один как на компе. ... Самая простая аутентификация "базовая" включается галкой в web.xml. Это без спринга. Потом идёт forms, потом пошли на основе токенов. Потом с помощью специального ПО - spring security. Потом керберос и так бесконечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2019, 23:16 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Здравствуйте! Продолжу, если никто не против)) С авторизацией разобрался, правда пока не с oauth2, а с базовой, но тем не менее. Еще раз спасибо за ссылки! Несколько тупых вопросов: 1. Те токены, которые выдает сервер клиенту, хранятся где-то на сервере ? Как ими управлять ? Т.е. сегодня я выдал токен, а завтра хочу забрать (удалить), как это сделать ? Погуглил, вроде-как каких-то стандартных механизмов нет, варинтов много. Как делать это правильно ? 2. Вопрос по самому токену. Понятно, что с его помощью сервер понимает, что запрос делает проверенный источник. Но запросы же можно перехватить, а потом плевать их серверу и так же получать ответы, не ?)) То-есть проще говоря как сервер определяет, что запрос делает тот клиент, которому он выдавал токен ? з.ы. Вот эти статьи помогли разобраться, если кому вдруг будет интересно) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 08:24 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
bobo96а с базовойэто не базовая. Это на основе токенов. Противоположная на основе сессий и куков проще для новичка и проектов корпоративных (чтобы отобрать в любой момент) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 09:53 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
bobo96, 1. Почему бы токены и не хранить в базе, если вам хочется вдруг все сделать их невалидными? Другой вопрос, какая такая потребность у вас возникает, чтобы токены инвалидами сделать? Уменьшайте время жизни токена и либо пишите свои костыли для обновления токена, либо запрашивайте авторизацию каждые полчаса ;) 2. Чтобы перехватить было сложнее, все коммуникации с сервером только через https. Никак не определяет, сейчас распространена автоиазция oauth2 - где выдается 2 токена. Первый, который используется для запроса ресурсов, второй(refresh token) - когда сервер возвращает invalid token. С помощью refresh токена идет запрос на получение новой пары токенов и все идет дальше. У основного токена обычно довольно короткое время жизни(вот, к примеру, в вашем коде время жизни чето довольно больше jwtExpirationInMs - параметр..60480000 мс). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 10:15 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Понял, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 10:31 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
А по https подскажите: создал сертификат, положил его в resources, изменил application.properties server.port = 5001 server.ssl.key-store= tomcat_demo.keystore server.ssl.key-store-password= pass server.ssl.keyStoreType= PKCS12 server.ssl.keyAlias= tomcat_demo server.ssl.enabled = true server.ssl.protocol = TLS Приложение запускается нормально, без ошибок: 2019-04-09 13:07:49.257 INFO 10984 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 5001 (https) Но при запросе https://localhost:5001/api/auth/signin postman говорит Could not get any response Что не так делаю ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 11:11 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Отбой, настройках postman'а выключил верификацию сертификата и все заработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 11:42 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Еще вопрос: тот вариант развертывания сервера, который "из коробки", spring boot, можно использовать в конечных продуктах или нужно все это хозяйство как-то по-другому разворачивать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 12:09 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
bobo96, одна из пфич бута это быстрое развертывание. ответ -да ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 12:17 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 12:28 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Непонятки с expiration time токена. Выставил время жизни 15 минут При входе создаем токен: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Вроде все ок: Код: java 1. 2.
Беру токен, который прилетел в ответ, иду с ним в закрытый раздел попутно вытаскивая id пользователя: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
И вот тут начинается какая-то дичь: Код: java 1. 2. 3.
Почему claims.getExpiration() на 6 дней перескочил ?? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 13:43 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
bobo96, Не надо в одной теме писать как у тебя дела на работе. Разбивай на темы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 14:04 |
|
Как настроить базовую авторизацию для не-web клиентов
|
|||
---|---|---|---|
#18+
Petro123bobo96, Не надо в одной теме писать как у тебя дела на работе. Разбивай на темы. Да не вопрос. По последнему вопросу есть мысли ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2019, 14:42 |
|
|
start [/forum/topic.php?fid=59&fpage=29&tid=2121380]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 241ms |
total: | 426ms |
0 / 0 |