Skip to content
This repository

Rack module for NTLM Authentication

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 test
Octocat-spinner-32 .gitignore
Octocat-spinner-32 Gemfile
Octocat-spinner-32 README.markdown
Octocat-spinner-32 Rakefile
Octocat-spinner-32 rack-ntlm.gemspec


Transparent authentication with NTLM.


In your Gemfile add:

gem 'rack-ntlm', :git => 'git://'

Then add rack-ntlm to the middleware chain in config/application.rb (Rails 3)

config.middleware.use "Rack::Ntlm", {
  :uri_pattern => /\/login/                       # (default = /\//) (any URL)
  :host => '<Active Directory hostname>',
  :port => 389,                                   # default = 389
  :base => 'Base namespace for LDAP search',
  :search_filter => '(dn=%1)'                     # default = (sAMAccountName=%1)
  :auth => {
    :username => '<username to bind to LDAP>',
    :password => '<password to bind to LDAP>'

# credits to dtsato to this awesome configuration and defaults

How it works?

NTLM is a transparent authentication system developed by Microsoft, it needs that your webserver use keepalive because the handshake consists in 6 steps all with the same connection.

1: C --> S GET ...

2: C <-- S 401 Unauthorized WWW-Authenticate: NTLM

3: C --> S GET ... Authorization: NTLM

4: C <-- S 401 Unauthorized WWW-Authenticate: NTLM

5: C --> S GET ... Authorization: NTLM

6: C <-- S 200 Ok

Something went wrong with that request. Please try again.