앱과 웹사이트에서 사용자 인증 정보 관리자를 사용하여 원활한 로그인 환경을 구현하기 위한 기본 전제 조건은 앱과 웹사이트 간에 보안 연결을 설정하는 것입니다. 이는 사용자 인증 정보 제공업체가 앱과 웹사이트 간에 사용자 인증 정보를 안전하게 공유할 수 있도록 하는 디지털 애셋 링크 파일을 사용하여 달성됩니다. 예를 들어 웹사이트는 디지털 애셋 링크 파일을 사용하여 Android 앱 또는 다른 웹사이트와 사용자 인증 정보를 공유한다고 선언할 수 있습니다. 디지털 애셋 링크를 사용하면 사용자가 원활한 로그인 환경을 경험하고 연결된 앱과 웹사이트에서 동일한 저장된 사용자 인증 정보를 사용할 수 있습니다.
앱과 웹사이트 간 디지털 애셋 링크 구성
사용자 인증 정보 제공업체가 앱과 웹사이트에서 패스키와 비밀번호를 공통으로 사용할 수 있도록 하려면 다음 단계에 따라 앱의 디지털 애셋 링크 파일을 만드세요.
1. 디지털 애셋 링크 JSON 파일 만들기
다음 구조로 assetlinks.json이라는 파일을 만듭니다.
[
{
"relation" : [
"<array_of_permissions_granted_to_app>"
],
"target" : {
"namespace" : "android_app",
"package_name" : "<android_application_package_name>",
"sha256_cert_fingerprints" : [
"<sha256_certificate_fingerprint_of_signing_key>"
]
}
}
]
relation: 선언되는 관계를 설명하는 하나 이상의 문자열 배열입니다. 앱과 사이트에서 로그인 사용자 인증 정보를 공유한다고 선언하려면 배열에 다음 관계를 지정합니다.delegate_permission/common.handle_all_urls: 이 관계를 통해 Android 앱 링크를 사용할 수 있으며, 이를 통해 Android 앱이 특정 도메인의 모든 웹 URL을 처리할 수 있습니다.delegate_permission/common.get_login_creds: 이 관계를 통해 웹사이트와 Android 앱 간에 사용자 인증 정보를 공유할 수 있습니다.
target: 선언이 적용되는 애셋을 지정하는 객체입니다.target.namespace:android_app로 설정합니다.target.package_name: 앱의 매니페스트에 선언된 패키지 이름(예:com.example.android)으로 설정합니다.
sha256_cert_fingerprints: 앱 서명 인증서의 SHA256 지문입니다. 앱의 SHA256 지문을 가져오려면 웹사이트 연결 선언을 참고하세요.
앱의 대상 예시는 다음과 같습니다.
[
{
"relation" : [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target" : {
"namespace" : "android_app",
"package_name" : "com.example.android",
"sha256_cert_fingerprints" : [
SHA_HEX_VALUE
]
}
}
]
2. 디지털 애셋 링크 JSON 파일 호스팅
웹사이트의 로그인 도메인에서 다음 위치에 디지털 애셋 링크 파일을 호스팅합니다.
```none
https://domain[:optional_port]/.well-known/assetlinks.json
```
예를 들어 로그인 도메인이 signin.example.com이면 다음 위치에서 파일을 호스팅합니다.
https://signin.example.com/.well-known/assetlinks.json
디지털 애셋 링크 파일의 MIME 유형은 JSON이어야 합니다. 서버가 응답에 Content-Type: application/json 헤더를 전송하고 HTTP 상태가 200로 설정되어 있는지 확인합니다.
3. 디지털 애셋 링크 파일 가져오기 허용
Google이 디지털 애셋 링크 파일을 가져오도록 호스트를 업데이트합니다. 대부분의 웹사이트는 다른 서비스가 /.well-known/ 경로에 있는 파일의 메타데이터에 액세스할 수 있도록 자동화된 에이전트가 이러한 파일을 가져오는 것을 허용합니다.
robots.txt 파일이 있는 경우 다음과 같이 robots.txt를 업데이트하여 웹 크롤러가 /.well-known/assetlinks.json를 가져올 수 있도록 허용합니다.
User-agent: *
Allow: /.well-known/
4. 앱의 매니페스트 업데이트
앱의 매니페스트 파일에서 <application> 아래에 다음 줄을 추가합니다.
<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
5. 비밀번호의 디지털 애셋 링크 구성
비밀번호에 인증 관리자를 사용하는 경우 디지털 애셋 링크를 구성하는 추가 단계를 완료해야 합니다.
매니페스트 파일에서 로드할 assetlinks.json 파일을 지정하는 객체를 추가합니다. 다음 예와 같이 문자열에서 사용하는 아포스트로피와 따옴표는 이스케이프 처리해야 합니다.
<string name="asset_statements" translatable="false">
[{
\"include\": \"https://signin.example.com/.well-known/assetlinks.json\"
}]
</string>
https://signin.example.com/.well-known/assetlinks.json 링크는 HTTP 200 응답을 반환하고 application/json의 Content-Type 헤더가 있어야 합니다.
응답에 301 또는 302 HTTP 리디렉션 또는 JSON이 아닌 Content-Type이 있으면 인증에 실패합니다.
다음 예시는 샘플 요청과 예상되는 응답 헤더를 보여줍니다.
> GET /.well-known/assetlinks.json HTTP/1.1
> User-Agent: curl/7.35.0
> Host: signin.example.com
< HTTP/1.1 200 OK
< Content-Type: application/json
다음 단계
필요한 종속 항목을 추가하고 패스키용 디지털 애셋 링크를 구성한 후 인증 관리자를 사용하여 지원되는 인증 방법인 패스키와 Google 계정으로 로그인을 구현할 수 있습니다. 시작하려면 다음 개발자 가이드를 참고하세요.
- Credential Manager로 패스키 설정: 안전하고 사용자 친화적인 인증을 위한 최신 피싱 방지 방법인 패스키를 구현하는 방법을 알아봅니다.
- 인증 관리자를 사용하여 Google 계정으로 로그인 설정: Google 계정으로 간소화된 사용자 로그인을 위해 'Google 계정으로 로그인'을 통합합니다.
- 사용자 인증 정보 관리자의 일반적인 오류 문제 해결: 사용자 인증 정보 관리자의 일반적인 오류를 해결하는 방법을 알아봅니다.
- Firebase 인증 통합: 사용자가 Google 계정을 사용하여 Firebase에 인증하도록 설정합니다.