사용자가 웹/모바일 클라이언트 세트를 통해 액세스 할 수있는 RESTful API를 보유하고 있으며 토큰 인증을 처리하는 방법을 파악하려고합니다. 토큰은 모든 요청 만료시 토큰 기반 인증에 대한 대체 접근 방식
- 사용자에 한해 승인을 사용자가/통과 제공함으로써, 때까지 토큰 및 만료
- 를 다시 수신 : 나의 이해는 기존의 토큰 인증은 다음과 같이 작동한다는 것입니다 토큰이 요청됩니다 (별도의 '새로 고침'토큰을 제공하거나 사용자/패스로 다시 인증함으로써)
각 요청마다 새 토큰을 생성하지 않는 것이 좋은 이유가 있습니까? 초기 토큰은 사용자/패스를 통해 요청됩니다. 이 토큰은 첫 번째 API 요청과 함께 전달됩니다.이 요청은 API 응답의 내용과 다음 요청과 함께 전달되어야하는 새 토큰을 반환합니다.이 접근법의 장점은 사용자가 요청한 각 요청 (동작) 토큰 만료 시간은 기본적으로 사용자가 로그 아웃하지 않고 비활성화 될 수있는 기간이되도록 토큰 auth의 만료를 재설정합니다. 이 접근법을 사용하지 않는 좋은 이유가 있습니까? 위에 제시된 접근법이 더 평범한 것처럼 보입니다 (그래서 내가 묻습니다).
마지막으로, 약간 만 관련된 질문입니다. 네트워크에서 사용자가 토큰을 가져 오는 것을 지켜 보는 누군가를 막을 수 있습니까? 특히 첫 번째 계획에서는 쉽게 할 수 있습니다 (두 번째 방법에서는 들어오는 요청을 캡처 한 다음 사용자가하기 전에 다음 토큰을 빠르게 가져와야합니다).
저는 위험한 TimedJSONWebSignatureSerializer (JSON 웹 서명 구현)가있는 Python을 사용하고 있습니다. 그래서 아니오, 토큰을 저장하기 위해 데이터베이스를 사용하고 있다고 생각하지 않습니다. 만료는 토큰의 일부이기 때문에 확장 할 수 없습니다 (새 토큰을 얻음).API의 '사용자'는 스스로입니다. 최종 사용자는 API를 직접 사용하지 않고 클라이언트 응용 프로그램 중 하나만 사용하십시오. 그래서 저는이 접근법의 보안 함의에 주로 관심을 가졌습니다. – guywhoneedsahand
또한 '표준'모델의 만료 이유는 클라이언트가 자원에 접근 할 필요없이 새로운 토큰을 요청할시기를 알 수 있고 인증 실패 (토큰 만료)로 인해 거부 될 수 있으므로 신선한 토큰. 말이 돼? 분명히 슬라이딩 인증 창이 필요하지 않습니다 (부분적으로 좋은 생각 인 것 같습니다!) – guywhoneedsahand
클라이언트에 만료를 보내면 실제로 새 토큰을 요청할시기에 대한 정보를 전달할 수 있습니다. 그러나 그것은 클라이언트가 그것을 바꿀 수있는 그런 방식으로 절대로 사용해서는 안됩니다. 할 수없는 JWT의 경우 실제로는 대체 접근법입니다. API의 독점 사용자이므로 토큰 만료를 처리하는 방법은 귀하에게 달려 있습니다. 어떤 경우이든 무언가를해야합니다. 그러나 주기적으로 새 토큰을 요청하는 것이 더 쉬울 것입니다. 모든 것을 멋지고 분리 된 상태로 유지합니다. – harm