최근 회사에서 진행하는 프로젝트의 솔루션이 점유율도 꽤 되는 회사인데도 불구하고, SSO가 완벽히 지원되지 않고, MFA가 없기에 이 방법을 통해 보안을 강화하고 있다.
그리고 Application Proxy를 사용하는 가장 큰 문제는, 내가 해당 솔루션의 보안 수준을 믿지 못하겠다. 다시한번 말하지만 규모 및 점유율이 낮거나 작은회사가 아니지만, 앞에 Microsoft login 페이지부터 나온다면 보안적으로 훌륭하지 않은가?
요즘 같은 세상에, id/pw만 가지고 public에 내놓는 다뇨!!!
그리고 만약에 내가 Microfot login 페이지를 뚫을 수 있다면 현재 회사의 페이지가 아니라 금융권 털러갈듯.
요즘 MFA라는 단어를 많이 보았을 것이다. 많은 App들이 id/pw 에서 MFA를 지원하기 시작했다. 알고 있는 지식 외에, 가지고 있는 물건에 대한 인증 또는 생체 인증을 덧붙여, 보안적으로 조금 더 안전하게 인증을 진행하고 있다.
아직 비밀번호만 사용하는가?
그럼 이러한 MFA를 내가 운영하는 솔루션에서는 어떻게 적용할까?
보통 아래의 방법들 중 하나를 선택해서 많이 사용한다.
1번의 경우, provider가 꽤 덩치가 크다면 제공할 확률이 있으나, 대부분은 제공되지 않는다.
주로 2번을 많이 사용하는 편이다.
내가 사용하는 솔루션이 Azure AD와 SSO 연결 되는지 확인하려면 아래의 링크에서 찾아보자!!
https://learn.microsoft.com/en-us/azure/active-directory/saas-apps/tutorial-list
나의 솔루션이 Azure에 있거나 On-prem에 있더라도, Azure AD의 Application Proxy를 이용한다면, MFA를 사용할 수 있다. 더 나아가, SAML을 이용한 SSO 등 Azure AD에서 Enterprise App에서 보이던 기능들 모두 사용할 수 있다.
우선 user입장에서 정리해보자면 아래와 같은 순서로 변경된다.
기존 로그인
변경된 방식
주로 MFA까지 사용 결정이 내려졌다면, 해당 솔루션에서 SAML을 통한 SSO까지는 지원되기에 사용을 할 것이다. 기존에 1번 로그인하던 user들을 2번 로그인하게 설득하는건 쉽지 않다.
뭔가 복잡할 것 같지만, 인스톨러 하나 설치하는 수준이다.
필요 사항
먼저 아래와 같이 Azure AD의 Application Proxy 탭에서 Connector를 받는다.
받은 후, 준비된 Windwos Server 2012 R2 or later 서버에 아래와 같이 설치한다. 로그인 화면에서는 Application Administrator Account 이상의 권한을 가진 아이디로 로그인한다.
설치가 완료되면, Application Proxy 탭에서 해당 서버들이 IP와 host명으로 보일 텐데, Connector 그룹을 아래와 같이 만들고 넣어준다. 만들 때, 지역을 유의해서 만들자.
이후, 아래와 같이 Enterprise Application을 On-prem 용으로 하나 만들고 설정 또한 진행하자!!
기본적으로 proxy이기에 외부에서 받는 url, https를 위한 인증서, proxy로서 다시 보내는 url 모두 필요하다.
이후, Enterprise Application에서 나의 솔루션에 사용할 사람을 선택하여 넣어주면 사용 준비가 끝이난다.
먼저 아래와 같이 cookie에 samesite는 none으로 들어가있다. (redirect해도 cookie에 있어야하니 당연한거 아닌가?)
target_solution.com에 CNAME으로 Microsoft login 페이지로 redirect 될 때 위의 cookie가 있다면 계속 login 한채로 쓸 수 있다.
또한 SSO까지 지원된다면 SAML을 통해 여러 정보들을 받아올 수 있으니 처음 가입처리를 해야한다면 해당 정보를 활용해서 만들면 된다.
아래는 cookie 안넣고 그냥 접근 시도할 때!!!
아래의 결과를 자세히 보면 Microsoft login 페이지인 것을 알 수 있다.
아래는 Postman cookie에다 기존에 발급받은 쿠키를 넣고 똑같이 접근했을 때!!!
iis 기본 페이지가 뜬 것을 볼 수 있다.
기존의 Application이 SSO나 MFA가 없을 경우, 로그인 보안을 챙기고 싶다면 매우 좋은 옵션이라 생각된다. 내 프로젝트는 SSO 안되서 실제 사용자들이 로그인 2번해야된다. 날 욕하지 말고 나사하나 빠진 솔루션을 욕하길 간절히 바란다.