The Wayback Machine - http://web.archive.org/web/20200917131525/https://github.com/foxford/idp
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
rel
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Identity Provider

Build Status

Highly available, scalable and extendible Identity Provider. It utilises OAuth2 Authorization Framework to retrieve and associate one or many authentication identities (globally unique identifiers) with the unified account.

At this point, only OAuth2 Client Credentials Grant flow is supported.

How To Use

To build and start playing with the application, execute following shell commands within different terminal tabs:

## Building the development image and running the container with Riak KV within it..
$ ./run-docker.sh
## Building the application and executing an erlang shell.
$ make app shell

API

IdP could be operated through its REST APIs:

To make examples in the API reference work, we need to create an account with admin permissions (account that is a member of predefined admin ACL group).

%% We specify an account identifier explicitly just for simplicity reasons
Tokens =
  idp_cli_account:create(
    #{acl => [{<<"admin">>, riakacl_group:new_dt()}]},
    #{aud => <<"example.org">>, expires_in => infinity}),
io:format(
  "ID='~s'~nACCESS_TOKEN='~s'~nREFRESH_TOKEN='~s'~n",
  [ maps:get(id, Tokens),
    maps:get(access_token, Tokens),
    maps:get(refresh_token, Tokens)]).

For authorization examples to work, we also need client's token. Here is how it can be created.

Claims =
  #{aud => <<"idp.example.org">>,
    iss => <<"example.org">>,
    exp => 32503680000,
    sub => <<"John">>},
{ok, Pem} = file:read_file(idp:conf_path(<<"keys/example.priv.pem">>)),
{Alg, Priv} = jose_pem:parse_key(Pem),
ClientToken = jose_jws_compact:encode(Claims, Alg, Priv),
io:format("CLIENT_TOKEN='~s'~n", [ClientToken]).

Finally, we could use the following endpoint URI and tokens issued bellow.

ENDPOINT='https://localhost:8443/api/v1'

License

The source code is provided under the terms of the MIT license.

You can’t perform that action at this time.