#refresh-token #oauth2 #command-line-tool #authorization #http-header #authorization-header #generate

app bearer

Command line utility to generate HTTP Authorization header with bearer tokens. This is achieved with OAuth2 authorization code and refresh token workflow.

5 releases

Uses old Rust 2015

0.2.3 Jun 9, 2017
0.2.2 Apr 8, 2017
0.2.1 Apr 5, 2017
0.2.0 Apr 2, 2017
0.1.0 Mar 22, 2017

#960 in Authentication

BSD-3-Clause

52KB
1K SLoC

Bearer

Build Status Current Crates.io Version Latests Documentation

Basics

bearer is a command line utility to generate Authorization HTTP header with bearer tokens. See RFC 6750.

bearer comes with a --register that will ask you the OAuth 2.0 client information to initialize the access and refresh tokens.

Afterwhat, it generate a header that can be used in a curl command:


    $ curl -H "$(bearer <client_name>)" "https://<oauth2 api>" | jq

Clients that received refresh token will automatically consume them to retrieve new access token before they expires.

Otherwise the command --refresh has to be used to get a new access token.

Installation

Currently, bearer is installable using cargo


    $ cargo install bearer

Note:

Cargo install binaries in `$HOME/.cargo/bin` directory. Make sure it is in
your `$PATH` environment.

Register a client


    $ bearer my-client-name --register

You have to follow the instruction of the command.

    Before continue, register the a client with the following url to the OAuth2 Provider:

    http://localhost:6750/callback

    Ensure your port is not already open by another service.
    If the provider require a https url, please run an https reverse proxy before continue.

    Enter the OAuth2.0 Provider Name:
    Enter the Client Id: 
    Enter the Client Secret: 
    Enter the scope (optional): profile email

    Visit to finish the configuration: http://localhost:6750/callback

After input thoses informations your have to open your browser and visit the http://localhost:6750/callback url to retrieve tokens. Then the message below confirm everything is ok.

    Tokens retrieved succesfully

List registered client


    $ bearer --list
    my-client-name

Generating Authorizaton header


    $ bearer my-client-name
    Authorization: Bearer GlwlBMvJI

Refreshing token

This is useless if your OAuth2 provider send a refresh token.

Otherwise,

if the access token has been retrieved without refresh token, it cannot be replaced automatically by a new one. Command will failed when the token expires.


    $ bearer -c config my-client-without-refresh-token
    ERROR: Client must be refreshed. (No Refresh Token)
    $ bearer my-client-without-refresh-token --refresh

    Visit to finish the configuration: http://localhost:6750/callback

Supported Platform

bearer has been developped under Linux.

It may not work under other operating system. (Not tests)

Dependencies

~20MB
~482K SLoC