Click or drag to resize

Referer 검사를 이용한 자동 로그인

다른 웹사이트에서 메일캐리어 웹액세스로 이동시 사용자 인증(메일 계정과 암호 입력) 없이 자동으로 로그인 시킬 수 있습니다. 예를 들어 사내 인트라넷 시스템에 로그인 해서 사용하다가 웹액세스 시스템으로 이동한다면 일반적으로 웹액세스에 다시 로그인해야 하는 번거로움이 있습니다. 이미 인트라넷에서 인증되었기 때문에 웹액세스 인증 없이 바로 웹액세스의 로그인 상태가 된다면 매우 편리한 환경을 제공할 수 있습니다.

메일캐리어 웹액세스/웹클래식/웹모바일은 이를 위해 HTTP referer를 검사해 인증시키는 방법을 제공합니다. 인트라넷의 도메인을 웹액세스의 허용 referer 목록에 추가하고 인트라넷 페이지에서 웹액세스로의 자동 로그인 링크를 작성합니다. 사용자가 해당 링크 클릭시 웹액세스는 인트라넷이 referer 목록에 있으므로 인증을 통과시켜 로그인된 상태로 만듭니다.

Note Note

웹액세스 7.4.3 버전부터는 External/Logon._ashx_ 파일 이름을 External/Logon.ashx로 변경해야 이 기능을 사용할 수 있습니다.

Caution note Caution

Referer를 이용한 웹액세스 인증은 구현이 매우 간단한 이점이 있지만 보안상 취약점이 있으므로 폐쇄된 인트라넷과 같은 환경에서 연동하는 경우에 사용하는 것을 권장합니다. 인터넷에 오픈된 환경에서는 향상된 보안을 위해 보안 토큰을 사용한 안전한 자동 로그인 방법을 사용바랍니다.

적용 방법

웹액세스 파일 중 App_Data/referer.xml을 notepad에서 엽니다.

로그인 링크가 걸릴 사이트 도메인 또는 완전한 URL을 다음과 같은 형식으로 추가합니다.

XML
<allowed>
    <site>http://your_referer_domain1/</site>
    <site>http://your_referer_domain2/application/index.htm</site>
</allowed>

Referer가 여러 개일 경우 <site /> 태그를 여러 개 지정할 수 있습니다. 도메인 형태로 http://your_referer_domain1/ 과 같이 입력하면 해당 도메인에서의 링크는 인증을 허용하겠다는 의미입니다. 페이지 URL 형태로 입력하면 해당 페이지에서의 링크만 인증을 허용하겠다는 의미입니다.

로그인 링크는 다음과 같이 생성해서 저장합니다.

HTML
<a href="http://webaccess_domain/External/Logon.ashx?User=user@domain&ReturnUrl=%2fDefault.aspx">웹액세스로 이동</a>

user@domain에는 로그인할 메일 계정을 지정하고, %2fDefault.aspx에서는 로그인 성공 후 시작될 페이지를 지정합니다.

JavaScript를 이용한 처리 방법

iframe에 웹액세스를 로딩하는 방법입니다.

Lang 파라미터는 기본 언어를 지정하며 ko 또는 en을 지정할 수 있습니다.

JavaScript
function gotoWebaccess()
{
    document.getElementById('ifrm').src = "http://webaccess_domain/External/Logon.ashx?User=user@domain&Lang=ko";
}

새 창으로 웹액세스 페이지를 로딩하는 방법입니다.

window.open() 호출 후 생성된 window 객체에 url을 지정해야 IE에서 정상 동작합니다.

JavaScript
function gotoWebaccess()
{
    var url = "http://webaccess_domain/External/Logon.ashx?User=user@domain";
    var win = window.open('', "_blank", "width=900,height=650,scrollbars=yes,resizable=yes");
    win.location.href = url;
}

웹메일의 주소록 페이지로 이동 방법

기본 페이지(메일)가 아닌 주소록 페이지로 이동하는 방법입니다.

JavaScript
function gotoWebaccessContact()
{
    var retUrl = "/Contact/Default.aspx";
    document.getElementById('ifrm').src = "http://webaccess_domain/External/Logon.ashx?User=user@domain&Lang=ko&ReturnUrl=" + encodeURIComponent(retUrl);
}

웹메일의 메일 쓰기 페이지로 이동 방법

메일 수신자를 지정해 메일 쓰기 페이지를 띄우는 방법입니다.

JavaScript
function newMailForm(toName, toAddr)
{
    var retUrl = "/Mail/NewQ.aspx?action=new&to=" + toName + "|" + toAddr;
    var url = "http://webaccess_domain/External/Logon.ashx?Logon.ashx?User=user@domain&Lang=ko&ReturnUrl=" + encodeURIComponent(retUrl);
    var win = window.open('', "NewMail", "width=900,height=650,scrollbars=yes,resizable=yes");
    win.location.href = url;
}
웹메일을 iframe에 넣을 경우 고려 사항
Caution note Caution

최근 크로스 도메인에 대한 웹브라우저의 보안이 강화됨에 따라 아래 방법을 사용하더라도 iframe 내의 웹사이트에서는 쿠키 생성이 제한됩니다. 따라서 웹메일 로그인 자체가 불가능해집니다. 반드시 iframe 사이트와 iframe을 감싸는 사이트의 도메인을 동일하게 구성하기 바랍니다.

웹메일을 그룹웨어와 같은 다른 웹사이트 내의 iframe에 넣어서 사용하는 경우가 있습니다. 그룹웨어 사이트와 웹메일 사이트가 동일한 도메인일 경우 문제가 없지만 도메인이 다를 경우 iframe에 들어가는 웹메일이 쿠키 정보를 사용하지 못해 자동 로그인이 안되는 경우가 발생합니다(P3P 규약).

이 문제를 해결하기 위해서는 웹메일 사이트에 P3P 규약을 허용하도록 설정해야 합니다. 웹메일 루트 폴더에 있는 Web.config 파일을 연 후 <system.webServer> 아래에 아래와 같이 <customHeaders>를 추가합니다.

Web.config
<system.webServer>
    ......
    <httpProtocol>
        <customHeaders>
            <add name="P3P" value="CP=&quot;NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM&quot;" />
        </customHeaders>
    </httpProtocol>
    ......    
</system.webServer>