2017-02-14 14 views
6

Я пытаюсь создать простую систему единого входа в PHP для двух доменов, которые тематически связаны.Значок JWT для проверки подлинности через межсетевой домен

Так что мне было интересно, можно ли хранить подписанный токен JWT, содержащий имя пользователя пользователя из домена A, в локальное хранилище. А затем проверить JWT, используя тот же секретный ключ из домена B, который приведет к успешной аутентификации.

Я искал Google для получения некоторых ответов, и я нашел некоторые из них, содержащие средний домен аутентификации, который позаботился об аутентификации. Но я хотел бы просто связать два домена, которые у меня есть.

Спасибо.

ответ

2

Перекрестная происхождения доступа для хранения данных из области B в домене А не допускается same-origin policy

Доступ к данным, хранящимся в браузере, такие как LocalStorage и IndexedDB разделены по происхождению. Каждое происхождение получает свое собственное хранилище, а JavaScript в одном источнике не может читать или записывать на хранение, принадлежащее другому источнику.

Обычным решение должны иметь центральный домен для аутентификации (может быть А или В) и работать с переадресациями между доменами, переводящих JWT или с зайцем маркера аутентификации между доменами с использованием фрейма. Подробнее here

OpenId, OAuth и SAML протокол работает с перенаправлений, и, например, Google веб-люкс их приложения подключены корыто плавающие фреймы (Дополнительно Google является OpenID-провайдером подключения)

+0

Iframe отлично работает! Благодаря! – Ales

0

Нет причин, по которым вы не можете этого сделать. JWT на самом деле ничего особенного, это просто токен, похожий на токен идентификатора сеанса. Разница между JWT и любым другим токеном заключается в том, что он может содержать полезную нагрузку данных.

Что вы описываете, это, по сути, предоставление пароля OAuth 2.0. Ваша система единого входа - это сервер авторизации, который может аутентифицировать пользователей и предоставлять им токен доступа. В этом случае токен доступа может быть JWT. Затем пользователи (ресурсы) могут использовать свои токены доступа для доступа к серверам ресурсов (другим другим связанным доменам), эти серверы ресурсов могут проверить, что токен доступа действителен и разрешает или запрещает запросы.

Я использую следующую библиотеку при реализации OAuth 2.0 в PHP: https://oauth2.thephpleague.com/ - в документах есть и хорошая информация.