Я знаю, как работают OAuth2 и OpenID Connect. Но меня все еще беспокоит некоторое замешательство.
Мы разрабатываем собственный Auth Server, сервисный API и мобильное приложение. Итак, клиентское приложение является доверенным, и мы используем тип предоставления «пароль». Пользовательский репозиторий приложения следует той же базе данных пользователей на сервере аутентификации.
Наши клиенты входят в приложение по имени пользователя / паролю. Затем приложение отправляет учетные данные пользователя в конечную точку токена сервера аутентификации, которая возвращает клиенту токен доступа (однонаправленный) и токен идентификатора (JWT).
Идентификационный токен содержит основную информацию о пользователе, поэтому приложение может приветствовать пользователя, например «Добро пожаловать, Тони Старк!».
Маркер доступа можно использовать для доступа к API (например, обновить профиль пользователя).
OAuth по замыслу не является инструментом для аутентификации. Ссылка: https://www.scottbrady91.com/OAuth/OAuth-is-Not-Authentication
Мои вопросы
1) Нужно ли проверять подпись идентификационного токена, если клиенту только интересно получить информацию о пользователе? Также обратите внимание, что идентификатор токена поступает из конечной точки токена через соединение https.
2) Давайте забудем о токене ID. Можем ли мы считать, что пользователь прошел проверку подлинности (т. Е. Успешно выполнен вход в систему), если клиент получает токен доступа с сервера проверки подлинности? Этот поток очень похож на простой пароль входа без OAuth.
3) Клиент может получить доступ к защищенным API с помощью токена доступа. Без маркера доступа клиент может вызывать только некоторые общедоступные API. Это эквивалентно тому, что можно сделать с и без входа в систему? Похоже, маркер доступа может рассматриваться как «cookie сеанса входа в систему».
4) В моем случае нет участия третьей стороны. Все (клиент, сервер аутентификации, сервис API) разработано и принадлежит одной организации. Имеет ли смысл использовать OAuth?