2014-07-07 11 views
0

웹 응용 프로그램을 개발 중이며 사용하기에 가장 적합한 인증 시스템을 고민하고 있습니다. 기본적으로 클라이언트가 내 서버에 사용자 이름과 암호를 보내길 원하고, 그 시점부터 암호 대신 사용할 수있는 토큰을 클라이언트에 제공하여 서버가 응답하도록합니다.임의의 인증 토큰을 생성하지 않는 이유가 있습니까?

나는 이것들을 약간 살펴 봤지만 내가보기에 계속 추천하는 것은 서버에만 알려진 비밀 키를 가진 HMAC를 사용하는 것이다. 나는이 방법의 이점을 본다. 그러나 그것이 이상하게 여겨지지 않는 것으로 보인다. 왜냐하면 내가 말할 수있는 한 그것이 만료 될 수 없기 때문이다.

hmac 생성/확인에 사용되는 문자열에 IP 주소를 추가하여 추가 보안을 추가 할 수 있지만, 이것이 최선의 방법인지 확실하지 않습니다.

내 인증 토큰을 openssl_random_pseudo_bytes()와 같이 생성하고 IP 주소 및 사용자 이름과 함께 내 데이터베이스에 저장하는 이유가 있습니까? 그런 다음 사용자에게 보내고 데이터베이스의 내용과 비교하여 확인할 수 있습니다. 또한 사용자를 쉽게 만료 시키거나 로그 아웃 할 수 있습니다.

+0

본질적으로 당신이 말하는 것은 세션 쿠키입니다. 이는 단순히 서버에서 SOMETHING을 나타내는 의사 무작위 문자열입니다. 예 : 그 문자열을 이름으로 가진 파일, 그 문자열을 ID로 가지는 데이터베이스 레코드 등. –

답변

0

서버에만 알려진 비밀 키가 있으면 언제든지 만료 될 수 있습니까? 비밀 키만 변경하면 (만료 추적을위한 기록 보관) 모든 오래된 토큰을 무효화해야합니다.

이것이 문제가된다면 각 사용자마다 다른 암호를 사용하는 것이 좋습니다. 이렇게하면 사용자 토큰을 자유롭게 취소 할 수 있습니다.

관련 문제