Spring Session / мультитенантное приложение OAuth2 / несколько файлов cookie - PullRequest
0 голосов
/ 17 января 2019

Я использовал Spring Session и OAuth2 для создания единого входа для мультитенантного приложения, и у меня было Приложение с различными внешними клиентами и внутренним сервером. (Я использовал этот урок https://www.baeldung.com/sso-spring-security-oauth2).
Таким образом, проблема теперь состоит в том, что каждый клиент (Арендатор) работает в другом домене, чем внутренний сервер, и поэтому внутренний сервер имеет только один файл cookie, и пользователь не может войти в систему с двумя различными клиентами одновременно. (У каждого арендатора есть разные токены на предъявителя, поэтому проблема заключается только в cookie)
Идея заключалась в том, чтобы каким-то образом настроить Spring для создания другого файла cookie SESSION на сервере (что мне не удалось сделать / не знаю, возможно ли это вообще)
Кроме того, я не понимаю, зачем мне нужен этот cookie, поскольку я использую аутентификацию на основе токенов.
Я понимаю, что если я хочу автоматически войти в систему, если пользователь закроет браузер и снова откроет его, мне нужно сохранить некоторые данные на стороне клиента (например, файл cookie, но зачем использовать для этого JSESSIONID, а не сохранить токен на предъявителя в куки)
Кроме того, я верю, что после авторизации для авторизации используется сессионный cookie, а не токен oAuth. (Я удалил его из хранилища токенов + обновить токен и при следующем запросе он просто создал новый)

Итак, в основном я хочу знать:

  • Могу ли я как-то настроить свой бэкэнд для создания одного cookie на каждого арендатора? (без запуска нескольких экземпляров)
  • Зачем мне сеансовый cookie?
  • Как пользователь повторно аутентифицируется в oAuth после того, как я удалю токены из хранилища токенов, без необходимости повторного ввода пароля (я полагаю, за это отвечает файл cookie сеанса)

Мой конфиг yaml выглядит так:

server:
port: 8082
servlet:
    context-path: /ui
session:
  cookie:
    name: UISESSION
security:
  basic:
    enabled: false
  oauth2:
    client:
      clientId: SampleClientId
      clientSecret: secret
      accessTokenUri: http://localhost:8081/auth/oauth/token
      userAuthorizationUri: http://localhost:8081/auth/oauth/authorize
    resource:
      userInfoUri: http://localhost:8081/auth/user/me
    client2:
      clientId: SampleClientId
      clientSecret: secret
      accessTokenUri: http://localhost:8081/auth/oauth/token
      userAuthorizationUri: http://localhost:8081/auth/oauth/authorize
    resource:
      userInfoUri: http://localhost:8081/auth/user/me
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...