>백엔드 개발 >Golang >Golang에서 JWE 토큰을 확인하는 방법

Golang에서 JWE 토큰을 확인하는 방법

WBOY
WBOY앞으로
2024-02-06 09:30:15614검색

如何在 Golang 中验证 JWE 令牌

질문 내용

질문이 2개 있지만 먼저 몇 가지 배경 정보를 제공하고 싶습니다.

웹 애플리케이션에서는 nextauth를 사용하여 jwt 토큰을 생성한 다음 이를 golang 서버에 대한 요청에 추가합니다(리소스를 가져오는 데 사용됨).

생성된 토큰은 a256gcm을 통해 생성된 jwe 토큰인 것으로 보입니다. Golang 서버에서 토큰의 유효성을 검사하고 이에 대한 일부 사용자 지정 클레임을 추출하려고 합니다. 즉, 우리는 그것을 해독할 방법을 찾으려고 노력하고 있습니다. go-jose를 다음과 같이 사용합니다:

으아악

우리는 다음을 얻습니다: panic:square/go-jose:加密原语中的错误

ps: jwe 세대를 위해 nextauth에 전달한 비밀: thisisaverylongtextusedforhashing

golang 서버에서 확인하려는 nextauth의 원본 jwe 토큰 출력: eyjhbgcioijkaxiilcjlbmmioijbmju2r0nnin0..aiiqd7-cu8hu92f8.kx2k99cylyjr1p0xk_1wusvo521t7kyskx-oeutvjcpzbx27hzh0kh2m lbl mc8q4uxglhjl4je3ntp_c6nojga-fahyxyqkrzgjfllu9mc4jvuwyonx6dofq0gl3ux9abtp2t35qly-w1qkh8bdg9x4ib1ym-yvs1w-hpbbmfqr7u7x4ohwih_yjqlwadesyq 6da7a97gssxs b7sh5wwd7iqzdu-uo6eg._pqujcuymuqokid80vjidw 코드> . <code>eyjhbgcioijkaxiilcjlbmmioijbmju2r0nnin0..aiiqd7-cu8hu92f8.kx2k99cylyjr1p0xk_1wusvo521t7kyskx-oeutvjcpzbx27hzh0kh2m lblxqhdmc8q4uxglhjl4je3ntp_c6nojga-fahyxyqkrzgjfllu9mc4jvuwyonx6dofq0gl3ux9abtp2t35qly-w1qkh8bdg9x4ib1ym-yvs1w-hpbbmfqr7u7x4ohwih_yjqlwadesyq 6da7a97gssxs2go6yb7sh5wwd7iqzdu-uo6eg._pqujcuymuqokid80vjidw


正确答案


根据您的意见,我整理了一个可以帮助您解决问题的回复。首先,我使用了 ngopkg.in/go-jose/go-jose.v2 软件包的版本 2,因为(从我所看到的)算法 a256gcm

정답

customclaims 结构中定义的 usernamepassword여러분의 의견을 바탕으로 문제 해결에 도움이 될 수 있는 답변을 정리했습니다. 먼저, 나는 ngopkg.in/go-jose/go-jose.v2 패키지의 버전 2를 사용했습니다. 왜냐하면 (제가 볼 수 있듯이) a256gcm 알고리즘은 패키지가 아니기 때문입니다. 버전 3으로 추정되는 최신 버전의 패키지가 완전히 호환되지 않습니다. 관련 코드를 찾을 수 있습니다:
으아악

여기에서는 먼저 토큰을 암호화하기 위한 개인 키를 생성한 다음 공개 키를 통해 이를 해독합니다. 간결성을 위해 jwt 토큰을 생성하고 유효성을 검사하는 코드를 생략했습니다. 이 솔루션을 테스트하기 위해 생성된 토큰에 두 개의 사용자 지정 클레임(🎜)을 추가했습니다. 그런 다음 토큰을 구문 분석할 때 해당 값을 검색할 수 있습니다. 🎜 이것이 도움이 된다면 알려주세요! 🎜

위 내용은 Golang에서 JWE 토큰을 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제