요약

날짜는 제공자가, 장부는 사이트가 쥐었다

Google은 2014년 2월 OpenID Connect의 공식화 소식을 전하면서 옛 진입로의 마지막 날도 적었다. OpenID 2.0 지원은 2015년 4월 20일 끝난다. 회사는 연합 로그인을 새 표준으로 집중시키고 자체 도구를 이관 경로로 제시했다. 사이트에는 일 년 넘는 준비 기간이 있었다. 그러나 마감일을 정할 권한은 인증 서비스를 운영하는 쪽에 있었다. Google 로그인을 쓰던 사이트는 자기 코드를 고칠 수 있어도 Google의 옛 끝점을 스스로 연장할 수 없었다.

그 끝점 뒤에는 사이트가 보관하는 계정 장부가 있었다. OpenID 2.0에서 검증된 식별자는 주문, 저장한 글, 회원 자격, 접근 권한을 묶어 두는 로컬 키가 됐을 수 있다. OpenID Connect는 신원을 발급자와 주체의 짝으로 나타낸다. 같은 사람이 돌아와도 데이터베이스가 찾는 키의 모양은 달라진다. 새 로그인을 통과시켰다고 해서 옛 기록이 저절로 열린다는 뜻은 아니다. 연결을 놓치면 비어 있는 새 계정이 생기고, 잘못 연결하면 다른 사람의 계정 기록이 열릴 수 있다.

Google은 2015년 3월 20일 마감일을 다시 알렸다. OpenID 2.0과 여러 구형 방식은 4월 20일 중단된다. 이관하지 않은 애플리케이션은 지원되는 방식으로 옮길 때까지 Google과 연결하지 못할 수 있고, 사용자 로그인도 영향을 받을 수 있다. 이는 발생한 장애 수를 집계한 글이 아니라 운영사가 제시한 종료 결과다. 옛 인증 입구를 끌 수 있는 손이 누구 것인지는 분명했다.

문을 닫기 나흘 전 최종 규칙이 승인됐다

OpenID Foundation의 2015년 4월 16일 발표에 따르면 최종 이관 규격은 찬성 28표, 반대 0표, 기권 4표로 승인됐다. Google의 예정일까지 나흘이 남았다. 이 나흘이 개발 전체 기간을 뜻하지는 않는다. 종료 계획은 전년도에 공개됐고, 최종 규격의 부록은 2014년 6월판 Google 이관 안내와 조항을 비교한다. 나흘이라는 간격은 오래된 입구가 닫히기 전에 두 식별자를 안전하게 잇는 공동 방법이 공식 확정된 시점을 보여준다.

규격 본문은 옛 키와 새 키의 형식 차이를 짚는다. OpenID 2.0은 확인된 Claimed Identifier를 사용했고 Connect는 발급자·주체 쌍을 쓴다. 사이트는 인증 요청에 openid2 범위를 더해 옛 식별자도 함께 요청한다. 제공자가 사용자에게 연결된 옛 식별자를 알고 있으면 ID Token의 openid2_id 항목에 담아 돌려준다. 사이트는 먼저 토큰을 검증한다. 그다음 토큰의 발급자가 그 옛 식별자에 관해 주장할 권한이 있는지 확인해야 한다. 새 토큰에 옛 주소가 적혀 있다는 사실만으로 계정 소유권이 증명되지는 않는다.

최종 규격은 그 권한을 확인할 경로를 둔다. 제한된 조건에서 옛 제공자와 새 제공자의 권한 주체가 같음을 확인할 수 있다. 그렇지 않다면 사이트는 옛 식별자 URI에 Accept: application/json으로 요청해 iss 값을 받고, 새 ID Token의 발급자와 정확히 일치하는지 비교한다. XRI 식별자에는 별도의 절차가 있다. 확인이 실패하면 옛 식별자를 계정 연결에 쓸 수 없다. 확인을 통과한 뒤에야 기존 OpenID 2.0 계정을 새 Connect 신원에 연결하라고 권한다. 권한이 이동하는 자리는 Google 로그인 화면이 아니라 사이트의 로컬 계정 표다.

부록 B는 2014년 6월 Google 이관 안내와 최종 규격의 차이를 남겼다. 규격 작성자들의 비교에 따르면 Google 안내는 openid.realm과 openid_id를 썼고 최종 규격은 openid2_realm과 openid2_id를 택했다. 부록은 그 안내에 최종 규격이 요구하는 요청 사이트 확인과 옛 식별자에 대한 발급자의 권한 확인이 없었다고도 적는다. 날짜가 있는 안내 문서에 대한 규격 작성자의 비교이며, Google의 모든 운영 시스템을 측정한 결과는 아니다. 공통 이관 규칙이 단순한 서비스 전환 안내를 넘어 어떤 증거를 요구하는지 보여준다.

이 원문 자료에는 이관을 마친 사이트 수나 잘못 이어진 계정 수가 없다. 그런 결과를 확인하려면 각 사이트의 이관 기록과 시험 결과가 필요하다. 확인된 권한 분배는 명료하다. Google은 구형 프로토콜을 끝낼 수 있었고, 계정 기록을 가진 사이트는 새 신원에게 옛 열쇠를 줄지 판단해야 했다.