.well-known/assetlinks.json, apple-app-site-association, .well-known 등 뭐하는 용도?
.well-known 디렉토리는 RFC5785에 그 의미가 설명되어 있다. 여기를 방문하면 확인가능하다.
This memo defines a path prefix for “well-known locations”, “/.well-known/”, in selected Uniform Resource Identifier (URI) schemes.
해석해보면,
/.well-known/는 정해진 URI 스키마 상에서 잘 알려진 위치들(well-known locations)의 경로 프리픽스를 정의해 줍니다.
우리가 웹서버를 통해 서비스할 때 습관처럼 항상 해야하거나 제공해야 하는 정보가 있다.
검색엔진 봇을 제어하는 robots.txt도 그렇고, 파비콘 favicon.ico나 favicon.jpg 도 그렇다.
사이트를 작성한 사람이 누군지 나타내는 humans.txt도 있다.
보안 취약점이 발견되었을 때 연락할 수 있도록 제공하는 security.txt 파일도 우리가 웹서비스에서 흔히 제공하는 정보이다. 이런 파일을 어디에 둬야 할까요? RFC5785는 이런 리소스를 .well-known 디렉토리에 두기를 제안하고 있다.
안드로이드 어플에서 활용할때
.well-known/assetlinks.json 는 Digital Asset Links 라는 구글의 표준 스펙에 따라 만들어지는 파일로 웹사이트와 모바일 앱(특히 Android앱) 간의 신뢰 관계를 증명하기 위해 사용된다.
즉, 이 웹 사이트는 이 안드로이드 앱과 같은 소유자다. 라는 소유권을 증명하는 것이다.
이 과정을 통해 Android 시스템이 웹과 앱을 같은 주체가 운영하는것으로 인식하게 되고, 그에 따른 다양한 기능을 활성화할 수 있게 된다.
구글 앱링크 문서 바로가기 => https://developer.android.com/training/app-links/verify-applinks?hl=ko#java
안드로이드 앱에서 xxxxxxx.co.kr 을 App Link로 등록
앱에 이런 설정이 들어가 있으면:
<intent-filter android:autoVerify="true">
<data android:scheme="https"
android:host="xxxxxxxx.co.kr" />
</intent-filter>
앱이 설치되거나 실행될 때
안드로이드 OS가 자동으로:
https://xxxxxxxxxx.co.kr/.well-known/assetlinks.json
요청을 보냅니다.
이때 내부적으로 OkHttp 사용 → UA가 okhttp로 찍힘.
웹과 앱 연결하기 aseetlinks.json
assetlinks.json 예시
.well-known/assetlinks.json 파일의 예시이다.
<[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.test.app",
"sha256_cert_fingerprints": [
"AB:CD:EF:12:34:56:78:90:AA:BB:CC:DD:..."
]
}
}
]
- relation : 어떤 기능을 허용할지 (URL처리, 인증 위임 등)
- namespace : 대상의 종류 (여기선 android_app)
- package_name : 연결할 앱의 패키지명
- sha256_cert_fingetprints : 앱을 서명한 인증서의 SHA-256 지문\
중요한 조건
- .well-known 폴더는 반드시 루트 경로에 위치해야 한다.
- 최종 접근 경로는 반드시 https://domain_name.com/.well-known/assetlinks.json 이어야 한다.
IOS의 경우
iOS 앱을 개발할 때 유니버셜 링크를 쓸 때도 .well-known 디렉토리에 apple-app-site-association을 넣넣는다. 안드로이드에서는 웹사이트에 공개, 인증관련 내용을 기록하는 디지털 에셋 링크도 .well-known 디렉토리에 assetlinks.json을 넣는다. 이렇게 보니 그냥 누가 아무 디렉토리 이름이 만들어서 막 쓰는게 아니라, 공식적으로 널리 애용(?)되고 있다는 걸 알 수 있다.
참고로, 무료 SSL인증서를 발급하게 해주는 고마운 서비스 Let’s Encrypt도 이 폴더를 이용한다. Let’s Encrypt를 통해 SSL 인증서를 발급받는 과정에서 .well-known/acme-challenge 폴더가 생성된다.
앱링크와 딥링크 차이점




