Как правильно реализовать авторизацию в 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 относительно недавно узнал .  

  

Буду благодарен) 

 Вы как-то сильно все усложнили. Для логинов с социальними сетями не нужно ставить свой аторизационный сервер так как в данном случае авторизационным сервером являетются как раз соц сети. Достаточно на своем бэке использовать любую oAuth библиотеку или самому имплементировать протокол. Например spring-security если работаете со спрингом.   

  

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