我正在使用两个用户模型设计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