FedCM을 사용한 원활하고 비공개적인 사용자 인증: Seznam의 접근 방식

Natalia Markoborodova
Natalia Markoborodova

게시일: 2025년 9월 8일

여러 분야의 업계 선두주자들은 뛰어난 사용자 환경을 제공하면서 개인 정보를 보호하는 것이 얼마나 중요한지 잘 알고 있습니다. Seznam은 타협하지 않는 사용자 환경과 개인 정보 보호를 제공하기 위해 노력하고 있으며 Federated Credential Management (FedCM)를 성공적으로 통합했습니다.

FedCM의 이점을 누리는 회사

다양한 도메인의 조직에서 FedCM을 솔루션과 통합합니다. FedCM은 제휴 ID 관리를 위해 설계되었으므로 ID 공급업체 (IdP)가 주요 수혜자입니다. 이 정보를 사용하여 개선된 로그인 환경을 제공합니다. 전자상거래 서비스 제공업체와 결제 제공업체(대부분 ID 제공업체 역할도 함)도 FedCM을 통해 사용자 환경을 개선할 기회를 파악합니다.

Seznam

Seznam은 체코 인구의 90% 에 도달하는 유럽 기술 회사이자 ID 공급업체입니다. 소셜, 지식, 콘텐츠 허브 역할을 합니다. Seznam은 파트너 플랫폼에서 운영되는 온라인 상점의 고객이 Seznam 계정을 사용하여 로그인할 수 있도록 FedCM을 채택했습니다.

eshop.starkl.com의 FedCM 대화상자에서 사용자에게 Seznam 계정으로 로그인하라는 메시지가 표시됩니다.
파트너 사이트에서 Seznam으로 로그인하라는 FedCM 대화상자

FedCM을 통해 Seznam은 파트너 네트워크에서 사용자 로그인 비율을 크게 높이고, 사용자 환경을 개선했으며, 서드 파티 쿠키 사용 가능 여부와 관계없이 일관된 ID 흐름을 달성했습니다.

동기

Seznam은 다음과 같은 여러 이점을 고려하여 FedCM을 구현하기로 했습니다.

  • FedCM은 최종 사용자를 염두에 두고 설계되어 사용자에게 IdP에 제공되는 정보를 관리할 수 있는 권한을 부여합니다. 이는 사용자에게 안전하고 비공개적인 환경을 제공하고자 하는 Seznam의 비전과 일치합니다.
  • FedCM은 내장 브라우저 기능이며 OAuth 2.0 표준을 사용하는 Seznam의 기존 로그인 환경과 호환됩니다.
  • FedCM은 개인 정보 보호 중심의 ID 제휴 접근 방식입니다. 예를 들어 사용자가 로그인하면 사용자의 신뢰 당사자 (RP) 방문이 IdP와만 공유됩니다. 이는 지속 가능한 비즈니스에 대한 Seznam의 견해와 일치합니다.

구현 세부정보

Seznam은 기존 OAuth 솔루션 위에 레이어로 FedCM을 구현했습니다. 이 아키텍처에서 FedCM 흐름은 IdP에서 RP로 OAuth 승인 코드를 안전하게 전송합니다.

IdP 측에서 OAuth 승인 코드로 교환된 FedCM 토큰을 보여주는 FedCM 흐름
OAuth와 통합된 FedCM 흐름입니다. 다이어그램 코드를 참고하세요.

구현 노력

Seznam은 FedCM 구현이 간단하고 기존 접근 방식과 일치한다고 생각했습니다. 연구와 API 구현에 한 달이 걸렸으며 개발자 2명이 필요했습니다. FedCM을 프로덕션에 도입하는 데 2개월도 걸리지 않았습니다. 이 프로세스는 반복적이었으며 API를 연구하는 데 상당한 시간을 할애했습니다.

도전과제

초기 도입자인 Seznam은 여러 문제를 파악하고 API를 개선하는 데 도움이 되는 귀중한 의견을 제공했습니다.

여러 ID 공급업체 지원

Seznam은 FedCM의 다중 ID 공급업체 지원에 관심이 있었습니다. 이 기능을 통해 사용자는 파트너 RP에서 Seznam 또는 Google 계정 중에서 선택할 수 있습니다. 하지만 Seznam이 처음 FedCM 구현에 접근했을 때 이 기능은 초기 구현 단계에 있었고 개발자는 오리진 트라이얼에 가입하고 토큰을 사용하여 사용자에게 이 기능을 사용 설정해야 했습니다. 이러한 이유로 Seznam은 Chrome 안정화 버전에서 이 기능이 제공될 때까지 기다리기로 했습니다.

이 기능은 Chrome 136부터 사용할 수 있으며 개발자는 여러 ID 공급업체에 대한 지원을 구성할 수 있습니다. 예를 들어 Seznam 및 Google ID 공급업체를 모두 지원하기 위해 IdP는 단일 get() 호출에 두 공급업체를 포함할 수 있고 RP는 독립적으로 포함할 수 있습니다.

  // Executed on the RP's side:
    const credential = await navigator.credentials.get({
      identity: {
        providers: [
          {
            // IdP1: Seznam config file URL
            configURL: 'https://szn.cz/.well-known/web-identity',
            clientId: '123',
          },
          {
            // Allow Google Sign-in
            configURL: 'https://accounts.google.com/gsi/fedcm.json',
            clientId: '456',
          },
        ],
      },
    });

Seznam은 이 기능이 솔루션에 포함될 것이라고 표시합니다. 또한 FedCM팀은 여러 get() 호출을 지원하여 여러 SDK 지원을 구현하고 있습니다.

비공개 DNS

Seznam은 테스트 단계에서 네트워크 구성과 관련된 문제가 발생했습니다. 테스트 IdP 서버는 비공개 DNS를 통해서만 액세스할 수 있는 비공개 네트워크 내에 있었습니다. 이 설정은 공개 전에 내부 테스트 및 개발 환경에 일반적으로 사용됩니다.

하지만 이 설정에는 문제가 있습니다. well-known 파일은 eTLD+1에서 제공되어야 하는데 비공개 개발 도메인은 공개 접미사 목록에 등록되어 있지 않기 때문에 브라우저가 개발 도메인에 호스팅된 well-known 파일을 가져오는 요청을 보내지 않습니다.

  • login.idp.example: 프로덕션 도메인의 예입니다.
  • idp.example/.well-known/web-identity: 프로덕션의 well-known 파일 예시입니다.
  • login.dev.idp.example: 개발 도메인의 예입니다.
  • login.dev.idp.example/.well-known/web-identity: 개발 환경의 well-known 파일 예시입니다.

FedCM 구현이 비공개 도메인에서 호스팅되는 경우 well-known 파일에 대한 브라우저 요청으로 인해 다음 오류가 발생합니다.

The fetch of the well-known file resulted in a network error: ERR_NAME_NOT_RESOLVED

Chrome #fedcm-without-well-known-enforcement 플래그를 사용 설정하면 이 오류를 해결할 수 있습니다. 이 플래그를 사용 설정하면 브라우저가 테스트 목적으로 well-known 파일 가져오기를 건너뜁니다. Chrome에서 테스트 플래그를 사용 설정하는 방법을 알아보세요.

맞춤 정보 공개

Seznam은 초기 FedCM UI 디자인과 함께 추가 정보도 포함하고 싶어 했습니다. 표준 FedCM 대화상자에는 특정 데이터(일반적으로 사용자의 프로필 이미지, 이름, 이메일 주소)가 RP와 공유된다는 고정 메시지가 사용자에게 표시됩니다.

FedCM팀은 의견을 반영하여 사용자에게 표시되는 정보 공개를 맞춤설정할 수 있도록 API를 확장했습니다. 예를 들어 IdP는 계속하기 기능을 사용하여 사용자를 맞춤 페이지로 리디렉션하여 추가 정보나 권한을 요청할 수 있습니다. Chrome 132부터 지원되는 맞춤 매개변수필드 기능을 사용하면 더욱 세부적으로 맞춤설정할 수 있습니다.

사용자가 Drive 파일 및 캘린더 일정 보기 및 다운로드와 같은 추가 권한을 부여해야 FedCM 가입을 계속할 수 있음을 보여주는 IdP 페이지
사용자는 `Parameters` API를 사용하여 RP가 ID 어설션 엔드포인트에 전달한 추가 권한을 검토하고 부여할 수 있습니다.

신뢰 당사자 출처 검증

IdP 서버는 수신되는 FedCM 요청에서 Origin HTTP 헤더의 유효성을 검사하여 요청이 RP가 IdP에 사전 등록한 출처와 일치하는지 확인해야 합니다. 이렇게 하면 FedCM ID 어설션 요청client_id를 사용하는 공격자가 아닌 승인된 RP에서 전송됩니다.

Seznam에는 특이 사례가 있습니다. 파트너 RP가 Seznam에 등록할 때 RP의 출처 데이터를 요청하지 않습니다. 즉, RP의 출처를 확인할 수 없습니다.

Seznam의 FedCM 통합은 기존 OAuth 솔루션을 기반으로 합니다. 출처를 확인하지 않고 솔루션의 보안을 유지하기 위해 RP의 client_idclient_secret를 모두 검증하는 대체 경로를 사용했습니다.

ID 공급업체 사용자 대상 도메인

Seznam의 사용자 인증 인프라는 주로 szn.cz 도메인에서 작동하며, 여기에는 FedCM에 필요한 IdP 엔드포인트가 호스팅됩니다. 하지만 사용자가 널리 인식하고 신뢰하는 서비스의 주요 기업 ID와 도메인은 seznam.cz입니다.

FedCM 대화상자에는 IdP 엔드포인트의 실제 출처 도메인(szn.cz)이 표시됩니다. seznam.cz 브랜드에 익숙한 사용자는 로그인 과정에서 익숙하지 않은 szn.cz 도메인으로 로그인하라는 메시지가 표시되면 혼란을 느끼고 망설일 수 있습니다.

Chrome 141부터 FedCM은 IdP 구현을 호스팅하는 도메인과 다른 도메인을 표시할 수 없습니다. 이 제한사항은 사용자의 투명성을 보장하기 위한 의도적인 설계 선택입니다. 하지만 FedCM팀은 이 제한으로 인해 발생할 수 있는 문제를 인식하고 잠재적인 조정에 대해 논의하고 있습니다.

영향

이제 Seznam은 FedCM API를 사용하여 파트너 사용자에게 탭 한 번으로 승인 흐름을 제공할 수 있습니다. 다른 인증 방법과 비교했을 때 FedCM의 UX가 갖는 이점을 강조했습니다.

Seznam은 FedCM 로그인으로 전환된 웹사이트에서 사용자 참여도가 크게 증가했다고 언급했지만, 다른 요인으로부터 정확한 직접적 영향을 분리하기 위한 포괄적인 분석을 수행하지는 않았습니다. FedCM 통합 전에는 동의한 해싱된 이메일을 사용하여 사용자 식별을 위한 게스트 결제가 허용되었습니다. 이러한 분석을 수행하는 데 있어 어려운 점은 사용자 전환이 FedCM에 기여한 것인지 아니면 사용자가 게스트 결제를 사용하여 구매를 완료한 것인지 추정하는 것이었습니다. Seznam의 가설에 따르면 FedCM의 사용 편의성 개선이 전환율 상승에 기여했을 수 있습니다.

결론

Seznam은 FedCM을 성공적으로 구현하여 기존 OAuth 솔루션과 함께 대체 승인 흐름을 제공합니다. Seznam은 ID 공급업체 지원, 비공개 DNS 설정, 공개 텍스트 맞춤설정, 신뢰 당사자 출처 검증, 사용자 대상 도메인 표시와 관련된 몇 가지 문제에 직면했지만 API는 구현 이후 성숙해졌습니다. FedCM팀은 Seznam 및 기타 초기 도입자의 의견을 반영하여 이러한 문제를 해결할 수 있는 더 나은 도구를 지원합니다. 다음 단계로 Seznam은 여러 ID 공급업체를 지원하는 FedCM을 구현할 계획입니다.