"">
jwt トークンを取得しようとしていますが、何をしようとしても毎回エラーが発生します。私が試したことは次のとおりです。パッケージなしで jwt-token を取得しますが、jwt.io を使用して署名検証をチェックすると毎回失敗します。このパッケージを使用しているときに、秘密キーを強制できません、場合によってはアルゴリズムが無効ですなどのさまざまなエラーが発生しました。私が間違えたところを修正してください。
$header = [ 'alg' => "RS384", 'typ' => "JWT" ]; $ペイロード = [ 'iss' => '私のクライアント ID'、 'サブ' => '私のクライアントID'、 'aud' => "https://fhir.epic.com/interconnect-fhir-oauth/oauth2/token", 'jti' => (文字列)strtotime(gmdate("Y-m-d H:i:s")), 'exp' => strtotime(gmdate("Y-m-d H:i:s")) 270, ]; $privateKey = "私の秘密鍵" $headers_encoded = $this->base64url_encode(json_encode($header)); $payload_encoded = $this->base64url_encode(json_encode($payload)); $signature = hash_hmac('sha384', $headers_encoded.'.'.$payload_encoded, $privateKey, true); // 署名をbase64url文字列としてエンコードします $signature_encoded = $this->base64url_encode($signature); $jwt = $headers_encoded.'.'.$payload_encoded.'.'.$signature_encoded;
- php-jwt を使用
Firebase\JWT\JWT を使用します。 Firebase\JWT\Key を使用します;
$check = JWT::encode( $ヘッダー、 $ペイロード、 $privateKey、 「RS384」 );
秘密キーを適用できません、場合によってはアルゴリズムが無効ですなどのさまざまなエラーが表示されます。私が間違えたところを修正してください。
簡単に言えば、これが私がやっていること、またはやろうとしていることです。私の代コードの一般的な形式:
「RS384」、 'typ' => 「JWT」 ]; $ペイロード = [ 'サブ' => '1234567890', '名前' => 'ジョン・ドウ'、 'iat' => 1516239022 ]; // ヘッダーとペイロードを JSON 文字列としてエンコードします $headerEncoded = Base64_encode(json_encode($header)); $payloadEncoded = Base64_encode(json_encode($payload)); // ヘッダー、ペイロード、シークレットを連結して署名を作成します $signature = hash_hmac('sha384', "$headerEncoded.$payloadEncoded", $privateKey, true); // 署名を Base64 文字列としてエンコードします $signatureEncoded = Base64_encode($signature); // ヘッダー、ペイロード、署名を連結して JWT を作成します $jwt = "$headerEncoded.$payloadEncoded.$signatureEncoded"; echo $jwt;
私たちは jwt の名前を取得しましたが、https://jwt.io/ 上ではまだテストされていないことが示されています。
修正されました
各行を二重引用符
""
で囲み、各行の末尾に\n
を追加します。