Go에서 Azure JWT 유효성 검사가 작동하지 않습니다.
Go 언어를 사용하여 Azure 애플리케이션을 개발할 때 JWT(JSON Web Token) 확인이 작동하지 않는 문제에 자주 직면합니다. JWT는 웹 애플리케이션 간에 클레임을 전달하기 위한 안전한 전송 방법이지만 Go에서 Azure의 JWT 유효성 검사를 사용할 때 다양한 문제가 발생하는 경우가 있습니다. 이 문서에서는 JWT 확인이 작동하지 않는 몇 가지 가능한 이유를 소개하고 이 일반적인 문제를 해결하는 데 도움이 되는 해당 솔루션을 제공합니다. 이 기사는 PHP 편집자 Apple이 신중하게 편집한 것이며, 귀하에게 도움이 되기를 바랍니다.
질문 내용
go http 서버가 있습니다. Azure JWT 토큰을 사용하여 경로를 보호하고 싶습니다. 토큰을 생성할 수 있지만 확인할 수는 없습니다.
내가 하는 일은 다음과 같습니다.
으아악verify2(..)
给出 <nil> 未能匹配任何键
그리고
verify(..)
给出 crypto/rsa: 验证错误
내 jwt 헤더:
package main import ( "context" "errors" "fmt" "github.com/dgrijalva/jwt-go" "github.com/lestrrat-go/jwx/jwa" "github.com/lestrrat-go/jwx/jwk" njwt "github.com/lestrrat-go/jwx/jwt" ) const token = "<access-token>" const jwksurl = `https://login.microsoftonline.com/common/discovery/keys` func main() { set, _ := jwk.fetch(context.todo(), jwksurl) // verified that set has required kid verify2(token, set) token, err := verify(token, set) // token, err := jwt.parse(token, getkey) if err != nil { panic(err) } claims := token.claims.(jwt.mapclaims) for key, value := range claims { fmt.printf("%s\t%v\n", key, value) } } func verify2(token string, keyset jwk.set) { btoken := []byte(token) parsedtoken, err := njwt.parse( btoken, //token is a []byte njwt.withkeyset(keyset), njwt.withvalidate(true), ) fmt.printf("%v %v", parsedtoken, err) } func verify(tokenstring string, keyset jwk.set) (*jwt.token, error) { tkn, err := jwt.parse(tokenstring, func(token *jwt.token) (interface{}, error) { if token.method.alg() != jwa.rs256.string() { return nil, fmt.errorf("unexpected signing method: %v", token.header["alg"]) } kid, ok := token.header["kid"].(string) if !ok { return nil, errors.new("kid header not found") } keys, ok := keyset.lookupkeyid(kid) if !ok { return nil, fmt.errorf("key %v not found", kid) } var raw interface{} err := keys.raw(&raw) return raw, err }) return tkn, err }
해결 방법
잘못된 유형의 Azure AD 액세스 토큰을 사용하고 있습니다. JWT 헤더에 nonce가 있는 콘텐츠는 자체 API로 확인하기 위한 것이 아니며 Microsoft 자체 API를 위한 것입니다.
이 문제를 해결하려면 API 범위를 노출해야 하며, 그 후에는 JWT 헤더에 nonce가 없는 액세스 토큰을 얻게 됩니다. 내 블로그 게시물에는 추가 관련 정보가 있습니다.
위 내용은 Go에서 Azure JWT 유효성 검사가 작동하지 않습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Go Crawler Colly의 대기열 스레딩 문제는 Colly Crawler 라이브러리를 GO 언어로 사용하는 문제를 탐구합니다. � ...

Go Language의 부동 소수점 번호 작동에 사용되는 라이브러리는 정확도를 보장하는 방법을 소개합니다.

골란드의 사용자 정의 구조 레이블이 표시되지 않으면 어떻게해야합니까? Go Language 개발을 위해 Goland를 사용할 때 많은 개발자가 사용자 정의 구조 태그를 만날 것입니다 ...

Go Language의 문자열 인쇄의 차이 : println 및 String () 함수 사용 효과의 차이가 진행 중입니다 ...

GO의 어떤 라이브러리가 대기업이나 잘 알려진 오픈 소스 프로젝트에서 개발 했습니까? GO에 프로그래밍 할 때 개발자는 종종 몇 가지 일반적인 요구를 만납니다.

Go Language에서 메시지 대기열을 구현하기 위해 Redisstream을 사용하는 문제는 Go Language와 Redis를 사용하는 것입니다 ...

GO 언어에서 구조를 정의하는 두 가지 방법 : VAR과 유형 키워드의 차이. 구조를 정의 할 때 Go Language는 종종 두 가지 다른 글쓰기 방법을 본다 : 첫째 ...

Go Pointer Syntax 및 Viper Library 사용의 문제 해결 GO 언어로 프로그래밍 할 때 특히 포인터의 구문 및 사용법을 이해하는 것이 중요합니다.
