2016-11-22 42 views
1

slim-jwt-authを使用して、JSON APIのトークンベースの認証を作成しています。slim-jwt-authでトークンを生成する

ドキュメントは非常に役に立ちますが、私が理解していないことの1つはトークンがどのように生成されるかです。ドキュメントは、ミドルウェアがトークンを解読できるとは言いますが、エンコードする方法は見えません。

私が見たプロジェクトの中にはfirebase/jwtが使われていますが、これが必要か、それともslim-jwt-authと互換性があるのか​​分かりません。

slim-jwt-authはトークンを生成できますか?

答えて

4

トークンを生成するために余分なライブラリをインストールする必要はありませんが、ミドルウェアは内部でfirebase/php-jwtを使用しているので、同じライブラリを使用してトークンを生成することができます。次のようなもの

use \Firebase\JWT\JWT; 
use \Tuupola\Base62; 

$now = new DateTime(); 
$future = new DateTime("now +2 hours"); 
$jti = Base62::encode(random_bytes(16)); 

$secret = "your_secret_key"; 

$payload = [ 
    "jti" => $jti, 
    "iat" => $now->getTimeStamp(), 
    "nbf" => $future->getTimeStamp() 
]; 

$token = JWT::encode($payload, $secret, "HS256"); 

また、Slim API Skeletonにインスピレーションを確認することもできます。

0

ミドルウェアはトークンのみを処理します。slim-jwt-authランディングページの免責事項によれば、それらを生成する方法はありません。

先頭へ戻るミドルウェアは、OAuth 2.0認証サーバを実装しておらず、認証トークンを生成、発行、格納する方法も提供していません。ヘッダやクッキーを介して渡された場合にのみ、トークンの解析と認証を行います。

(強調は私です)

あなたは確かに、その後slim-jwt-authによって消費されるJWTトークンを生成するために、別のライブラリを使用することができます。両方のライブラリが仕様を正しく実装している限り、少なくとも仕様の一部を実装するために必須のもののみを使用する場合は、相互運用性の問題はありません。


あなたはJWT処理のためのPHPライブラリのリストについては、jwt.ioを確認することができますが、firebase/jwtは良い出発点になります。自分でトークンを生成する代わりに、トークンの認証と発行をサードパーティに完全に委任することを検討している場合は、Auth0を見ることをお勧めします。

開示:私はAuth0で働いています。