Какие есть альтернативы универсальному выходу из системы в OAuth?
OAuth не поддерживает концепцию универсального выхода из системы. Выход из одного приложения не приводит к выходу из другого, так как это не будет желательным поведением.
Например, если пользователь Facebook вышел из Facebook, он не должен выходить из Spotify (если они использовали Facebook OAuth).
Я был нанят, чтобы создать сервис, который действует как вспомогательное приложение для прозрачного встраивания себя в рабочий процесс старого монолитного веб-приложения. Например, в монополите есть ссылка на вложенное приложение, и если щелкнуть по этой ссылке, вы перейдете в вложенное приложение. Подприложение также связывается с монолитом, который прозрачно ведет назад. Пользователь может перемещаться между монолитом и вложенным приложением.
Под-приложение в настоящее время использует OAuth 2.0 для аутентификации через монолит. С точки зрения пользователя, это в основном прозрачный обмен.
Для пользователя два рабочих процесса приложения должны быть объединены в один. Учитывая это, концепция "Универсального выхода из системы" является желательной. У пользователя, который выглядит как одно приложение, не должно быть выхода из некоторых страниц и других страниц.
В настоящее время у меня реализован "Универсальный выход из системы", но у меня есть ощущение, что, поскольку это не является частью OAuth, возможно, это означает, что эту проблему следует решать по-другому.
Учитывая этот сценарий, есть ли альтернатива реализации "Универсального выхода" в OAuth? Следует ли вообще использовать OAuth? Если нет, что должно быть сделано? Как это может быть лучше построено?
1 ответ
Сам OAuth 2.0 не является протоколом, который регистрирует пользователей в приложениях ( http://oauth.net/articles/authentication/); некоторые (например, Facebook) создали для этого собственное расширение OAuth 2.0; эти провайдеры должны были бы начать поддерживать собственный механизм единого выхода из системы, чтобы решить упомянутую проблему.
Однако существует стандартное расширение OAuth 2.0, которое регистрирует пользователей в приложениях под названием OpenID Connect ( http://openid.net/specs/openid-connect-core-1_0.html). У этого есть расширение, называемое Session Management ( https://openid.net/specs/openid-connect-session-1_0.html), которое обеспечивает функциональность, которую вы описываете стандартным образом.