2017 © Pedro Peláez
 

craft-plugin craft-jwt

JWT Authorization

image

flipboxfactory/craft-jwt

JWT Authorization

  • Wednesday, May 16, 2018
  • by nateiler
  • Repository
  • 2 Watchers
  • 2 Stars
  • 345 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 6 Versions
  • 67 % Grown

The README.md

JWT Tokens for Craft CMS

Join the chat at https://gitter.im/flipboxfactory/craft-jwt Latest Version Software License Build Status Coverage Status Quality Score Total Downloads, (*1)

JWT (JSON Web Token) for Craft CMS assists in issuing and claiming tokens. The intent is to issue a token which, at a later time, can be claimed and used to perform various actions.
The life of a JWT is defined upon creation and, (*2)

Use Cases

  • Protected downloads
  • Protected pages/content
  • Authorization to API
  • Tracking actions (by user)
  • Sharing downloads/pages to guests

To learn more about JWT visit JWT.IO, (*3)

Requirements

This plugin requires Craft CMS 3.0 or later., (*4)

Installation

Simply run the following command from your project root:, (*5)

composer require flipboxfactory/craft-jwt

Once the plugin is included in your project, navigate to the Control Panel, go to Settings → Plugins and click the “Install” button for the JWT Plugin., (*6)

Templating

The craft.jwt template variable provides access to the entire JWT plugin. To access the services, you may use:, (*7)

Identity Service:, (*8)

{% set token = craft.jwt.identity.issue(currentUser) %} {# To generate a token (store the identity) #}
{% set claim = craft.jwt.identity.claim(token|trim) %} {# To claim a token (retrieve the identity) #}

Route Service:, (*9)

{% set token = craft.jwt.route.issue('action/path') %} {# To generate a token (store the action path) #}
{% set claim = craft.jwt.route.claim(token|trim) %} {# To claim a token (retrieve the action path) #}

Examples

Common usages of this plugin are as follows:, (*10)

Self-Consumable API (Hybrid API - calling your own API)

Making calls to your own API is a great candidate for JWT Identity tokens. The flow works something like this: 1. Set a JavaScript variable: let jwt = '{{ craft.jwt.identity.issue(currentUser) }}' 2. Using Axois (or other HTTP client library), make a call to your own API using the JWT token created in step 1. 3. Apply the Authentication filter to your API controller(s)., (*11)

/**
 * @inheritdoc
 */
public function behaviors()
{
    return \craft\helpers\ArrayHelper::merge(
        parent::behaviors(),
        [
            'authenticator' => [
                'authMethods' => [
                    \flipbox\craft\jwt\filters\JwtHttpBearerAuth::class
                ]
            ]
        ]
    );
}

A full example of the Authentication filter implementation can be found in our RESTful API for Craft CMS, (*12)

Protected Downloads (or page access)

Perhaps a user needs to access a protected page or file download. To circumvent exposing the url publicly, issue a JWT Route token., (*13)

Render template:
{% set token  = craft.jwt.route.issue(['templates/render', {'template': '_protected/template'}], currentUser)
{# the link will automatically render the template #}
<a href="{{ actionUrl("jwt/route", {jwt: token|trim}) }}">View Protected Page</a>
File Download
{% set asset = craft.assets.one() %}
{% set token  = craft.jwt.route.issue(['assets/thumb', {'uid': asset.uid, width: 100, height: 100}], currentUser) %}
<a href="{{ actionUrl("jwt/route", {jwt: token|trim}) }}">Download Protected File</a>

Note: It's important to note that in the File Download example, we're also passing the currentUser param when generating the token. As a result, when the action is processed we're assuming the identity of the user who issued the token prior to performing the action. This means a user doesn't have to be logged in to Craft., (*14)

Caution

JWTs created by this plugin are technically JWS (JSON Web Signature) tokens. The contents of a token can be easily decoded and viewed using tools such as jwt.io. It is important NOT to store sensitive data in a token. The Craft 'security key' is used to sign each token; ensuring the contents have not been tampered with., (*15)

A token is valid for, (*16)

Contributing

Please see CONTRIBUTING for details., (*17)

Credits

License

The MIT License (MIT). Please see License File for more information., (*18)

The Versions

16/05 2018

dev-master

9999999-dev

JWT Authorization

  Sources   Download

The Requires

 

The Development Requires

16/05 2018

dev-develop

dev-develop

JWT Authorization

  Sources   Download

The Requires

 

The Development Requires

16/05 2018

1.0.0-rc.3

1.0.0.0-RC3

JWT Authorization

  Sources   Download

The Requires

 

The Development Requires

21/03 2018

1.0.0-rc.2

1.0.0.0-RC2

JWT Authorization

  Sources   Download

The Requires

 

The Development Requires

21/03 2018

1.0.0-rc.1

1.0.0.0-RC1

JWT Authorization

  Sources   Download

The Requires

 

The Development Requires

21/03 2018

1.0.0-rc

1.0.0.0-RC

JWT Authorization

  Sources   Download

The Requires

 

The Development Requires