2016-10-21 2 views
1

PyJWT == 1.4.2를 사용하여 Firebase 인증에 사용할 토큰을 생성합니다.유효하지 않은 토큰 서명을 반환하는 PyJWT

FireNetTokenGenerator를 사용해 보았을 때 불행히도 제 3 자 파이썬 Firebase 라이브러리를 사용할 수 없지만 동일한 어려움을 겪었습니다.

내 API에는 사용자 이름에 대한 토큰을 생성하는 기능이 있습니다.

118  def generate_token(self, username): 
119   payload = { 
120    'something': 'Here', 
121   } 
122   secret = "TESTSECRET" 
123   token = jwt.encode(
124    payload, 
125    secret, 
126    algorithm='HS256') 
127   return token 

나는이 기능에서 얻을 토큰의 예는 다음과 같습니다

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzb21ldGhpbmciOiJIZXJlIn0.fpIMSRJ3AAL30LIDwHJM9ZOumdRzS7yooiiUgMPms2Y

불행하게도,이 유효한 토큰이 아닙니다. https://jwt.io/과 같은 온라인 리소스에서 서명 부분이 유효하지 않다고 알려줍니다.

이 더 도움이되는 정보를 원하시면 경우 확실하지,하지만 난 다음 내가 할 토큰 디코딩 할 때 : 내가 잘못 일을 할 수있는 것에

b'{"alg":"HS256","typ":"JWT"}{"something"[83 chars]\x88' 

어떤 생각을? 당신이 토큰 다음 토큰을 생성하는 데 사용되는 동일한 다음 도구 서명이 있음을 나타냅니다으로 그것을을 확인하는 데 사용되는 비밀을 업데이트 jwt.io 및 붙여 넣기로 이동하는 경우 유효한 토큰이, 참으로

답변

1

유효한.

기본적으로 jwt.io은 HS256 알고리즘과 기본 암호 인 secret을 사용하여 서명의 유효성을 검사합니다. HS256 알고리즘을 사용하여 실제로 JWT를 작성하고 있으므로 유효한지 확인하기 위해 수행해야하는 유일한 작업은 비밀번호 입력 상자를 업데이트하여 TESTSECRET을 사용하는 것입니다.

또한 JWT의 서명 구성 요소는 원시 바이너리 데이터로, 텍스트로 디코딩하려고하면 올바르게 표시되지 않을 수 있습니다. JWT의 업무에 대한 자세한 내용은 Get Started with JSON Web Tokens을 확인하십시오.

+0

* 키보드에서 머리를 으깨세요. * 이전의 비밀을 바꾸지 않았습니다. 그것은 정말로 문제였습니다. 문제가 더 진행됨에 따라 JWT 디코딩이 제대로 표시되지 않는다는 사실을 알지 못했습니다. 내가 그렇게하려고했을 때 ** decoded = base64.b64decode (토큰) ** "잘못된 패딩"오류 또는 페이로드의 차단 버전이 있습니다. 그 자원은 매우 유용합니다. 감사합니다! –

+0

소프트웨어 개발에서 우리를 얻는 것은 항상 작은 세부 사항입니다 ... 클럽에 오신 것을 환영합니다. :) –