<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 = [
'알그' => "RS384",
'일반' => "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>
<올>
- 패키지가 설치되었습니다.
<em>Composer에는 firebase/php-jwt --ignore-platform-req=ext-mongodb</em></li>가 필요합니다.
<li>내 컨트롤러에서 필요한 파일을 사용했습니다</li>
</ol>
<pre class="brush:php;toolbar:false;">FirebaseJWTJWT 사용;
FirebaseJWTKey;</pre>를 사용하세요.
<ol start="3">
<li>인코딩을 시도해 보세요. </li>
</ol>
<pre class="brush:php;toolbar:false;">$check = JWT::encode(
$헤더,
$페이로드,
$개인키,
'RS384'
);</pre>
<p><em>개인 키를 적용할 수 없습니다</em>와 같은 다양한 오류가 발생하며 때로는 <em>잘못된 알고리즘</em>이 있습니다. 내가 엉망으로 만든 부분을 바로잡아주세요. </p>
<p>간단히 말하면 이것이 제가 하고 있거나 하려고 하는 일입니다.나의 독특한 통신용 형태:</p>
<pre class="brush:php;toolbar:false;"><?php
// 파일에서 개인 키를 로드합니다.
$privateKey = file_get_contents('private.key');
// JWT의 헤더와 페이로드를 설정합니다.
$헤더 = [
'알그' => 'RS384',
'일반' => '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";;
에코 $jwt;</pre>
<p>我确实得到了 jwt 签name ,但 여기 https://jwt.io/ 上它显示未经验证。</p>
수정됨
각 줄을 큰따옴표
""
""
括起来,并在每行末尾添加n
로 묶고 각 줄 끝에n
을 추가하세요. 🎜