Как аутентифицировать пользователей с помощью rubycas-сервера в рельсах?

Я использую rubycas-server GEM как мой сервер CAS. Этот сервер CAS проверяет учетные данные пользователя из пользовательской таблицы другой базы данных. Эти пользователи созданы с использованием Devise драгоценный камень. 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, Пожалуйста помоги.

1 ответ

Решение

Наконец я получил решение для моего вопроса. На самом деле encrypt_function: не требуется в настройках аутентификатора. Поскольку я использую электронную почту и encrypted_password, который генерируется Devise чтобы проверить учетные данные пользователя, финальный аутентификатор:

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 драгоценный камень не установлен 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 и перезагрузите сервер. Я думаю, что это должно работать.

Другие вопросы по тегам