2013-08-05 2 views
0

로드 중 인 프로세스가 인증 프로세스에서 많은 처리 시간 (사용자 이름/비밀번호 확인)을 소모하는 애플리케이션의 성능을 향상시키고 자합니다.후속 메시지의 성능을 향상시키기 위해 인증 상태 캐싱

응용 프로그램 암호를 저장하고 확인하는 방법 (소금 반복 및 반복 횟수가 많음)에 만족합니다. 문제는 인증 프로세스가 느리고 CPU가 배가 고팠다는 것입니다.

응용 프로그램이 대량의 메시지를 가져오고 들어오는 모든 메시지가 인증됩니다. 특히 내가하고있는 일은 (120 초) 단기 캐시를 구현하는 것입니다. 여기서 사용자 이름/암호가 성공적으로 인증되면 동일한 사용자 이름/암호로 캐시 창에서 들어오는 추가 요청이 필요없이 인증됩니다. 느린 많은 반복 인증 프로세스를 거쳐야합니다.

기본 프로세스 흐름은 다음과 같습니다

  1. 확인 사용자 이름이 유효하고 계정
  2. 확인 캐시보고 (일시 중지/너무 많은 시도/비밀번호가 최근 변경) 잠겨 있지 않은 경우 사용자 이름 입력/암호가 있음
    • 캐시에 항목이 없습니다. 인증 알고리즘을 통해 제공된 암호를 전달하고 데이터베이스에 저장된 값과 비교합니다. 일치하면 사용자가 인증되고 캐시에 항목이 추가됩니다.
    • 캐시의 항목 : 제공된 사용자 이름/암호는 캐시 창에서 인증 된 사용자 이름/암호와 동일하므로 사용자를 인증합니다.
  3. 캐시가 자동으로 캐시가 될 항목

만료 것이다 메모리 캐시에 있지만 내가 가지고있는 문제는 ('보안'내가 캐시에 배치 된 데이터를해야 할 어떻게 사용자 이름/암호). 성능과 보안 사이의 상충 관계 ... 안전성이 얼마나 안전한지

  • 이름 + 해시 (소금 + 비밀번호)

답변

0

난 당신이 정말가 원하는 것을 의심 것이다 : 예를 들어

다음은 캐시에 사용할 적당한 열쇠가 될 것입니다 do는 다음 'n'초 동안 유효한 토큰/티켓을 발행합니다. 토큰은 암호화되어/서명되어 독자 만이 유효성을 검사하고 만료를 확인할 수 있습니다 (따라서 재생 공격으로부터 보호합니다).

+0

정확하게 이해하면 토큰/티켓이 메시지 응답에 추가 될 수 있습니다. 후속 메시지 요청과 함께 전달됩니까? 나는 그것을 분명히 고려할 것이다. 그러나 그 변화의 범위는 내가 바라는 것보다 더 크다. 업데이트를 수행하는 데 메시지 사용자가 필요하지 않은 서버 측 변경 만 가능합니다. –

관련 문제