HTTP 세션 문제점

HTTP(Hypertext Transfer Protocol) 세션을 작성하거나 사용할 때 문제점에 대한 문제점 해결 정보를 사용합니다.

여기 설명된 세션 관리자 설정값을 보고 업데이트하려면 관리 콘솔을 사용하십시오. 문제의 애플리케이션을 호스트하는 Application Server를 선택하고 추가 특성 아래에서 웹 컨테이너를 선택한 후 세션 관리자를 선택하십시오.

[AIX Solaris HP-UX Linux Windows][IBM i]문제점이 여기에 기술되지 않거나 이 중 어느 단계도 문제점을 수정하지 못하는 경우

HTTP 세션이 작성되지 않거나 요청 사이에서 삭제되었음

기본적으로 세션 관리자는 요청 사이에 쿠키를 사용하여 클라이언트에 세션 ID를 저장합니다. 쿠키 기반 세션 추적을 피할 의도가 아니라면, WebSphere Application Server 및 브라우저 사이에 쿠키가 이동하는지 확인하십시오.
  • 세션 추적 메커니즘 특성 아래에서 Enable cookies 선택란을 선택했는지 확인하십시오.
  • 테스트하고 있거나 사용자가 애플리케이션에 액세스 중인 브라우저에서 쿠키가 사용 가능한지 확인하십시오.
  • 세션 관리자에 지정된 쿠키 도메인을 확인하십시오. (쿠키 설정을 보거나 업데이트하려면 세션 추적 메커니즘 > 쿠키 사용 가능 특성에서 수정을 클릭하십시오.)
    • 예를 들어, 쿠키 도메인이 ".myCom.com"으로 설정된 경우 해당 도메인 이름으로 자원에 액세스해야 합니다. (예: http://www.myCom.com/myapp/servlet/sessionservlet).
    • 도메인 특성이 설정되는 경우, 이 특성은 점(.)으로 시작해야 합니다. Netscape의 특정 버전은 도메인 이름이 점으로 시작하지 않을 경우 쿠키를 승인하지 않습니다. Internet Explorer는 점이 있는 도메인이나 점이 없는 도메인이나 모두 승인합니다. 예를 들어, 도메인 이름이 mycom.com으로 설정된 경우 Netscape 및 Internet Explorer가 해당 쿠키를 신뢰할 수 있도록 .mycom.com으로 변경하십시오.
      참고: 서버가 다른 호스트에 있으면, 플러그인이 있는 웹 서버와 같은 프론트 엔드 라우터를 구성하거나 쿠키 도메인을 설정하여 모든 서버로 세션 쿠키가 플로우되는지 확인하십시오.
  • SessionManager에서 지정된 쿠키 경로를 확인하십시오. 문제점 URL이 계층적으로 지정된 쿠키 경로 아래에 있는지 여부를 검사하십시오. 그렇지 않으면 쿠키 경로를 정정하십시오.
  • 쿠키 최대 유효기간 특성이 설정된 경우 시간대를 포함하여 클라이언트(브라우저) 머신의 날짜 및 시간이 서버의 날짜 및 시간과 같은지 확인하십시오. 클라이언트와 서버의 시간 차이가 "쿠키 최대 유효 기간"을 초과할 경우 쿠키가 액세스 후 만료되므로 모든 액세스는 새 세션이 됩니다.
  • 세션을 추적하는 엔터프라이즈 애플리케이션 내에 여러 개의 웹 모듈이 있는 경우
    • 하나의 엔터프라이즈 애플리케이션 내 웹 모듈 사이에 여러 다른 세션 설정을 가지려는 경우, 각 웹 모듈이 다른 쿠키 이름 또는 경로를 지정해야 합니다.
    • 하나의 엔터프라이즈 애플리케이션에 있는 여러 웹 모듈이 공통 쿠키 이름 및 경로를 사용하는 경우 "쿠키 최대 유효 기간"과 같은 HTTP 세션 설정이 모든 웹 모듈에 대해 동일해야 합니다. 그렇지 않으면, 쿠키 동작이 예측 불가능하며 세션을 작성하는 애플리케이션에 따라 달라집니다. 이는 웹 모듈이 별도로 유지보수하는 세션 데이터에 영향을 주지 않습니다.
  • 브라우저와 서버 사이의 쿠키 흐름을 확인하십시오.
    1. 브라우저에서 "쿠키 프롬프트"를 사용으로 설정하십시오. 서블릿을 시작하고 쿠키가 프롬프트되고 있는지 확인하십시오.
    2. [AIX Solaris HP-UX Linux Windows][IBM i]서버에서 세션 관리자 추적을 사용 가능하게 하십시오. 추적 스펙 "com.ibm.ws.session.*=all=enabled"를 사용하여 HTTP 세션 관리자 컴포넌트에 대해 추적을 사용으로 설정하십시오.추적이 사용 가능하게 된 후, 세션 사용 서블릿 또는 JSP를 사용해 보고 추적 출력 덤프 및 찾아보기 지시사항을 따르십시오.
    3. 브라우저에서 세션 서블릿에 액세스하십시오.
    4. 브라우저가 쿠키에 대해 프롬프트합니다. jsessionid를 기록해 두십시오.
    5. 서블릿을 다시 로드하고 새 쿠키가 전송된 경우 쿠키를 기록해 두십시오.
    6. 세션 추적을 확인하고 세션 ID를 찾은 후 스레드 요청을 추적하십시오. 세션이 웹 요청 사이에서 안정적인지를 확인하십시오.
      • 세션 요청 시작인 getIHttpsession(...)을 찾으십시오.
      • 세션 요청 종료인 releaseSession(..)을 찾으십시오.
  • 쿠키 대신 URL 재기록을 사용하는 경우
    • 애플리케이션 탐색 경로에 정적 HTML 페이지가 없는지 확인하십시오.
    • [AIX Solaris HP-UX Linux Windows][IBM i]서블릿과 JSP 파일이 올바르게 URL 재기록을 구현하고 있는지 확인하십시오. 세부사항과 예의 경우는 세션 추적 옵션의 내용을 참조하십시오.
  • 제거된 기능 제거된 기능: SSL ID를 사용하는 세션 추적은 WebSphere Application Server 버전 7.0에서 더 이상 사용되지 않습니다. 쿠키를 사용하도록 세션 추적을 구성하거나, URL 재작성을 사용하도록 애플리케이션을 수정할 수 있습니다. depfeat
    세션 추적 메커니즘으로 SSL을 사용하고 있다면
    • IBM HTTP Server 또는 iPlanet HTTP Server에서 SSL이 사용 가능한지 확인하십시오.
    • [AIX Solaris HP-UX Linux Windows][IBM i]세션 추적 옵션을 검토하십시오.
  • 클러스터(다중 노드) 환경에 있는 경우 세션 지속이 사용 가능한지 확인하십시오.

HTTP 세션이 지속적이지 않습니다.

HTTP 세션이 지속적이 아닌 경우 Application Server가 다시 시작되거나 클러스터 간에 공유되지 않으면 세션 데이터를 잃게 됩니다.
  • 데이터 소스를 확인하십시오.
  • 세션 관리자의 지속 설정 특성을 확인하십시오.
    • 세션 지속성을 이용하려는 경우, 지속성이 데이터베이스로 설정되었는지 확인하십시오.
    • [AIX Solaris HP-UX Linux Windows][IBM i]지속성은 메모리 대 메모리 복제에도 설정할 수 있습니다.
    • Database-based persistence를 사용하는 경우 다음을 수행하십시오.
      • 세션 관리자에 올바르게 지정된 데이터 소스의 JNDI 이름을 확인하십시오.
      • 데이터베이스에 액세스하기 위한 올바른 사용자 ID와 비밀번호를 지정하십시오.

        관리 콘솔에서 기존의 데이터 소스 특성에 대해 이 설정을 확인해야 합니다. 세션 관리자가 자동으로 사용자를 위한 세션 데이터베이스를 작성하지 않습니다.

      • 데이터 소스는 비JTA여야 합니다(예: 비XA 사용 가능).
      • [AIX Solaris HP-UX Linux Windows][IBM i]JVM 로그에서 해당 데이터베이스 오류 메시지를 확인하십시오.
      • [z/OS]로그에서 해당 데이터베이스 오류 메시지를 확인하십시오.
      • DB2®에서 4k가 아닌 다른 행 크기의 경우, 지정된 행 크기가 DB2 페이지 크기와 일치해야 합니다. 테이블 공간 이름이 올바르게 설정되었는지 확인하십시오.
    • 메모리 기반 지속성을 사용하는 경우(Network Deployment 환경에서만 사용 가능):

세션이 동일한 클라이언트 시스템의 여러 브라우저 간에 공유됩니다.

이 작동은 브라우저에 따라 다릅니다. 브라우저 벤더 간에 차이가 있으며 브라우저를 새 프로세스로 실행했는지 또는 기존 브라우저 세션의 서브프로세스로 실행했는지에 따라 변경될 수 있습니다(예: Windows에서는 Ctrl-N을 누름).

쿠키가 세션 추적 메커니즘으로 사용되는 경우, 세션 관리자의 쿠키 최대 유효 기간 특성도 이 작동에 영향을 미칩니다. 최대 유효 기간이 일부 양수 값으로 설정되는 경우, 모든 브라우저 인스턴스가 지정된 최대 유효 기간에 대해 클라이언트의 파일로 지속되는 쿠키를 공유합니다.

세션이 지정된 세션 제한시간 후 바로 무효화되지 않음

세션 관리자 무효화 프로세스 스레드가 x초마다 실행되어 유효하지 않은 세션을 무효화시킵니다. 여기서, x는 세션 관리자 특성에 지정된 세션 제한시간 간격을 기준으로 결정됩니다. 기본값이 30분인 경우, x는 300초 정도입니다. 이 경우, 특정 세션이 무효화되려면 제한시간 임계값 30분을 지나 최대 5분(300초)이 걸릴 수 있습니다.

JavaServer Pages가 원치 않는 세션을 작성하고 있습니다.

JSP(JavaServer Pages) 스펙에 필요하므로, JSP는 기본적으로 클라이언트용 세션이 하나도 없는 경우 세션을 작성하도록 request.getSession(true)을 수행합니다. JSP 페이지가 새 세션을 작성하지 못하게 하려면, 다음과 같은 페이지 지시문을 사용하여 .jsp 파일에서 세션 범위를 false로 설정하십시오.
<% @page session="false" %>
[AIX Solaris HP-UX Linux Windows][IBM i]

하나의 클라이언트만을 위한 세션 데이터가 다른 클라이언트에 표시됨

보기 드문 상황에서, 보통 애플리케이션 오류로 인해 하나의 클라이언트만을 위한 세션 데이터가 다른 클라이언트에 표시될 수 있습니다. 이러한 상황을 세션 데이터 크로스오버라고 합니다. DebugSessionCrossover 사용자 정의 특성이 true로 설정되는 경우 세션 데이터 크로스오버의 인스턴스를 발견하여 로그할 수 있습니다. 요청과 연관된 세션만 액세스 또는 참조되었는지 확인하는 검사가 수행됩니다. 불일치가 발견되면 메시지가 로깅됩니다. 이 메시지는 문제점의 디버깅을 위한 시작점을 제공합니다. 이러한 추가 확인은 사용자가 작성한 스레드가 아니라 WebSphere에서 관리하는 디스패치 스레드에서 실행 중일 경우에만 수행됩니다.

이 특성을 설정하는 방법에 대한 추가 정보는 웹 컨테이너 사용자 정의 특성의 내용을 참조하십시오.

HTTP 세션 타이머가 만기된 후 사용자가 로그아웃되지 않음

WebSphere Application Server 사용자가 애플리케이션에 로그온하여 지정된 HTTP 세션 제한시간 값보다 오래 유휴 상태인 경우, 사용자 정보가 무효화되지 않고 LTPA 토큰 제한시간 초과가 발생할 때까지 사용자 신임이 활성 상태로 유지됩니다.

PK25740을 적용한 후 다음 단계를 완료하여 HTTP 세션이 만기된 후 사용자를 애플리케이션에서 로그아웃하십시오.
주의: com.ibm.ws.security.web.logoutOnHTTPSessionExpire 특성은 양식 로그인을 사용하는 애플리케이션에만 적용됩니다.
  1. 관리 콘솔에서 보안 > 글로벌 보안을 클릭하십시오.
  2. 사용자 정의 특성 아래에서 새로 작성을 클릭하십시오.
  3. 이름 필드에 com.ibm.ws.security.web.logoutOnHTTPSessionExpire를 입력하십시오.
  4. 값 필드에 true를 입력하십시오.
  5. 적용 및 저장을 클릭하여 구성에 대한 변경사항을 저장하십시오.
  6. 서버를 재동기화 및 다시 시작하십시오.
Unexpected re-authentications: com.ibm.ws.security.web.logoutOnHTTPSessionExpire 사용자 정의 특성을 true로 설정하면, 웹 애플리케이션을 여러 개 사용할 때 예기치 않게 재인증이 요구될 수 있습니다. 기본적으로, 각 웹 애플리케이션에는 고유 HTTP 세션이 있지만 웹 브라우저에는 단일 세션 쿠키가 있습니다. 이 문제를 해결하려면 각 애플리케이션에 고유한 세션 쿠키 이름을 부여하거나 경로를 설정하여 HTTP 세션 구성을 변경하면 됩니다. 이렇게 하면 각 애플리케이션이 고유 세션 쿠키를 확보합니다. 다른 방법으로, 여러 웹 애플리케이션에 동일한 엔터프라이즈 애플리케이션을 구성하여 동일한 HTTP 세션을 공유하도록 할 수 있습니다. 자세한 정보는 세션 데이터를 공유할 수 있도록 어셈블 주제를 참조하십시오.

세션 지속성이 사용되는 애플리케이션을 업데이트할 경우 런타임 중에 예외가 발생할 수 있습니다.

세션 지속성이 사용 설정되고 런타임 시 업데이트를 실행하는 사용자는 애플리케이션이 다시 시작된 후 예상치 못한 예외를 경험할 수 있습니다.

저장된 속성을 변경하는 업데이트가 작성되면 애플리케이션이 이러한 변경사항을 처리할 수 없는 경우 애플리케이션 업데이트 이전에 연관된 애플리케이션에서 작성한 세션을 모두 무효화해야 합니다. 이러한 상황에서는 모든 세션 오브젝트를 백엔드에서도 제거해야 합니다. 이러한 세션을 적절히 제거하는 방법에 대해 계속 학습하려면 HTTP 세션 무효화 정보를 참조하십시오.

IBM 지원에는 문제점 해결에 필요한 정보를 수집하는 시간을 줄일 수 있는 문서와 도구가 있습니다. 문제점 보고서를 열기 전에 다음 지원 페이지를 참조하십시오.

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_httpsessprobs
파일 이름:rtrb_httpsessprobs.html