앱과 웹사이트에서 크로스 플랫폼 원활한 사용자 인증 정보 공유를 사용 설정하여 사용자 편의성을 극대화하세요. 여러 웹사이트와 Android 앱이 계정 관리 백엔드를 공유하는 경우 이 기능을 사용하면 사용자가 사용자 인증 정보를 한 번 저장하고 연결된 웹사이트 또는 Android 앱에서 자동으로 추천받을 수 있습니다.
권장사항
최적의 사용자 환경과 보안을 위해 다음 터치 포인트에서 원활한 사용자 인증 정보 공유를 구현하세요.
- 로그인 양식: 자동 사용자 인증 정보 입력을 사용 설정합니다.
- 가입 양식: 여러 플랫폼에서 사용할 새 사용자 인증 정보를 안전하게 저장합니다.
- 비밀번호 변경 양식: 모든 플랫폼에서 비밀번호 업데이트를 동기화합니다.
- 비밀번호 재설정 양식: 비밀번호를 한 번 재설정하여 모든 플랫폼을 업데이트할 수 있습니다.
- WebView 도메인: 계정 관리 (호스트 로그인, 가입, 비밀번호 변경 또는 비밀번호 재설정 양식)를 처리하는 앱 내 WebView 도메인으로 사용자 인증 정보 공유를 확장합니다.
- Android 앱
이 접근 방식은 통합된 사용자 인증 정보 관리 시스템을 만들어 사용자 편의성과 보안을 모두 개선합니다.
계정 관리 웹사이트를 설계할 때는 계정 관리 사이트에 관한 다음 권장사항을 따르는 것이 좋습니다.
Android 앱을 설계할 때는 앱을 Android 인증 관리자와 통합하는 것이 좋습니다.
기본 요건
원활한 사용자 인증 정보 공유를 설정하기 전에 각 플랫폼에 다음이 있는지 확인하세요.
각 Android 앱:
- 앱의
build.gradle
파일에 선언된 Android 애플리케이션 ID입니다. - 서명 인증서의 SHA256 지문입니다.
- (권장) Credential Manager API를 사용하여 구현된 사용자 로그인
웹사이트별로 다음을 수행합니다.
- 디지털 애셋 링크 (DAL) 구문에 따라 각 도메인에
/.well-known/assetlinks.json
파일을 게시할 수 있습니다. - 모든 계정 관리 도메인 (로그인, 가입, 비밀번호 변경 또는 비밀번호 재설정 양식)은 HTTPS를 통해 액세스할 수 있어야 합니다.
Android 앱과 웹사이트에서 원활한 사용자 인증 정보 공유 사용 설정
앱과 웹사이트 간에 원활한 사용자 인증 정보 공유를 구성하려면 사용자 인증 정보를 공유할 수 있는 항목 (웹사이트 또는 Android 앱)을 선언하는 디지털 애셋 링크 문구 목록을 만들고 게시합니다.
사용자 인증 정보 공유 관계를 선언하려면 다음 단계를 따르세요.
DAL 문 목록 문법에 따라 웹사이트 및 Android 앱에 연결되는 문이 포함된
assetlinks.json
파일을 만듭니다.[ { "relation":[ "delegate_permission/common.get_login_creds" ], "target":{ "namespace":"web", "site":URL } }, { "relation":[ "delegate_permission/common.get_login_creds" ], "target":{ "namespace":"android_app", "package_name":"APP_ID", "sha256_cert_fingerprints":[ "SHA_HEX_VALUE" ] } } ]
여기서
URL
는 사이트의 URL이고,APP_ID
는 Android 애플리케이션 ID이고,SHA_HEX_VALUE
는 Android 앱 서명 인증서의 SHA256 지문입니다.relation
필드는 선언되는 관계를 설명합니다. 앱과 사이트에서 로그인 사용자 인증 정보를 공유한다고 선언하려면 관계를delegate_permission/common.get_login_creds
로 지정합니다. DAL의 관계 문자열에 대해 자세히 알아보세요.target
필드는 선언이 적용되는 애셋을 지정하는 객체입니다.다음은 웹사이트를 식별하기 위한 필드입니다.
namespace
web
site
https://domain[:optional_port
형식의 웹사이트 URL(예: https://www.example.com).domain
은 정규화되어야 하며, HTTPS에 포트 443을 사용할 때는optional_port
를 생략해야 합니다.site
타겟은 루트 도메인만 될 수 있으며 앱 연결을 특정 하위 디렉터리로 제한할 수 없습니다. URL에 후행 슬래시와 같은 경로를 포함하면 안 됩니다.하위 도메인은 일치하는 것으로 간주하지 않습니다. 즉,
domain
을 www.example.com으로 지정하면 도메인 www.counter.example.com은 앱과 연결되지 않습니다.다음은 Android 앱을 식별하기 위한 필드입니다.
네임스페이스
android_app
package_name
앱의 매니페스트에 선언된 패키지 이름입니다. 예: com.example.android
sha256_cert_fingerprints
앱 서명 인증서의 SHA256 지문입니다.
디지털 애셋 링크 JSON 파일을 로그인 도메인의
https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json
위치에 호스팅합니다. 여기서DOMAIN
는 정규화된 형식이며 HTTPS에 포트 443을 사용할 때는OPTIONAL_PORT
을 생략해야 합니다.1단계에서 만든 문장 목록에 연결되는 문을 Android 앱의
res/values/strings.xml
파일에 삽입하여 Android 앱에서 연결을 선언합니다. 로드할assetlinks.json
파일을 지정하는 객체를 추가합니다. 예를 들면 다음과 같습니다.<string name="asset_statements" translatable="false"> [{ \"include\": \"https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json\" }] </string>
DOMAIN
및OPTIONAL_PORT
(HTTPS에 포트 443을 사용하는 경우 생략해야 함)을 바꿉니다(예:https://www.example.com
). 문자열에서 사용하는 아포스트로피와 따옴표는 이스케이프 처리해야 합니다.DAL 문서에 설명된 대로
strings.xml
파일에 JSON 스니펫을 추가할 수도 있지만include
문을 사용하면 새 버전의 앱을 게시하지 않고 문을 변경할 수 있습니다.<application>
아래 앱의AndroidManifest.xml
파일에 다음 줄을 추가하여 매니페스트의 문을 참조합니다.<meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
Google Play Console에 새 버전의 Android 앱 게시
이 단계를 완료하면 웹사이트와 Android 앱 간에 원활한 사용자 인증 정보 공유가 설정됩니다.
이는 사용자 인증 정보 공유를 위해 DAL을 설정하는 유일한 유효한 방법은 아니지만, 이 접근 방식을 사용하면 향후 원활한 사용자 인증 정보 공유 네트워크에 새 항목을 추가하는 프로세스가 간소화되고 코드 재사용성이 향상되며 업데이트 중에 오류가 발생할 가능성이 줄어듭니다.