@mickydev

Как правильно реализовать авторизацию в Spring Rest для мобильных и веб приложений?

Ребята помогите пожалуйста

Пытаюсь построить Rest api на Java, где клиентами будут
Мобильные приложения (Android, IOS)
И веб приложение.

И так, надо сделать авторизацию :
нативную и с помощью соцсетей (Google,Facebook,Vk
и возможно Apple ID).

Проблема следующая, я не совсем знаю ,как правильно реализовать авторизацию на Rest с мобильными и веб приложениями.
Уже практически все перечитал ,но ничего не прояснилось
(А возможно ,только больше запутался.
Изначально думал просто jwt вместо сессий и всё.)

Что я узнал
1. Использовать технологию единого входа (SSO)
2. Чтобы реализовать авторизацию для мобильных и веб приложений, нужно использовать Oauth2. Следовательно , Сервер Авторизации , Сервер Ресурсов и Клиент.

3. Вместо сессий токены jwt

Инструменты выбрал следующие:
Spring Security + Spring Authorization Server + hibernate + MySQL

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

Прочитал ,что есть такой Keycloak.
Но я не уверен ,что он мне подходит.
Где-то в коментах прочитал ,что он не совсем подходит для того ,чтобы сохранять юзеров в свою бд.

Подскажите пожалуйста ,
как правильно реализовать авторизацию в рест для мобильных и веб приложений .
И вообще , на верном ли я пути?

И ,что для моего проекта будет больше подходить : Keycloak? Ory Hydra?

Я новичок с рест до этого не работал , а про Oauth относительно недавно узнал .

Буду благодарен)
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 1
@shalomman
Вы как-то сильно все усложнили. Для логинов с социальними сетями не нужно ставить свой аторизационный сервер так как в данном случае авторизационным сервером являетются как раз соц сети. Достаточно на своем бэке использовать любую oAuth библиотеку или самому имплементировать протокол. Например spring-security если работаете со спрингом.

Как только человек авторизован нужно управлять его сессией. В мобильном приложении jwt будет хорошим направлением, в вебе лучше использовать куки, но можно и jwt .
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы