잘 알려진 URI(well-known URI) 사용해서 더 편리한 웹사이트 만들기

art1st 2022. 9. 21. 22:58

최근 해킹 관련된 이슈들이 많이 부각되면서 저도 대부분의 웹사이트를 모바일 OS나 브라우저 자체적으로 임의 비밀번호를 생성해주고 자동으로 키체인에 저장하는 방식으로 바꾸기로 했습니다.

 

바꾸는 와중에 iOS와 Chrome 브라우저에서 공통적으로 저장된 사이트에 대해 비밀번호를 변경하는 버튼을 표시해주는 걸 발견했는데요

 

 

iOS 설정 -> 암호에 저장된 웹사이트
Chrome 설정 > 자동완성 > 비밀번호 관리자에 저장된 웹사이트

 

 

웹개발자 입장에서 저는 이런 생각이 들었습니다.

 

 

웹사이트마다 비밀번호 변경 페이지 주소와 방식이 제각기 다를 텐데 어떻게 저 버튼을 표시하지?

 

 

라는 생각이 드는채로 일단 눌러봤습니다.

그랬더니 그냥 웹사이트 메인 화면만 뜨고 비밀번호 변경과 관련된 내용은 전혀 나타나지 않습니다.

혹시나 해서 다른 도메인의 웹사이트들도 시도해봤는데 똑같고 심지어 404 페이지도 나타납니다.

 

그러다 어떤 사이트에서 실제로 비밀번호 변경 페이지가 나타났습니다!

바로 twitter.com 이었습니다.

 

 

 

이때부터 탐구심이 발동하기 시작했습니다.

왜 어떤 사이트는 되고 어떤 사이트는 안될까 하는 호기심에 동작원리를 찾아보았는데요, 생각보다 단순했습니다.

해당 버튼을 누르면 처음 연결되는 웹사이트 주소가 이렇게 생겼습니다.

 

https://twitter.com/.well-known/change-password

이후에는 아래 주소로 이동합니다

https://twitter.com/settings/password

 

/.well-known/change-password 로 접속하면 웹서버가 그 웹사이트의 비밀번호 변경 페이지 주소로 301 Redirect 하는 원리였던 것이죠.

그렇다면 이번엔 /.well-known/change-password 가 뭔지 찾아봐야겠죠.

 

change-password 는 대충 알겠는데 .well-known 은 생소한 키워드였습니다.

이 키워드가 바로 이 포스팅의 주제가 되는 Well-Known Uniform Resource Identifiers 입니다.

 

 

 

RFC 8615 - Well-Known Uniform Resource Identifiers (URIs)

 

datatracker.ietf.org

 

RFC 8615

 

이 RFC를 요약하면

1. 대부분의 웹 어플리케이션에서 공통적으로 존재하고 자주 쓰이는 정보들이 있지만 위치가 제각각이라 접근하기가 어려워..
2. 그럼 그걸 표준화해서 리소스 이름을 정하고 쉽게 접근할 수 있게 하자!
3. 아무나 추가하면 남용 위험성이 있으니 전문가가 심사해서 추가하자.

정도로 볼 수 있을 것 같습니다.

 

현재 사용되는 리소스 목록은 아래 웹사이트에서 확인할 수 있습니다.

 

https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml

 

Well-Known URIs

posh IETF [RFC7711] permanent The suffix "posh" is expected to be followed by an additional path component consisting of a service name (say, "spice") and a file extension of ".json", resulting in a full path of, for instance, "/.well-known/posh/spice.json

www.iana.org

 

처음 제출된 것은 2010년도로, 초안에 포함된 리소스들을 살펴보면 프로토콜과 관련해서 메타데이터 정보를 포함하는 것들이 대부분입니다.

애초 용도는 이러한 개별 프로토콜, 웹 어플리케이션에서 필요한 메타데이터들을 쉽게 접근하기 위한 것이었던 거죠.

폐기된 RFC

 

하지만 최근에는 OS 제조사, 브라우저 벤더사, 즉 빅테크 기업들이 이 표준을 활용해 일반적인 웹사이트 기능에도 이 표준을 활용하는 듯합니다.

그 결과가 OS, 브라우저가 공통적으로 비밀번호 변경 버튼을 제공하는 것이구요.

 

간단하게 확인한 well-known URI를 통해 비밀번호 변경이 가능한 사이트들은 아래 사이트들입니다.

 

보시다시피 외국 웹사이트들만 지원하고 있는 실정이고 국내 웹사이트는 대형 포털 포함 어느 한 곳도 지원되는 곳을 찾지 못했습니다.

가까운 미래에는 일반 사용자를 위해 비밀번호 변경을 넘어서 더 다양한 리소스가 제안되고 사용될 것 같습니다.

만약 자기가 개발 중인 웹사이트에 회원가입과 비밀번호 변경 기능이 있다면 적용해보는 건 어떨까요?