제가 했던 한프로젝트에서는 메인 프레임이 존재하며, Iframe에 저희 회사 제품을 제공하는 프로젝트인데, 

IE에서 SSO로그인 처리 후 세션이 유지되지않는 현상이 발생되었습니다.
이는 P3P (Platform for Personal Preferences) 규약을 도입했기 때문이라고 합니다.
P3P (Platform for Personal Preferences) 규약은 W3C ( World wide Consortium )에서 만들어 졌습니다.
(마이크로 소프트 p3p 정책 http://msdn.microsoft.com/library/default.asp?url=/workshop/security/privacy/overview/createprivacypolicy.asp)
(W3C - p3p 규약 http://www.w3.org/TR/2002/REC-P3P-20020416/ )
그래서 다른 주소지로 연결되는 프레임구조로(특히 포워딩 고정 연결시) 웹페이지가 열리게 되면, 쿠키가 적용되지 않게 됩니다.

이 문제를 해결하려면 3가지 방안이 있습니다.

1. IE 옵션 변경
2. 웹서버에 p3p 규약을 허용하는 HTTP 헤더 추가하는 방법
3. 웹페이지에서 p3p 규약을 허용하는 HTTP 헤더를 추가하는 방법

* 첫 번째 방법은 다음과 같습니다. 

(IE 11기준) 도구-인터넷옵션-개인정보-고급-자동으로 쿠키 처리 안 함-항상 세션에 쿠키허용 체크
이 방법은 사용자가 각자 설정을 해줘야하는 방법으로 추천하지않습니다.

* 두 번째 방법은 다음과 같습니다.

conf/httpd.conf 에 다음과 같이 추가한다.
<IfModule mod_headers.c> 
Header add P3P "CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\"" 
Header set P3P "CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\"" 
</IfModule> 

두 번째 방법도 대규모 프로젝트는 TA(Technical Architecture)에게 의존적이므로 추천하지않습니다.

* 세 번째 방법은 다음과 같습니다.

세션필터에 세션이 없을때만 아래 헤더를 추가합니다.
response.setHeader("P3P","CP='CAO PSA CONi OTR OUR DEM ONL'");

세 번째 방법은 개발자가 직접 컨트롤 가능하므로 추천드리는 방법입니다.

이상입니다. 해당 문제가 발생했을 때 도움이 되시기바랍니다.


by 아카마메 2018. 3. 9. 16:38
| 1 |