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