PHP-JWT를 사용하여 FHIR에서 Epic 구현
P粉593649715
P粉593649715 2023-08-30 23:58:19
0
1
668
<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>
P粉593649715
P粉593649715

모든 응답(1)
P粉037215587

수정됨

  • hash_mac() 대신 이것을 사용하세요:
으아악
  • 키가 PHP 변수에 저장되어 있는지 확인하고 다음과 같이 키 형식을 지정하세요.
으아악

각 줄을 큰따옴표 """"括起来,并在每行末尾添加n로 묶고 각 줄 끝에 n을 추가하세요. 🎜

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿