찾다

 >  Q&A  >  본문

php - 편안한 체크아웃 및 로그인 상태 지속성

지금은 oauth에 대해 논의하지 않겠습니다. 먼저 jwt를 이해하고 싶습니다

인증과 로그인 유지라는 두 가지 개념을 잘 이해하지 못합니다

현재 Android 및 iOS 클라이언트에 키 비밀을 제공하고 있으며, 내 서버에서도 이 비밀을 사용합니다.

그런 다음 타임스탬프, nonce 등 클라이언트의 매개변수가 내가 제공한 키와 일치합니다. 여러 매개변수가 하나의 매개변수 기호로 암호화됩니다.

그런 다음

이 서버에 함께 전달되고, 서버는 처음 몇 개의 매개변수와 서버의 비밀번호를 암호화하고 최종적으로 클라이언트가 보낸 마지막 매개변수 기호

와 동일한지 확인합니다.

하지만 이제 제가 한 위의 확인은 이 요청의 클라이언트가 내 서버의 비밀 키를 알고 있다는 것을 증명하는 것 뿐이라고 생각합니다. 즉, 이 요청이 내 서버에서 허용된다는 의미입니다.

하지만 아직 사용자가 로그인했는지 알 수 없기 때문에 클라이언트에 매개변수 토큰을 추가해 달라고 요청했습니다. 사용자가 로그인 인터페이스를 요청하고 성공적으로 로그인하면 세션을 redis에 저장하겠습니다. 한 달 후 토큰=sessionid를 반환하여 클라이언트에 저장하고 다음에 가져오면 Redis에서 이 세션을 찾을 수 있으면 해당 사용자가 로그인되어 있음을 증명합니다.

그리고 온라인에서 누군가가 커스텀 JWT라고 하더군요.
내가 한 일과 jwt의 가장 큰 차이점이 무엇인지 모르겠습니다

예를 들어 내 방법은 sessionid를 사용하여 사용자의 로그인 상태를 확인합니다

Jwt 잠시 정보를 읽어보니 클라이언트에 토큰을 발급한 후 서버가 토큰을 저장하지 않는 것 같습니다. 그러다가 클라이언트 매개변수가 도착한 후에는 단지 첫 번째 단계에 불과한 것 같습니다. 내 자신의 방법 (여러 매개 변수와 키를 암호화 한 후 서명하는 것과 동일합니까?) 그러나 이것이 이미 로그인을 증명할 수 있다고 말하는 것 같습니다. 그렇다면 내 방법은 중복되고 세션을 사용하여 로그 여부를 결정합니다.

?
習慣沉默習慣沉默2844일 전648

모든 응답(2)나는 대답할 것이다

  • 世界只因有你

    世界只因有你2017-05-16 13:00:05

    https://jwt.io/

    JWT의 특징 중 하나는 Stateless이며 로그인 개념이 없다는 점입니다.

    원래 소위 로그인이라는 것은 인간이 이해하는 개념일 뿐이고, 서버에는 이런 개념이 없습니다. 로그인이란 무엇입니까? 승인된 접근(로그인해야만 접근 가능한 콘텐츠)으로만 가능합니다.

    회신하다
    0
  • 某草草

    某草草2017-05-16 13:00:05

    jwt는 토큰에 발급자, 사용자, 서명 및 기타 정보가 포함되어 있어 로그인을 증명하기에 충분하고 변조되지 않았기 때문에 서버 측에 토큰을 저장할 필요가 없습니다. 한 번 변조되면 서명을 확인할 수 없기 때문입니다. sessionid는 다릅니다. 세션은 주로 서버 측에 다른 데이터를 저장하는 데 사용됩니다. 이러한 데이터는 민감하고 jwt에 넣기가 불편할 수 있습니다. 물론 세션은 일종의 저장소일 뿐이며 Redis나 다른 유형의 저장소 시스템에도 저장할 수 있습니다. 실제로 쿠키를 토큰으로 생각할 수도 있으며(틀렸지만 이렇게 하면 더 잘 이해할 수 있습니다) 세션은 값 중 하나일 뿐이며 그 이상은 아닙니다.

    회신하다
    0
  • 취소회신하다