PHP-JWT を使用して FHIR に Epic を実装する
P粉593649715
P粉593649715 2023-08-30 23:58:19
0
1
578
<p>jwt トークンを取得しようとしていますが、何をしようとしても毎回エラーが発生します。私が試したことは次のとおりです。パッケージなしで jwt-token を取得しますが、jwt.io を使用して署名検証をチェックすると毎回失敗します。このパッケージを使用しているときに、<em>秘密キーを強制できません</em>、場合によっては<em>アルゴリズムが無効です</em>などのさまざまなエラーが発生しました。私が間違えたところを修正してください。 </p>
    <li><strong>php-Jwt なし</strong></li> </ul> <pre class="brush:php;toolbar:false;">$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;</pre> <p><strong>- php-jwt を使用</strong></p> <ol> <li>パッケージがインストールされました <em>Composer には firebase/php-jwt --ignore-platform-req=ext-mongodb が必要です</em></li> <li>コントローラで必要なファイルを使用しました</li> </ol> <pre class="brush:php;toolbar:false;">Firebase\JWT\JWT を使用します。 Firebase\JWT\Key を使用します;</pre> <ol start="3"> <li>エンコードしてみます: </li> </ol> <pre class="brush:php;toolbar:false;">$check = JWT::encode( $ヘッダー、 $ペイロード、 $privateKey、 「RS384」 );</pre> <p><em>秘密キーを適用できません</em>、場合によっては<em>アルゴリズムが無効です</em>などのさまざまなエラーが表示されます。私が間違えたところを修正してください。 </p> <p>簡単に言えば、これが私がやっていること、またはやろうとしていることです。私の代コードの一般的な形式:</p> <pre class="brush:php;toolbar:false;"><?php // ファイルから秘密鍵をロードします $privateKey = file_get_contents('private.key'); // JWT のヘッダーとペイロードを設定します $ヘッダー = [ 'alg' => 「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;</pre> <p>私たちは jwt の名前を取得しましたが、https://jwt.io/ 上ではまだテストされていないことが示されています。
P粉593649715
P粉593649715

全員に返信(1)
P粉037215587

修正されました

  • 代わりにこれを使用してください hash_mac():
リーリー
  • キーが PHP 変数に保存されている場合は、次の形式でキーを設定していることを確認してください:
リーリー

各行を 二重引用符 "" で囲み、各行の末尾に \n を追加します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!