Поделиться поваром ie на поддоменах в Springboot - PullRequest
1 голос
/ 11 апреля 2020

У меня есть веб-приложение, которое размещено на https://example.com. Я хотел бы поделиться сессионным поваром ie между основным доменом https://example.com и поддоменом https://www.example.com. Таким образом, пользователю не нужно повторно входить в систему, если он переключается с одного домена на другой. Как мне добиться этого в Springboot 2.2.6?

Вот что я попробовал: Я зашел в application.properties и установил server.servlet.session.cook ie .domain = .example.com Теперь это не помогает. Я получаю сообщение об ошибке:

java.lang.IllegalArgumentException: An invalid domain [.example.com] was specified for this cookie
    at org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateDomain(Rfc6265CookieProcessor.java:210) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
    at org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:145) ~[tomcat-embed-core-9.0.33.jar:9.0.33]
    at org.apache.catalina.connector.Response.generateCookieString(Response.java:973) ~[tomcat-embed-core-9.0.33.jar:9.0.33]

Если я установлю server.servlet.session.cook ie .domain = example.com , то повар ie не будет отображаться для http://www.example.com и если я установлю server.servlet.session.cook ie .domain = www.example.com, то повар ie не будет отображаться для http://example.com

Я читал обсуждения о Rfc6265CookieProcessor и LegacyCookieProcessor, но я не знаю, как исправить эту проблему.

Springboot 2.2.6 использует версию 9.0 tomcat. *

Итак, как мне исправить эту проблему?

РЕДАКТИРОВАТЬ:

Я пробовал вышеуказанные изменения только на локальном хосте, а не на производстве. Вместо доступа к http://www.example.com я делал https://www.localhost, а вместо доступа к http://example.com я делал http://localhost

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Вместо того, чтобы тестировать localhost на вашем компьютере разработчика, попробуйте использовать полное имя хоста вашего компьютера. У меня была похожая проблема с тестированием аутентификации на нашей платформе с единым входом.

0 голосов
/ 12 апреля 2020

Правильное значение:

server.servlet.session.cook ie .domain = example.com

Я пытался, что я был вносить изменения на localhost, и они не работают для меня. Я вручную изменял значения в консоли chrome и ожидал увидеть файлы cookie, установленные на https://localhost с доменом localhost, который будет виден на другой вкладке для домена https://www.localhost, и это было не происходит.

Я прочитал ответ здесь: Разделить cook ie между поддоменом и доменом и комментарием @ Ces c к этому ответу, который был:

Я не уверен, где это поставить, поэтому я выбираю комментарии принятого ответа. Потребовалось много времени и неудачные эксперименты, чтобы доказать вышесказанное на моем локальном хосте, пока мне не пришло в голову, что я должен назвать локальный хост с точкой в ​​имени. Как "localhost.com" или что-то в этом роде. Затем все действия «установить куки» начали следовать объяснениям, приведенным здесь в этом ответе. Надеясь, что это может кому-нибудь помочь.

Итак, я попробовал свои изменения непосредственно на производстве, и они работали нормально. Я до сих пор не могу заставить его работать на localhost. Я получаю доступ к своему веб-сайту на localhost:

https://localhost и https://www/localhost. Исходя из комментария @ Ces c, мне, вероятно, нужно получить доступ к сайту на localhost как https://www.localhost.com или https://localhost.com, и тогда он будет работать. Но я этого не пробовал.

...