개요
디지털 애셋 링크 프로토콜 및 API를 사용하면 앱 또는 웹사이트에서 다른 앱이나 웹사이트에 관한 검증 가능한 공개 문을 작성할 수 있습니다. 예를 들어 웹사이트에서 특정 Android 앱과 연결되어 있다고 선언하거나 사용자 인증 정보를 다른 웹사이트와 공유하고자 한다고 선언할 수 있습니다.
다음은 디지털 애셋 링크의 몇 가지 가능한 용도입니다.
- 웹사이트 A는 앱이 설치된 경우 사이트 링크가 휴대기기의 지정된 앱에서 열려야 한다고 선언합니다.
- 웹사이트 A는 Chrome 사용자 인증 정보를 웹사이트 B와 공유할 수 있으므로 웹사이트 A에 로그인한 경우 웹사이트 B에 로그인할 필요가 없다고 선언합니다.
- 앱 A가 위치와 같은 기기 설정을 웹사이트 B와 공유할 수 있다고 선언합니다.
핵심 용어
- 주 구성원: 주 구성원은 설명을 하는 앱 또는 웹사이트입니다. Digital Asset Links에서 주 구성원은 항상 명세서 목록을 호스팅하는 앱 또는 웹사이트입니다.
- 문 목록: 명령문은 하나 이상의 명령문이 포함된 문 목록에 포함됩니다. 문 목록은 주 구성원이 제어하고 스푸핑하거나 조작하기 어려운 일반 텍스트이며 공개적으로 액세스할 수 있습니다. 독립형 파일일 수도 있고 다른 더 큰 항목의 섹션일 수도 있습니다. 예를 들어 웹사이트에서는 전체 파일이며, Android 앱에서는 앱 매니페스트의 섹션입니다. 문은 독점이 아닌 메서드를 사용하여 누구나 보고 확인할 수 있습니다. 자세한 내용은 명령문 목록 문서 참고
- 문: 문은 relation (문에서 지시하는 내용, 예: 사용자 인증 정보 공유 사용 설정)와 relation (관계가 적용되는 웹사이트 또는 앱)으로 구성된 긴밀히 구조화된 JSON 구조입니다. 따라서 각 문은 문장과 같습니다. 여기서 principal은 대상에 대한 관계를 말합니다.
- 문 소비자: 문 소비자는 주 구성원에게 문 목록을 요청하고, 지정된 주 구성원에 대한 문이 있는지 확인하고, 문이 존재하는 경우 지정된 작업을 수행할 수 있습니다. 자세한 내용은 문서 읽기 문서를 참고하세요.
빠른 사용 예
다음은 웹사이트 www.example.com에서 디지털 애셋 링크를 사용하여 해당 사이트의 URL 링크가 브라우저가 아닌 지정된 앱에서 열리도록 지정하는 방법을 보여주는 매우 간단한 예입니다.
- 웹사이트 www.example.com은 https://www.example.com/.well-known/assetlinks.json에 설명 목록을 게시합니다. 사이트에 있는 명령문 목록의 공식 이름 및 위치입니다. 다른 위치의 명령문 목록이나 다른 이름을 갖는 명령문 목록은 이 사이트에 유효하지 않습니다. 이 예에서 명령문 목록은 하나의 명령문으로 구성되며, Android 앱에 사이트의 링크를 열 수 있는 권한을 부여합니다.
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target" : { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": ["hash_of_app_certificate"] } }]
명령문 목록은 [ ] 표시 내에 있는 구문 배열을 지원하지만, 예시 파일에는 하나의 명령문만 포함되어 있습니다.sha256_cert_fingerprints
는 앱 서명 인증서의 SHA256 지문입니다. 자세한 내용은 Android App Links 문서를 참고하세요. - 위 문에 나열된 Android 앱에는 처리하려는 URL의 스키마, 호스트, 경로 패턴(이 경우 https://www.example.com)을 지정하는 인텐트 필터가 있습니다. 인텐트 필터에는 Android M의 새로운 특수 속성인
android:autoVerify
이 포함되어 있습니다. 이 속성은 앱이 설치될 때 인텐트 필터에 설명된 웹사이트의 문을 확인해야 함을 나타냅니다. - 사용자가 앱을 설치합니다. Android는
autoVerify
속성이 있는 인텐트 필터를 보고 지정된 사이트에 문 목록이 있는지 확인합니다. 문 목록이 있는 경우 Android는 이 파일에 앱에 링크 처리를 부여하는 문이 포함되어 있는지 확인하고 인증서 해시로 문과 앱을 대조합니다. 모든 것이 확인되면 Android는 https://www.example.com 인텐트를 example.com 앱으로 전달합니다. - 사용자가 기기에서 https://www.example.com/puppies로 연결되는 링크를 클릭합니다. 이 링크는 브라우저, Google Search Appliance 추천 등 어디에나 있을 수 있습니다. Android는 이 인텐트를 example.com 앱에 전달합니다.
- example.com 앱이 인텐트를 수신하고 처리하기로 선택하여 앱에서 강아지 페이지를 엽니다. 어떤 이유로든 앱이 링크 처리를 거부했거나 앱이 기기에 없는 경우 링크는 해당 인텐트 패턴과 일치하는 다음 기본 인텐트 핸들러 (종종 브라우저)로 전송됩니다.
중요한 고려사항 및 제한사항:
- 프로토콜은 문을 작성하는 주 구성원을 인증하지 않지만 주 구성원과 밀접하게 연결되어 있고 주 구성원이 제어하는 특정 위치에 문이 있습니다.
- 이 프로토콜은 문 타겟을 인증하지는 않지만 호출자가 타겟을 인증할 수 있는 수단을 제공합니다 (예: 문은 인증서 해시 및 패키지 이름으로 모바일 앱 타겟을 식별합니다).
- 이 프로토콜은 기본적으로 문 작업을 실행하지 않습니다. 대신 문을 노출하는 기능을 사용할 수 있으며, 이때 소비 애플리케이션은 이를 검증한 후 조치 여부와 조치 방법을 결정해야 합니다. Android M은 기본적으로 이 단계를 수행합니다. 예를 들어 웹사이트에서 링크 처리를 특정 앱에 위임하는 경우 Android는 문을 확인 및 확인하고 타겟 앱을 확인한 다음 지정된 링크를 처리할 수 있는 옵션을 앱에 제공합니다.
- 이 프로토콜은 2개의 제3자에 대한 진술을 할 수 없습니다. 즉, 웹사이트 A는 웹사이트 B에 대한 문장을 만들 수 있지만 웹사이트 A는 웹사이트 B와 웹사이트 C의 관계에 대해 진술할 수 없습니다. 그러나 웹사이트 B가 웹사이트 A를 신뢰하는 경우, 웹사이트 A에서 웹사이트 C에 대한 권한을 부여하는 문장이 있는지 확인한 후 이를 구현하기로 결정할 수 있습니다.