# UeberauthActiveDirectory

Active Directory [Ueberauth]( strategy using [Exldap](

## Installation

Add ueberauth_active_directory to your list of dependencies in `mix.exs`:

def deps do
  [{:ueberauth_active_directory, "~> 0.1"}]

Ensure ueberauth_active_directory is started before your application:

def application do
  [applications: [:ueberauth_active_directory]]

Run `mix deps.get`

## Usage

Add AD server information to `<mix env>.secret.exs`

Config Value | Usage
------------ | -----
server | Your Active Directory server address
base |   Base distingushed name for your domain. e.g. lab.local would be `DC=lab,DC=local`
port | Ldap listening port
ssl | Enable SSL
user_dn | Bind account username in distinguishedName format
password | Bind account password

# config/dev.secret.exs

config :ueberauth, Ueberauth.Strategy.ActiveDirectory.Ldap,
  server: "",
  base: "DC=lab,DC=local",
  port: 389,
  ssl: false,
  user_dn: "CN=vagrant,CN=Users,DC=lab,DC=local",
  password: "vagrant"

Configure Ueberauth to use the strategy

# config/dev.exs

config :ueberauth, Ueberauth,
  providers: [
    active_directory: { Ueberauth.Strategy.ActiveDirectory, [] },

Configure authentication routes

scope "/auth", MyApp do
  pipe_though :browser

  get "/:provider", AuthController, :request
  get "/:provider/callback", AuthController, :callback

Include Überauth plug in your controller

defmodule MyApp.AuthController do
  use MyApp.Web, :controller
  plug Ueberauth

## Tests
Tests require an AD environment to run.  The vagrantfile included in the repo will take care of setting up the environment for you.
### Prerequisites
* [Vagrant](

### Running Tests
* Clone the repo
* `cd ueberauth_active_directory`
* Run `vagrant up`
* Run `mix test`