応答ヘッダーにトークンを追加する
php メソッド: 1. ベアラー モードを使用して、リクエストのヘッダーの Authorization フィールドに JWT を追加します; 2. サーバーがリクエストを受信した後、JWT 仕様を使用してトークンとリターン それをクライアントに渡すだけです。
このチュートリアルの動作環境: Windows 10 システム、PHP バージョン 8.1、DELL G3 コンピューター
トークンの追加方法phpのレスポンスヘッダーは?
php トークンの生成と使用
1. ログインにトークンを使用する理由
フロント エンドとバック エンドの分離または複数のサポートWeb アプリケーションの場合、元の Cookie またはセッションを使用する際に大きな問題が発生します。
Cookie とセッション認証は、認証される前に同じメイン ドメイン名の下にある必要があります (現在、セッションは Redis に保存できます)この問題を解決するために) 。
2. 解決策
oauth2 と jwt
jwt: はセキュリティ標準です。基本的な考え方は、ユーザーが認証サーバーにユーザー名とパスワードを提供し、サーバーがユーザーが送信した情報の正当性を検証し、検証が成功するとトークン (トークン) が生成されて返されるというものです
OAuth2: 安全な認証フレームワークです。システム内のさまざまなロール、ユーザー、サービス フロントエンド アプリケーション (API など)、クライアント (Web サイトやモバイル APP など) の間で相互認証を実現する方法について詳しく説明します。
(ここではjwtを使用し、認証にはこのJSON Web Tokenを使用します)
3. 生成方法
ヘッダー:暗号化タイプ
説明 :メッセージcontent
Key: ランダムなコードを使用して暗号化します
上記3つの部分を結び、hs256を使用して暗号化してトークンを生成します
4. 詳細な生成方法
1). ヘッダーは通常、トークンのタイプ (つまり JWT) と使用される暗号化アルゴリズム (SHA256 や RSA など) の 2 つの部分で構成されます。
{ "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は仕様なので仕様に従うのが良いでしょう)
6. 利用方法
クライアントユーザーがユーザー名とパスワードを入力します。そして、ログインしてトークンをリクエストします。
サーバー リクエストを受信したら、JWT 仕様を使用してトークンを生成し、クライアントに返します。
クライアントはトークンを受信した後、それを復号化します。 、トークンの適時性 (トークンの有効期限) を検証し、保存します
クライアントはトークンを使用してデータを要求します
サーバーがトークンを受信して復号化した後、ユーザーの本人確認、適時性の確認、ユーザーの確認を行う
7. デメリット
1. 発行済みトークンの無効化(トークン利用期間の更新)ができない
2期限切れのデータを扱うのは簡単ではありません (トークンの無効化をサポート)
したがって、トークンを使用する場合、トークンがキャッチされた場合、偽造され、なりすますことができます。したがって、セキュリティが比較的高い場合でも、oauth2
を使用することをお勧めします。 推奨学習: "PHP ビデオ チュートリアル "
以上がPHPでレスポンスヘッダーにトークンを追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。