0

레일 웹 서비스를 작성 중이며 인증을 위해 authlogic을 사용하고 싶습니다. 이것은 가장 많이 사용되는 활성 인증 gem 중 하나 인 것 같습니다. 우리의 클라이언트는 자신의 사용자 자격 증명으로 인증하기 위해 abled해야합니다. 그래서 은 SSL 기본 인증 (authenticate_or_request_with_http_basic)을 SSL로 사용하도록 결정했습니다.HTTP 기본 인증 - 추가 날짜 매개 변수 (레일즈)

비밀 번호, url 및 요청 시간의 해시로 인증을 위해 원래 비밀번호를 교체하여 짧은 시간 창에서만 요청을 사용할 수 있도록 보안을 추가하고 싶습니다. webservice와 클라이언트 시간이 동기화되지 않았기 때문에 로그인 자격 증명 외에도 클라이언트 시간을 보내야합니다. 인증 헤더에 클라이언트 날짜를 추가하고 authenticate_or_request_with_http_basic 메소드를 사용하여 읽으려면 어떻게해야합니까?

답변

0

왜 시간 세부 정보를 클라이언트에 보내야합니까? 인증 서버 쪽의 TTL을 저장하고 해당 TTL에 대한 모든 향후 요청의 유효성을 검사 할 수 있습니다.

인증에 성공하면 클라이언트에게해야 할 일을 수행 할 xxx 분/일 (TTL)이 있다고 알리는 메시지가 나타날 수 있습니다. TTL이 만료되면 웹 서비스는 클라이언트에 중립적 인 응답을 반환해야합니다 (인증 시도가 실패한 경우와 마찬가지로 해킹 시도로부터 자신을 보호하기 위해).

클라이언트 날짜 정보를 사용하지 않는 것이 좋습니다. 머신의 날짜가 잘못되면 어떨까요?

업데이트 : 나는 여전히 전체 클라이언트 날짜 문제에 대해 걱정하고 있습니다. 다른 사람들이 어떻게 구현했는지 살펴보십시오. API's with rails

+0

안녕하세요, 귀하의 답변에 감사드립니다. 나는 레일스와 인증에있어서 아주 새로운데, 나의 생각은 모든 단일 API 호출마다 새로운 인증과 고유 한 암호를 요구하는 것이었다. 암호는 타임 스탬프, 원래 암호 및 요청 URL 해시가 될 수 있습니다. 해시에서 timestamp를 사용하면 crendentials와 함께 동일한 API 호출을 한 번만 사용하거나 짧은 시간 창에서만 말할 수 있습니다. 날짜가 늦은 클라이언트 날짜를 방지하기 위해 몇 분 정도의 허용 오차로 현재 서버 날짜를 사용하여 클라이언트 타임 스탬프를 확인할 수 있습니다. – trackmate

+0

하지만 결국에는 서버 측에서 유효성 검사를 위해 해시를 다시 작성해야하므로 정확한 클라이언트 날짜가 필요합니다. 모든 요청 uri에 get 매개 변수로 클라이언트 날짜를 전달할 수 있지만 모든 api 메서드에 대해이 솔루션을 사용하고 싶지는 않습니다. 기본 인증 헤더에 타임 스탬프를 추가 할 수 있습니까? – trackmate