연결을 누르면 비밀번호 상자 대신 VPN 클라이언트가 브라우저를 엽니다. 이 인계는 터널이 스스로 인증할 것이라 기대하는 사람을 혼란스럽게 합니다. 브라우저는 우회로가 아닙니다. ID 공급자가 실제로 사람을 인증하는 곳이 바로 거기이며, 클라이언트는 결과만 기다립니다.

로그인 하나를 처음부터 끝까지 따라가면 각 실패가 어느 단계에 속하는지 보입니다. 대부분의 런북이 건너뛰는 부분이 바로 이것입니다.

게이트웨이 설정이 아니라 클라이언트에서 시작하세요

클라이언트는 요청을 만들고 서비스 공급자 식별자와 반환 위치를 붙여 브라우저를 ID 공급자로 보냅니다. 그러면 조직의 IdP가 설정된 절차를 실행합니다. 비밀번호, MFA, 기기 검사, 조건부 액세스입니다. 브라우저에 이미 유효한 세션이 있으면 보이는 부분은 한두 초면 끝날 수 있습니다. 그 짧음은 세션 재사용이며 검사를 건너뛴 것이 아닙니다.

무엇보다 먼저 클라이언트의 연합 설정에서 두 값을 읽으세요. 신뢰하는 IdP 메타데이터나 URL, 그리고 기대하는 콜백 주소입니다. 거기가 어긋나면 비밀번호를 입력하기 전에 실패합니다.

ID 공급자가 돌려주어야 하는 것

IdP는 서명된 SAML 응답으로 답합니다. 그 안에는 누가 주체인지, 누가 발급했는지, 누구를 위한 것인지, 언제까지 유효한지에 대한 어서션이 있습니다. 이 필드들이 계약입니다. 발급자, 대상, 수신자, 유효 기간이 모두 서비스가 기대하는 것과 맞아야 합니다.

올바른 IdP가 서명했더라도 다른 대상에게 보낸 응답은 여전히 무효입니다. 실험실에서 운영 환경으로 메타데이터를 복사할 때 건너뛰는 검사가 이것입니다.

VPN 서비스가 신뢰하기 전에 검증하는 것

서비스는 신뢰하는 인증서로 서명을 검증하고 발급자, 대상, 수신자를 확인한 다음 시간 조건을 평가합니다. 그다음에야 어서션을 사용자나 그룹에 매핑하고 VPN 권한 정책을 적용합니다. 여기서 인증과 권한 부여는 별개의 단계이며, 일치하는 그룹이 없는 유효한 어서션은 연결은 되지만 아무것도 닿지 않는 세션을 만듭니다.

어서션은 인증 자료이며 비밀번호가 아닙니다. 다른 클라이언트에 붙여 넣거나 나중 재연결을 위해 보관하는 것은 지원되는 로그인이 아닙니다.

따로 끝나는 두 수명

IdP의 브라우저 세션과 게이트웨이의 VPN 세션은 서로 다른 시계로 만료됩니다. IdP에서 로그아웃한다고 이미 맺어진 터널이 반드시 끊기지는 않으며, 터널을 끊는다고 브라우저에서 로그아웃되지는 않습니다.

AWS Client VPN은 자사의 연합 흐름이 SAML 단일 로그아웃을 지원하지 않는다고 문서에 밝힙니다. 이 간극의 구체적인 예입니다. 대칭을 가정하지 말고 자신의 서비스를 확인하세요.

그래서 재연결은 09:00과 15:00에 다르게 동작합니다. IdP 세션을 조용히 재사용할 수도, MFA를 다시 요구할 수도, 엔드포인트 세션 기간이 끝났지만 브라우저 세션은 남아 있어 실패할 수도 있습니다. AWS 연합 워크플로는 자체 클라이언트와 응답 요구 사항을 설명하며, 다른 서비스는 다른 인계 방식을 씁니다.

브라우저 단계가 실패하면 이 순서로 확인하세요

브라우저에서 바깥으로 나아가세요. 오류 메시지는 보통 첫 번째가 아니라 마지막 홉을 지목합니다.

페이지가 전혀 로드되지 않으면 클라이언트의 IdP URL이나 그 경로가 틀렸습니다. IdP가 요청을 거부하면 서비스 공급자 식별자나 콜백이 설정과 맞지 않습니다. 브라우저가 성공을 보여도 클라이언트가 실패하면 응답이 잘못된 곳에 도착했거나 대상과 시간 검증에서 실패한 것입니다. 터널이 올라오지만 액세스가 없으면 어서션은 받아들여졌으나 그룹 매핑이 안 된 것입니다.

기대하는 페이지, 콜백, 그룹 매핑을 한 문서에 두세요. 그러면 VPN 로그인이 깨졌다고 보고하는 사용자가 이 네 가지 중 무엇을 보았는지 말할 수 있고, 답은 이미 절반 쓰인 셈입니다.

관련 글