Я успешно настроил аутентификацию SAML с помощью omniauth-saml в своем приложении Rails 4.2.0. Поскольку это мультитенантное приложение, и каждый арендатор может определить своего собственного поставщика удостоверений, это было непросто, но я справился.
Когда IdP аутентифицирует пользователя, IdP отправляет его обратно в мое приложение по адресу /auth/saml/callback
, стандартному месту для omniauth. Пока я могу отправить пользователя на указанную страницу в моем приложении (скажем, на панель инструментов), все это работает хорошо.
Но что, если пользователь пытался получить доступ к определенной странице и был отправлен на страницу входа? Если пользователь должен был войти в систему обычным образом (электронная почта/пароль), приложение rails запоминает обратный URL-адрес и отправляет пользователя туда, куда он пытался перейти в первую очередь.
С omniauth-saml я не уверен, как это сделать. Мой первый инстинкт — отправить параметр return_url
IdP, чтобы IdP мог отправить его обратно после аутентификации. Есть ли способ сделать это?