웹메일 사이트를 그룹웨어 사이트의 프레임에 넣을 경우 로그인이 되지 않는 경우

최신 웹브라우저는 CSRF(Cross-site Request Forgery) 공격을 막기 위해 SameSite 쿠키를 사용해 쿠키 전송 여부에 많은 제약을 두고 있습니다. 특히 웹메일을 그룹웨어 프레임 등에 넣어서 사용하는 경우 쿠키 전송이 되지 않아 자동 로그인이 되지 않는 문제가 발생할 수 있습니다.

  Note

SameSite 쿠키 설정은 .NET 4.7.2, .NET 4.8 이상에서 사용할 수 있습니다.

동일 도메인인 경우

아래 그림과 같이 브라우저 최 상단 사이트의 도메인 abc.com과 웹메일 사이트의 도메인 abc.com이 같을 경우 쿠키에 SameSite=Lax가 명시되면 webmail.abc.com으로 쿠키가 올바르게 전송됩니다.

samesite 01

SameSite=Lax가 명시된 쿠키를 생성하기 위해서는 아래와 같이 Web.config의 httpCookies, sessionState, forms에 sameSite="Lax", cookieSameSite="Lax"가 지정되어야 합니다.

Web.config
<system.web>
    ......
    <httpCookies sameSite="Lax" />
    <sessionState mode="InProc" timeout="40" cookieSameSite="Lax" />
    <authentication mode="Forms">
      <forms name=".DIAMOND2WEBACCESS2" loginUrl="Logon.aspx" timeout="30" protection="All" cookieSameSite="Lax" />
    </authentication>
    ......
</system.web>

sameSite와 cookieSameSite 속성이 지정되지 않을 경우 기본값이 Lax로 설정되므로 정상 동작합니다.

  Note

webmail.abc.com:8000와 같이 별도의 포트 번호를 지정해도 동일 도메인으로 취급됩니다.

다른 도메인인 경우

브라우저 최 상단 사이트의 도메인 abc.com과 웹메일 사이트의 도메인 def.com로 다르다면 SameSite=Lax가 명시되어 있는 쿠키는 webmail.def.com으로 전송되지 않습니다. 따라서 프레임에 로딩되어 있는 웹메일 사이트에는 로그인할 수 없습니다.

samesite 02

이 경우 SameSite 쿠키 표준안에 따라 HTTP 대신 HTTPS를 사용해야 올바르게 동작합니다.

samesite 03

웹메일 사이트를 HTTPS로 동작시킨 후 Web.config에서 아래와 같이 설정하면 쿠키가 전달되어 올바르게 로그인됩니다. Web.config 파일에 sameSite="None", cookieSameSite="None", requireSSL="true"을 정확히 기재하기 바랍니다.

Web.config
<system.web>
    ......
    <httpCookies sameSite="None" requireSSL="true" />
    <sessionState mode="InProc" timeout="40" cookieSameSite="None"></sessionState>
    <authentication mode="Forms">
      <forms name=".DIAMOND2WEBACCESS2" loginUrl="Logon.aspx" timeout="30" protection="All" cookieSameSite="None" requireSSL="true" />
    </authentication>
    ......
</system.web>

See Also