1

我使用rubycas-serverGEM 作为我的 CAS 服务器。此 CAS 服务器正在检查来自不同数据库的用户表的用户凭据。这些用户是使用Devisegem 创建的。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中给出的一些示例

https://code.google.com/p/rubycas-server/wiki/UsingTheSQLEncryptedAuthenticator

但我找不到适合的devise。请帮忙。

4

1 回答 1

2

最后我得到了我的问题的解决方案。实际上encrypt_function:验证器设置中不需要。当我使用生成的电子邮件和 encrypted_pa​​sswordDevise来检查用户的凭据时,最终的身份验证器是:

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-servergem 默认不设置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-serverGEMFILE 并重新启动服务器。我认为这应该有效。

于 2014-10-17T06:21:09.623 回答