У меня есть сайт, который говорит www.e1.com . www.e1.com является поставщиком услуг . Всякий раз, когда я нажимаю на сервис в нем, я перенаправляюсь к провайдеру идентификации, например, www.e2.com . Перед этим в сервис-провайдере (www.e1.com) я проверю, установлен ли какой-либо файл cookie для пользователя. В первый раз не будет куки, поэтому он отправит пустое значение SessionId. Таким образом, я отправляю запрос SAML на www.e2.com без идентификатора (поскольку файл cookie не установлен. Файл cookie содержит идентификатор)
Теперь на сайте www.e2.com, т. Е. В провайдере идентификации, я проверю, отправил ли www.e1.com значение Id. Если он не задан, я создам идентификатор сессии и сохраню его в базе данных (на www.e2.com). Затем я перенаправлю браузер на свою страницу аутентификации, где будет запрошено имя пользователя и пароль, и соответственно он будет аутентифицирован. Если аутентификация прошла успешно, я перенаправлю браузер на сервис-провайдера (www.e1.com) с ответом SAML, который содержит идентификатор сеанса.
Теперь в сервис-провайдере значение SessionId будет сохранено в Cookie, и браузер будет перенаправлен на страницу обслуживания клиентов (сервисную страницу, к которой хочет получить доступ пользователь) .
Теперь, если тот же пользователь хочет получить доступ к какой-либо другой услуге от того же поставщика услуг
(в рамках сеанса) браузер, очевидно, отправит SessionId в Cookie вместе с запросом SAML. Identity Provider проверит значение SessionId в своей базе данных. Если оно присутствует в его базе данных, то он предоставит прямой доступ к услуге пользователю без ввода учетных данных для входа, поскольку пользователь уже аутентифицирован для сеанса.
Является ли это правильным способом достижения единого входа с SAML? или
Если этот метод имеет недостатки, Можете ли вы объяснить эти недостатки?
Заранее спасибо:)