如何使用saml-omniauth和dev在SAML中使用RelayState来指定SP的登录页面?

问题描述 投票:0回答:1

我如何使用SAML协议中的RelayState在IdP启动的SSO中指定SP上的登录页面?

我已经在IdP和SP之间设置了由IdP启动的SSO过程。它可以工作,但可以到达root_path。我需要它登陆RelayState URL。

我正在使用装置。在我的控制器下面找到:

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
ruby-on-rails devise single-sign-on saml omniauth
1个回答
0
投票

答案是仅替换sign_in_and_redirect method by sign_in method。然后通过执行redirect_to params[:RelayState]将用户重定向到RelayState URL。最终的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

我希望它可以帮助某人!

© www.soinside.com 2019 - 2024. All rights reserved.