如何使用多个模型设置devise_saml_authenticatable?

时间:2017-06-08 16:42:08

标签: ruby-on-rails devise ruby-on-rails-5 activeadmin simplesamlphp

我正在使用两个用户模型设计rails 5应用程序; user和admin_user(active_admin的默认值)。我正在使用设计进行身份验证。最初我使用的是数据库可验证的,但现在我需要通过saml实现SSO。 我发现并成功为一个模型(用户)设置了devise_saml_authenticatable gem,但我不知道从哪里开始用其他模型(active_admin admin_users)设置它。我在本地使用simpleSamlPhp作为我的身份提供者。

这是我在devise.rb中设计的配置

Devise.setup do |config| ...

config.saml_configure do |settings|

      settings.assertion_consumer_service_url     = "http://localhost:3000/users/saml/auth"
      settings.assertion_consumer_service_binding = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
      settings.name_identifier_format             = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
      settings.issuer                             = "http://localhost:3000/saml/metadata"
      settings.authn_context                      = ""

      settings.idp_slo_target_url                 = "http://simplesaml.dev/saml2/idp/SingleLogoutService.php"


      settings.idp_sso_target_url                 = "http://simplesaml.dev/saml2/idp/SSOService.php"

      settings.idp_cert                           = <<-CERT.chomp
-----BEGIN CERTIFICATE-----

My-Certificate-Here

-----END CERTIFICATE-----
      CERT
    end
end

问题是rails会将日志引导到Url:localhost:3000 / users / saml / sign_in到http://localhost:3000/users/saml/auth 但在通过管理员登录页面登录时,将管理员登录localhost:3000 / users / saml / sign_in指向同一个URL。

的routes.rb

  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)
  devise_for :users

我的模特:

admin_user.rb

class AdminUser < ApplicationRecord
  devise  :saml_authenticatable
end

user.rb

class User < ApplicationRecord
  devise  :saml_authenticatable
end

0 个答案:

没有答案