본문으로 바로가기

배경 :
구글링하다보면 javascript로 owa 자동 로그인을 처리하는 소스 코드가 있다.
아래는 내가 작성한 코드 이다.

이렇게 로그인을 하면 Exchange 서버에 따로 설정 하지 않은 이상 쿠키 만료 시간이 15분으로 굉장이 짧아진다.

Exchange 기본 설정상 세션 만료 시간은 넉넉하지만 쿠키 만료 시간이 굉장이 짧아서 금방 로그웃 된다..

PublicTimeout의 정책을 따라 가는거 같다.


	function OWASSO(){
		var server = "${server}";
		var domain = "${domain}";
		var username = "${emailAlias}";
		var password = "${password}";
		var useremailaddress = "${emailAlias}@${domain}";
		var destination = "${destination}";
		LoginToOWA(server, domain, destination, username, password, useremailaddress);
	}
	function LoginToOWA(server,domain, dest, username, password, useremailaddress) {
	    var url = "https://" + server + "/owa/" + useremailaddress + "/auth/owaauth.dll";
	    var _dest = (dest != null && dest != undefined && dest.length > 0) ? dest : 'https://' + server + '/owa/#path=/mail';
	    var regex = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	    if(!regex.test(_dest)) _dest = "https://" + server + "/owa/" +  _dest.replace(/&/g,"&");
	    var p = {destination:_dest,flags:'0',forcedownlevel:'0',trusted:'0',isutf8:'1',username:domain + '\\' + username,password:password};
	    var myForm = document.createElement("form");
	    myForm.method="post" ;
	    myForm.action = url ;
	    for (var k in p) {
	        let myInput = document.createElement("input") ;
	        myInput.setAttribute("type", "hidden");
	        myInput.setAttribute("name", k) ;
	        myInput.setAttribute("value", p[k]);
	        myForm.appendChild(myInput) ;
	    }            
	    document.body.appendChild(myForm);
	    myForm.submit() ;
	    document.body.removeChild(myForm) ;
	}
     

 

해결 : 
사내 JIRA 에서도 똑같이 작성한 글을 공유 한다.

  1. 레지스트리에서 HKLM\SYSTEM\CurrentControlSet\Services\MSExchange OWA 접근

2. PrivateTimeout , PublicTimeout 키를 추가(시간은 적절히..)

아래 는 PowerShell로 간단히 처리 하는 링크(참고)

[Exchange2013/2016] OWA 세션 타임아웃 설정 레지스터리

쿠키의 세션 타임 아웃을 8시간으로 설정하는 경우 아래와 같이 Value 값을 480으로 설정

o    Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Services\MSExchange OWA' -Name PrivateTimeout -Value 480 -Type DWORD

o    Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Services\MSExchange OWA' -Name PublicTimeout -Value 480 -Type DWORD

 

3. IIS 서비스 풀 재생
MSExchangeOWAAppPool 재생?

'JAVA > TIP' 카테고리의 다른 글

Unity 3D WebGL 배포시 Apache 설정(2.4기준)  (0) 2021.04.21
JAVA의 Call By Value 와 Call By Reference ?  (0) 2018.11.21