У нас есть обычное веб-приложение с авторизацией на основе файлов cookie, и теперь мы хотим разделить интерфейс и бэкэнд (api), чтобы иметь сторонний публичный API. Таким образом, наш бэкэнд будет на одном домене и на другом.OAuth/OpenID на основе браузера с постоянным входом
Для получения авторизации мы бы хотели переключиться на OAuth 2 with JWT. В этом случае наш интерфейс приложение будет использовать access_token вместо печенья сессии и это приносит большой старый вопрос:
Как оставаться в системе - The Infamous «Запомнить меня» Checkbox (часть II от Form based authentication for websites)
С точки зрения OAuth2 наше приложение для внешнего использования будет использовать что-то между Resource Owner Password Credentials Grant и Implicit Grant. Он ближе к Credentials Credentials Grant, так как мы по-прежнему будем использовать обычную регистрационную форму и не будем перенаправлять пользователя в другой домен для входа. В то же время он ближе к Implicit Grant, поскольку он все собирается только для браузера & JavaScript основан на том, что access_token
будет сохранен в браузере.
RFC, says сервер авторизации НЕ ДОЛЖЕН выдавать токен обновления, если вы используете неявной Грант и мой вопрос, если он по-прежнему действует в этом прецеденте, когда вы на самом деле не использовать партию OAuth 3-D, но ваш собственный api? Инстинктивно я чувствую, что наличие refresh_token
в браузере - это дыра в безопасности и хотел бы подтвердить это с вами, ребята, но refresh_token
, кажется, единственный способ иметь постоянный вход в систему так же, как у нас с файлами cookie.
UPD после @FlorentMorselli комментарий:
OpenID функции до сих пор не ответили на мой вопрос, могу ли я использовать refresh_token
с браузером только приложением
- Google says они обеспечивают
refresh_token
только дляaccess_type=offline
- OpenID Connect Core says вы не можете использовать токен обновления с неявным потоком
- OpenI нет D Connect Ядро says ничего об использовании
refresh_token
с гибридным Flow - Там только one place, где он говорит что-то многообещающий о
refresh_token
с гибридным Флоу, но ничего определенного
UPD2 благодаря @reallifelolcat
Похоже, что OpenID Connect явно не поддерживает Resource Owner Password Credentials Grant, что означает, что необходимо перенаправить пользователя на сервер OpenID Connect для входа в систему. Вы знаете, есть ли другой способ аутентификации с учетными данными пользователя через OAuth 2.0?
Я считаю, что расщепление апи и интерфейс становится все более распространенным в эти дни, и я был бы признателен, если бы вы рассказать, как можно решить эту Persistent Войти вопрос и если вы уроните его полностью и пользователь силы повторно логин каждые X недель.
Спасибо!
OAuth2 не является протоколом аутентификации, он является авторизационным. Если вы хотите аутентифицировать пользователей с помощью OAuth2 и JWT, я рекомендую вам ознакомиться с [Спецификацией OpenID Connect] (http://openid.net/connect/) –
@FlorentMorselli спасибо за ссылку, я расширил свой вопрос –
Приложение на основе пользовательского агента - это общедоступные клиенты, и они не могут хранить свои учетные данные и обновлять токены. Вот почему эти клиенты не могут выдавать обновленные токены. Собственное приложение (например, приложение для Android) обеспечивает «приемлемый уровень защиты». Вот почему им может быть разрешено получить токен доступа (см. Https://tools.ietf.org/html/rfc6749#section-2.1). –