トークンPHPの使い方

藏色散人
藏色散人オリジナル
2021-09-21 09:21:512869ブラウズ

PHP でトークンを使用する方法: 1. クライアント ユーザーは、ユーザー名とパスワードを入力してログインし、トークンを要求します。 2. JWT 仕様を使用してトークンを生成します。 3. トークンの適時性を確認します。トークン; 4. 、クライアントはトークンを使用してデータを要求します。

トークンPHPの使い方

この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、Dell G3 コンピューター。

トークン PHP の使用方法?

php トークンの生成と使用

1. ログインにトークンを使用する理由

フロント エンドとバック エンドの分離または複数のサポートWeb アプリケーションの場合、元の Cookie またはセッションの使用に大きな問題が発生します。
Cookie とセッション認証は、認証のために同じプライマリ ドメイン名の下にある必要があります (現在、問題を解決するためにセッションを Redis に保存できます) 。

2. 解決策

oauth2 と jwt

jwt: はセキュリティ標準です。基本的な考え方は、ユーザーが認証サーバーにユーザー名とパスワードを提供し、サーバーがユーザーが送信した情報の正当性を検証し、検証が成功するとトークン (トークン) が生成されて返されるというものです
OAuth2: 安全な認証フレームワークです。システム内のさまざまなロール、ユーザー、サービス フロントエンド アプリケーション (API など)、クライアント (Web サイトやモバイル APP など) の間で相互認証を実現する方法について詳しく説明します。
(JWT、この JSON Web トークンはここで認証に使用されます)

3. 生成方法

  1. ヘッダー: 暗号化タイプ

  2. 説明: メッセージの内容

  3. key: 暗号化に使用されるランダム コード

  4. 上記の 3 つの部分を使用して接続します。 hs256 を使用して暗号化してトークンを生成します

4. 詳細な生成方法

1)ヘッダーは通常、トークンのタイプ (つまり、JWT) の 2 つの部分で構成されます。 ) と使用される暗号化アルゴリズム (SHA256 や RSA など)
{
      "alg": "HS256",
      "typ": "JWT"
}

その後、この json は Base64Url でエンコードされ、最初の部分になります

2)。声明。宣言はエンティティに関するものです。
{
      "exp": "1525785339",
      "sub": "1234567890",
      "name": "John Doe",
      "admin": true
}


ペイロードは Base64Url でエンコードされ、2 番目の部分になります

(追記: この情報は改ざんから保護されていますが、誰でも読み取ることができます。重要な情報は暗号化されていない限り送信しないでください。中に入れます)

3)。暗号化キーを使用します

4)。署名するには、最初のエンコードされた部分、2 番目のエンコードされた部分、そしてキーを使用する必要があります鍵。最初の部分の暗号化アルゴリズムを使用して署名します。
HMACSHA256(
          base64UrlEncode(header) + "." + base64UrlEncode(payload),
          key
)


この署名は、メッセージが改ざんされているかどうかを確認するために使用されます。

(PHP は暗号化に crypt メソッドを使用します。注: SHA-256 は改ざん防止に使用され、AES-256 は暗号化に使用されます。2 つの概念は異なります)

5. トークン保存場所

通常は、ベアラー モードを使用して、リクエスト ヘッダーの Authorization フィールドに JWT (Authorization: Bearer) を追加する必要があります (もちろん、JWT をリクエスト ヘッダーの後にパラメーターとして渡すなど、どこにでも配置することもできます) URL (クライアントが認識できるものであれば可能ですが、JWT は標準なので、標準に従う方がよいでしょう)

推奨学習: "PHP ビデオ チュートリアル

"

6. 使用方法
  1. クライアント ユーザーはユーザー名とパスワードを入力してログインし、トークンを要求します
  2. サーバーは要求を受信した後、JWT 仕様を使用して次のことを行います。トークンを生成し、クライアントに返します。
  3. クライアント トークンを受信したら、復号化し、トークンの適時性 (トークンの有効期限) を確認し、保存します。
  4. クライアントトークンを使用してデータをリクエストします
  5. サーバーはトークンを受信して​​復号化した後、ユーザーの ID を検証し、適時性を検証してから、ユーザーを検証します

7。欠点
1. 无法作废已颁布的令牌(对token刷新使用期限)
2. 不易应对过期数据(支持 token 失效)

したがって、トークンを使用する場合、そのトークンがキャプチャされると、偽造される可能性があります。したがって、セキュリティが比較的高い場合は、oauth2
### を使用することをお勧めします。

以上がトークンPHPの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。