73 lines
1.7 KiB
Markdown
73 lines
1.7 KiB
Markdown
#devise-kerberos-authenticatable
|
|
|
|
##Description
|
|
|
|
devise-kerberos-authenticatable is a Devise exenstion that can be used to authenticate against Kerberos as setup in your local krb5.conf file.
|
|
|
|
##Installation
|
|
|
|
###Dependencies
|
|
[timfel-krb5-auth](https://github.com/timfel/krb5-auth) depends on the headers and development libraries for MIT Kerberos.
|
|
|
|
```sudo apt-get install libkrb5-dev```
|
|
###Server Setup
|
|
Modify your /etc/krb5.conf file as necessary to authenticate against your Kerberos server.
|
|
|
|
###Rails Setup
|
|
* Update your gemfile
|
|
|
|
```gem 'devise-kerberos-authenticatable', :git => 'git://github.com/atomaka/devise-kerberos-authenticatable.git'```
|
|
|
|
* Create a migration to add username field to user table
|
|
|
|
```
|
|
class AddUsernameToUser < ActiveRecord::Migration
|
|
def change
|
|
add_column :users, :username, :string
|
|
end
|
|
end
|
|
```
|
|
|
|
* Create a migration to remove the index on email from the user table
|
|
|
|
```
|
|
class RemoveIndexOnEmailFromUsers < ActiveRecord::Migration
|
|
def up
|
|
remove_index :users, 'email'
|
|
end
|
|
|
|
def down
|
|
add_index :users, :email, :unique => true
|
|
end
|
|
end
|
|
```
|
|
* Migrate the databse
|
|
|
|
```
|
|
rake db:migrate
|
|
```
|
|
|
|
* Edit config/initializers/devise.rb to use a username instead of email for login and add a kerberos realm to use.
|
|
|
|
```
|
|
config.authentication_keys = [ :username ]
|
|
config.kerberos_realm = "EXAMPLE.REALM"
|
|
```
|
|
|
|
|
|
* Update your Devise model app/models/user.rb
|
|
|
|
```
|
|
devise :kerberos_authenticatable
|
|
attr_accessible :username
|
|
```
|
|
|
|
* Rebuild your Devise views automatically or by hand.
|
|
|
|
```
|
|
rake generate devise:views
|
|
```
|
|
|
|
##Other
|
|
* Currently only supports authentication and does not include password modification functionality.
|
|
* Initial code based largely on [devise_pam_authenticatable](https://github.com/jwilson511/devise_pam_authenticatable)
|