Я использовал OneLogin java integration toolkit, я могу войти на главную страницу по умолчанию моего приложения, используя SAML SSO. Но мне нужен URL-адрес, который пользователь сначала запросил для перенаправления. К сожалению, OneLogin не возвращает параметр RelayState во время утверждения SAML в мое приложение. Или я должен передавать его как другой параметр запроса?
Примечание. Это инициированный SP SSO.
RelayState - непрозрачный токен, который ссылается на исходный URL-адрес, к которому пользователь пытался получить доступ (или ресурс в приложении). SDK OneLogin Java SAML отправит AuthRequest в IdP, но не автоматически анализирует URL-адрес и отправляет токен в IdP.
Простым расширением вашего использования инструментария будет следующее:
1.) Когда пользователь обращается к защищенной странице, проверьте сеанс. 2.) Если нет активного сеанса (т.е. Нет cookie и т.д.), Определите, является ли пользователь частью организации, в которой включен SSO на основе SAML (либо через субдомен URL-адреса, либо запрашивает адрес электронной почты пользователя и т.д.). 3.) приложение после определения того, что пользователь не вошел в систему и должен быть аутентифицирован против IdP, затем может использовать код из коробки в OneLogin SAML Toolkit для отправки SAMLRequest в сохраненную конечную точку HTTP в файле Settings.java. 4.) Создайте дополнительную функцию в файле authrequest.java, чтобы создать токен RelayState, это может быть так же просто, как разбор URL-адреса, а затем URL-код, кодирующий его. 5.) Вызовите эту функцию в логике java-saml/sample/src/main/webapp/index.jsp вашего приложения и используйте ее для добавления переменной? RelayState = {yourtoken} в запрос auth. Это будет сохранено через весь рабочий процесс, в конце просто проанализируйте его и используйте для простого перенаправления.
Самый лучший!
Мы скоро обновим инструментарий Java, чтобы модернизировать его и принести целую кучу возможностей SAML.