我正在使用rubycas-server
GEM作为我的CAS服务器。此CAS服务器正在检查来自不同数据库的用户表的用户凭据。这些用户是使用Devise
gem创建的。 Devise以加密形式将每个用户的密码保存在数据库表中。因此,在此rubycas-server
的配置文件中包含authenticator
部分,其代码如下:
authenticator:
class: CASServer::Authenticators::SQL
database:
adapter: postgresql
database: testdb
username: postgres
password: root
host: localhost
pool: 5
user_table: users
username_column: email
password_column: encrypted_password
encrypt_function: <encryption function>
如上面最后一行代码所述,encrypted_function
包含检查凭据的算法。一些样本在URL中被赋予gelow
https://code.google.com/p/rubycas-server/wiki/UsingTheSQLEncryptedAuthenticator
但我找不到适合devise
的内容。请帮忙。
答案 0 :(得分:2)
最后我得到了我的问题的解决方案。实际上,身份验证器设置中不需要encrypt_function:
。由于我使用由Devise
生成的电子邮件和encrypted_password来检查用户的凭据,因此最终验证者是:
authenticator:
class: CASServer::Authenticators::SQLBcrypt
database:
adapter: postgresql
database: testdb
username: postgres
password: root
host: localhost
pool: 5
user_table: users
username_column: email
password_column: encrypted_password
默认情况下,设计用户BCrypt
会加密密码,这就是我使用CASServer::Authenticators::SQLBcrypt
课程的原因。但rubycas-server
gem默认情况下不设置SQLBcrypt
个配置。所以转到lib/casserver/authenticators/authlogic_crypto_providers
路径并打开brypt.rb
文件。在此文件中,您可以看到这些行被注释,因此取消注释它们或如果不存在则添加它们
acts_as_authentic do |c|
c.crypto_provider = Authlogic::CryptoProviders::BCrypt
end
然后在终端中运行gem install bcrypt-ruby
或将此GEM添加到rubycas-server
GEMFILE并重新启动服务器。我认为这应该有用。