ring-api-key-middleware/README.org

71 lines
1.8 KiB
Org Mode
Raw Normal View History

2017-10-30 15:38:37 +00:00
[[https://travis-ci.org/threatgrid/ring-jwt-middleware][https://travis-ci.org/threatgrid/ring-api-key-middleware.png?branch=master]]
* =ring-api-key-middleware=
A simple middleware to authenticate users using API Key
** Features
- the function to check the validity of API Key should be provided and not part
of this middleware.
** Usage
*** Middleware & options
Use =wrap-api-key-auth-fn= to create an instance of the middleware,
wrap your routes with it:
#+BEGIN_SRC clojure
(defn get-auth-from-api-key [token]
(when (= token "secret-api-key")
2017-11-07 16:07:53 +00:00
{:user {:id "user-01" :name "username"}
:groups #{{:id "cisco" :name "Cisco"}}
:roles #{:admin :user}
:auth-type :api-key}))
2017-10-30 15:38:37 +00:00
(def app
2017-11-07 16:07:53 +00:00
((wrap-api-key-auth-fn get-auth-from-api-key) handler))
2017-10-30 15:38:37 +00:00
#+END_SRC
When configured like this all requests with the header:
#+BEGIN_SRC
Authorization: apiKey secret-api-key
#+END_SRC
will be modified to be passed to the handler with the new key `:api-key-info`
containing:
#+BEGIN_SRC clojure
2017-11-07 16:07:53 +00:00
{:user {:id "user-01" :name "username"}
:groups #{{:id "cisco" :name "Cisco"}}
:roles #{:admin :user}
:auth-type :api-key}
2017-10-30 15:38:37 +00:00
#+END_SRC
If the header contain an Authorization header with an unknown `api-key` the
request will be rejected with a 403.
#+BEGIN_SRC
Authorization: apiKey unknown-api-key
#+END_SRC
If the header contain something with another authorization kind or no
authorization header like:
#+BEGIN_SRC
Authorization: Bearer something-else
#+END_SRC
Then the request will be passed to the handler without any `api-key-info`. This
provide the ability for other authentication middleware to be used. Deciding
what to do about authenticated or non-authenticated user is left for another
middleware or to be handled by the app handler.
** License
Copyright © 2015-2017 Cisco Systems
Eclipse Public License v1.0