# Überauth Okta

[![Module Version](](
[![Hex Docs](](
[![Total Download](](
[![Last Updated](](

> Okta strategy for Überauth.

## Installation

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

def deps do
  [{:ueberauth_okta, "~> 0.2"}]

Add the strategy to your applications:

def application do
  [extra_applications: [:ueberauth_okta]]

Include the provider in your configuration for Ueberauth:

config :ueberauth, Ueberauth,
  providers: [
    okta: { Ueberauth.Strategy.Okta, [] }

You'll need to register a new application with Okta and get the `client_id` and `client_secret`. That setup is out of the scope of this library, but some notes to remember are:
  * Ensure `Authorization Code` grant type is enabled
  * You have valid `Login Redirect Urls` listed for the app that correctly reference your callback route(s)
  * `user` and/or `group` permissions may need to be added to your Okta app before successfully authenticating

Then include the configuration for okta.
config :ueberauth, Ueberauth.Strategy.Okta.OAuth,
  client_id: System.get_env("OKTA_CLIENT_ID"),
  client_secret: System.get_env("OKTA_CLIENT_SECRET"),
  site: ""

If you haven't already, create a pipeline and setup routes for your callback handler
pipeline :auth do
  plug Ueberauth
scope "/auth" do
  pipe_through [:browser, :auth]
  get "/:provider/callback", AuthController, :callback

Create an endpoint for the callback where you will handle the `Ueberauth.Auth` struct
defmodule MyApp.AuthController do
  use MyApp.Web, :controller
  def callback_phase(%{ assigns: %{ ueberauth_failure: fails } } = conn, _params) do
    # do things with the failure
  def callback_phase(%{ assigns: %{ ueberauth_auth: auth } } = conn, params) do
    # do things with the auth

## Goals
This is just the start `ueberauth_okta` strategy for support with Okta auth protocols. Initially, I will mainly be focused on Okta OAuth, but once that is up I will move onto other autentication routes I'd also like to support (see below):

- [x] OAuth 2.0
- [ ] SAML

## Copyright and License

Copyright (c) 2018 Jon Carstens

Released under the [MIT License](./