如何在 Rails 中通过 SAML 对用户进行身份验证时发送经过身份验证的响应?
How to send the authenticated response while authenticating a user via SAML in Rails?
我一直在尝试在我的应用程序中实施 SAML,其中我想对用户进行身份验证并创建 SAML 令牌(响应)并将用户重定向到创建会话的其他网站。
到目前为止,我已经能够获取有关 init 方法和 consume 方法的信息,这些方法将由其他网站实现。
def init
request = OneLogin::RubySaml::Authrequest.new
redirect_to(request.create(saml_settings))
end
def consume
response = OneLogin::RubySaml::Response.new(params[:SAMLResponse])
response.settings = saml_settings
if response.is_valid? && user = current_account.users.find_by_email(response.name_id)
authorize_success(user)
else
authorize_failure(user)
end
end
关注此 Source。
我想创建介于 init 和 consume 之间的方法。
更新:
就像我有这个,我猜它遵循 SAML 1.1,我想知道如何使用 Rails 中的 get_settings 方法生成 SAML 2.0 请求。
def SSOAccount.get_settings
settings = Onelogin::Saml::Settings.new
settings.issuer = "https://example.com/test"
settings.idp_sso_target_url ="https://testexample.com"
settings.idp_cert_fingerprint ="########"
settings.relying_party_identifier = "knsdfnsdf"
settings.assertion_consumer_service_url = "https://www.example.com/consume?http_referer=https://testexample.com"
settings.idp_confirmation_method = "urn:oasis:names:tc:SAML:1.0:cm:bearer"
settings.asserting_party_id = "23424dfsdf"
settings.referer_url = "https://textexample.com"
settings.groups = ["USER"]
settings
end
您可以 post 数据,但要以类似于重定向的方式进行。重定向的问题是数据通常大于浏览器可接受的容量 url。
您需要这样做,这样 post 来自用户的浏览器而不是您的服务器。也就是说,post 需要获取用户的浏览器会话,以便使用 SAML 令牌提交关联的 cookie 和会话数据。
一种解决方案是使用 saml_tools_demo's indentifies#create
view 中所示的自行提交表单。
查看 matching controller action 以了解数据的构造方式。
我一直在尝试在我的应用程序中实施 SAML,其中我想对用户进行身份验证并创建 SAML 令牌(响应)并将用户重定向到创建会话的其他网站。 到目前为止,我已经能够获取有关 init 方法和 consume 方法的信息,这些方法将由其他网站实现。
def init
request = OneLogin::RubySaml::Authrequest.new
redirect_to(request.create(saml_settings))
end
def consume
response = OneLogin::RubySaml::Response.new(params[:SAMLResponse])
response.settings = saml_settings
if response.is_valid? && user = current_account.users.find_by_email(response.name_id)
authorize_success(user)
else
authorize_failure(user)
end
end
关注此 Source。
我想创建介于 init 和 consume 之间的方法。
更新:
就像我有这个,我猜它遵循 SAML 1.1,我想知道如何使用 Rails 中的 get_settings 方法生成 SAML 2.0 请求。
def SSOAccount.get_settings
settings = Onelogin::Saml::Settings.new
settings.issuer = "https://example.com/test"
settings.idp_sso_target_url ="https://testexample.com"
settings.idp_cert_fingerprint ="########"
settings.relying_party_identifier = "knsdfnsdf"
settings.assertion_consumer_service_url = "https://www.example.com/consume?http_referer=https://testexample.com"
settings.idp_confirmation_method = "urn:oasis:names:tc:SAML:1.0:cm:bearer"
settings.asserting_party_id = "23424dfsdf"
settings.referer_url = "https://textexample.com"
settings.groups = ["USER"]
settings
end
您可以 post 数据,但要以类似于重定向的方式进行。重定向的问题是数据通常大于浏览器可接受的容量 url。
您需要这样做,这样 post 来自用户的浏览器而不是您的服务器。也就是说,post 需要获取用户的浏览器会话,以便使用 SAML 令牌提交关联的 cookie 和会话数据。
一种解决方案是使用 saml_tools_demo's indentifies#create
view 中所示的自行提交表单。
查看 matching controller action 以了解数据的构造方式。