Plugin / API Bearer Auth

Description

Description

The API Bearer Auth plugin enables authentication for the REST API by using JWT access an refresh tokens. After the user logs in, the access and refresh tokens are returned and can be used for the next requests. Issued tokens can be revoked from within the users admin screen. See below for the endpoints.

Note that after activating this plugin, all REST API endpoints will need to be authenticated, unless the endpoint is whitelisted in the api_bearer_auth_unauthenticated_urls filter (see FAQ for how to use this filter).

JWT

Access tokens can be formatted as JWT tokens. For this to work, you first have to create a secret and add it to the wp-config.php file. If you don’t do this, access tokens will work also, but are just random strings. To create a random secret key, you can do for example:

base64_encode(openssl_random_pseudo_bytes(64));

And then add the result to wp-config:

define('API_BEARER_JWT_SECRET', 'mysecretkey');

If you have problems, you can verify your JWT tokens at: https://jwt.io/

Revoke tokens

This plugin adds a column to the users table in de admin where you can see when a token expires. You can also revoke tokens by selection the “Revoke API tokens” from the bulk actions select box.

API endpoints

Note that all endpoints expect JSON in the POST body.

Login

Endpoint:

POST /api-bearer-auth/v1/login

Request body:

{"username": "my_username", "password": "my_password"}

Response:

{
  "wp_user": {
    "data": {
      "ID": 1,
      "user_login": "your_user_login",
      // other default WordPress user fields
    }
  },
  "access_token": "your_access_token",
  "expires_in": 86400, // number of seconds
  "refresh_token": "your_refresh_token"
}

Make sure to save the access and refresh token!

Refresh access token

Endpoint:

POST /api-bearer-auth/v1/tokens/refresh

Request body:

{"token": "your_refresh_token"}

Response success:

{
  "access_token": "your_new_access_token",
  "expires_in": 86400
}

Response when sending a wrong refresh token is a 401:

{
  "code": "api_api_bearer_auth_error_invalid_token",
  "message": "Invalid token.",
  "data": {
    "status": 401
  }
}

Do a request

After you have the access token, you can make requests to authenticated endpoints with an Authorization header like this:

Authorization: Bearer <your_access_token>

Note that Apache sometimes strips out the Authorization header. If this is the case, make sure to add this to the .htaccess file:

RewriteCond %{HTTP:Authorization} ^(.*)
# Don't know why, but some need the line below instead of the RewriteRule line
# SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

If you are not logged in or you send an invalid access token, you get a 401 response:

{
  "code": "api_bearer_auth_not_logged_in",
  "message": "You are not logged in.",
  "data": {
    "status": 401
  }
}

Ratings

0
0 reviews

Rating breakdown

Details Information

Version

20190908

First Released

30 Nov, 2017

Total Downloads

914

Wordpress Version

4.6 or higher

Tested up to:

5.2.4

Require PHP Version:

5.4.0 or higher

Tags

Contributors

Languages

The plugin hasn't been transalated in any language other than English.

DIRECTORY DISCLAIMER

The information provided in this THEME/PLUGIN DIRECTORY is made available for information purposes only, and intended to serve as a resource to enable visitors to select a relevant theme or plugin. wpSocket gives no warranty of any kind, express or implied with regard to the information, including without limitation any warranty that the particular theme or plugin that you select is qualified on your situation.

The information in the individual theme or plugin displayed in the Directory is provided by the owners and contributors themselves. wpSocket gives no warranty as to the accuracy of the information and will not be liable to you for any loss or damage suffered by you as a consequence of your reliance on the information.

Links to respective sites are offered to assist in accessing additional information. The links may be outdated or broken. Connect to outside sites at your own risk. The Theme/Plugin Directory does not endorse the content or accuracy of any listing or external website.

While information is made available, no guarantee is given that the details provided are correct, complete or up-to-date.

wpSocket is not related to the theme or plugin, and also not responsible and expressly disclaims all liability for, damages of any kind, arising out of the use, reference to, or reliance on, any information or business listed throughout our site.

Keep Leading Your Followers!
Share it for them.