如何在rails中使用rubycas服务器对用户进行身份验证



我使用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 中给出的一些示例

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

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

我终于找到了问题的答案。实际上,在验证器设置中不需要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

作为Devise用户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-server GEMFILE并重新启动服务器。我认为这应该奏效。

相关内容

  • 没有找到相关文章

最新更新