Как я могу использовать RelayState из SAML для определения целевой страницы в SP, используя saml-omniauth и devise? - PullRequest
0 голосов
/ 02 марта 2020

Как использовать RelayState из протокола SAML для указания целевой страницы в SP в SSO, инициированном IdP?

Я установил процесс SSO, инициированный IdP, между IdP и SP. Это работает, но он попадает в root_path. Мне нужно это, чтобы приземлиться на RelayState URL.

Я использую devise. Найдите ниже моего контроллера:

def saml
    student = Student.where(email: request.env["omniauth.auth"]['uid'].to_s).first
    if student
      sign_in_and_redirect student, event: :authentication
    else
        flash[:error] = t 'flash_msg.access_1'
        redirect_to root_path
    end
  end

1 Ответ

0 голосов
/ 02 марта 2020

Ответ должен заменить только sign_in_and_redirect method by sign_in method. Затем перенаправьте пользователя на URL-адрес RelayState, выполнив redirect_to params[:RelayState]. Последний метод saml:

  def saml
    student = Student.where(email: request.env["omniauth.auth"]['uid'].to_s).first
    if student
      sign_in student, event: :authentication
      redirect_to params[:RelayState]
    else
        flash[:error] = t 'flash_msg.access_1'
        redirect_to root_path
    end
  end

Надеюсь, это кому-нибудь поможет!

...