6

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

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

私が見たいくつかのプロジェクトはfirebase/jwtを使用していますが、これが必要かどうか、または と互換性があるかどうかはわかりませんslim-jwt-auth

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

4

2 に答える 2

9

追加のライブラリをインストールしてトークンを生成することはできますが、その必要はありません。ミドルウェアは内部で 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を参照してインスピレーションを得ることもできます。

于 2016-11-23T03:38:42.203 に答える
0

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

注意喚起!ミドルウェアは OAuth 2.0 認証サーバーを実装しておらず、認証トークンを生成、発行、または保存する方法も提供していません。ヘッダーまたは Cookie を介して渡された場合にのみ、トークンを解析して認証します。

(強調は私です)

実際、別のライブラリを使用して JWT トークンを生成し、それを によって消費することができますslim-jwt-auth。両方のライブラリが仕様を正しく実装している限り、少なくとも必須を使用して仕様の一部を実装するだけであれば、相互運用性の問題は発生しないはずです。


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

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

于 2016-11-22T15:42:39.850 に答える