1. ภาพรวม
ผู้ใช้เข้าถึงบริการของคุณทั้งในเว็บไซต์และแอป Android หรือไม่ การบังคับให้ผู้ใช้ลงชื่อเข้าใช้แยกกันในแต่ละแพลตฟอร์มจะสร้างอุปสรรคที่ไม่จำเป็นและอาจทำให้ผู้ใช้ทำไม่สำเร็จ
ลิงก์เนื้อหาดิจิทัล (DAL) ช่วยแก้ปัญหานี้ด้วยการให้คุณประกาศการเชื่อมโยงระหว่างเว็บไซต์กับแอป ซึ่งจะช่วยให้เครื่องมือจัดการรหัสผ่าน เช่น เครื่องมือจัดการรหัสผ่านบน Google แชร์รหัสผ่านและพาสคีย์ที่บันทึกไว้ระหว่างกันได้
โดยเฉพาะอย่างยิ่ง การกำหนดค่าไฟล์ลิงก์เนื้อหาดิจิทัลต้องใช้ความสัมพันธ์ที่แตกต่างกันไปตามสิ่งที่คุณต้องการแชร์ ดังนี้
- สำหรับรหัสผ่าน: การรวม
delegate_permission/common.get_login_credsจะช่วยให้เครื่องมือจัดการรหัสผ่านแชร์รหัสผ่านที่บันทึกไว้ระหว่างเว็บไซต์และแอปได้ - สำหรับพาสคีย์: เนื่องจากพาสคีย์เชื่อมโยงกับโดเมนเว็บที่เฉพาะเจาะจงอย่างเคร่งครัด Android จึงกำหนดให้ต้องมีหลักฐานแสดงความเป็นเจ้าของโดเมน ดังนั้นคุณต้องใส่
delegate_permission/common.handle_all_urlsแม้ว่าคุณอาจรู้จักสิทธิ์นี้ในฐานะสิทธิ์ที่ใช้สำหรับ Android App Links (Deep Link) แต่ก็ยังเป็นข้อกำหนดที่เข้มงวดในการอนุญาตให้ใช้พาสคีย์ที่สร้างในแพลตฟอร์มหนึ่งในอีกแพลตฟอร์มหนึ่งด้วย
ผลลัพธ์ที่ได้ก็คือ ผู้ใช้จะลงชื่อเข้าใช้แพลตฟอร์มในเครือได้อย่างราบรื่นโดยใช้รหัสผ่านหรือพาสคีย์ที่บันทึกไว้สำหรับแพลตฟอร์มใดแพลตฟอร์มหนึ่ง

การใช้การแชร์ข้อมูลเข้าสู่ระบบอย่างราบรื่นจะช่วยปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก ตัวอย่างเช่น eBay มีการลงชื่อเข้าใช้สำเร็จเพิ่มขึ้น 10% หลังจากใช้ DAL สำหรับการแชร์ข้อมูลเข้าสู่ระบบ
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ลิงก์เนื้อหาดิจิทัล (Digital Asset Links) เพื่อเปิดใช้การแชร์ข้อมูลเข้าสู่ระบบระหว่างเว็บไซต์กับแอป Android
ข้อกำหนดเบื้องต้น
- มีความรู้พื้นฐานเกี่ยวกับ JSON และการพัฒนา Android
- คุ้นเคยกับข้อกำหนดเบื้องต้นของ Android Credential Manager
สิ่งที่คุณจะได้เรียนรู้
- วิธีตั้งค่าการแชร์ข้อมูลเข้าสู่ระบบโดยใช้ Google Play Console (แนะนํา)
- วิธีสร้างไฟล์
assetlinks.jsonด้วยตนเอง - วิธีกำหนดค่าแอป Android สำหรับการเชื่อมโยงด้วยตนเอง
- วิธีเปิดใช้พาสคีย์ในแอป Android โดยการเชื่อมโยงกับโดเมนเว็บไซต์
- วิธีใช้เครื่องมือเพื่อสร้างและตรวจสอบการตั้งค่า
สิ่งที่คุณต้องมี
- เว็บไซต์: ความสามารถในการโฮสต์ไฟล์ JSON ที่
https://{your-domain}/.well-known/assetlinks.json - แอป Android:
- สำหรับวิธี Play Console: แอปที่เผยแพร่ใน Google Play
- สำหรับวิธีการด้วยตนเอง: โปรเจ็กต์ Android ที่คุณแก้ไขและสร้างได้ โปรดทราบว่าหากต้องการให้การแชร์ข้อมูลเข้าสู่ระบบกับเครื่องมือจัดการรหัสผ่านบน Google ทำงานได้ คุณต้องเผยแพร่แอปใน Google Play
วิธีการทำงาน
หากต้องการให้การแชร์ข้อมูลเข้าสู่ระบบทำงานได้ คุณต้องสร้างความน่าเชื่อถือแบบ 2 ทาง ดังนี้
- เว็บ -> แอป: เว็บไซต์ของคุณต้องโฮสต์ไฟล์
assetlinks.jsonที่ประกาศว่าเชื่อถือแอป Android ของคุณ - แอป -> เว็บ: ต้องกำหนดค่าแอป Android ให้เชื่อถือเว็บไซต์
เราจะอธิบาย 2 วิธีในการดำเนินการนี้ ได้แก่ วิธีอัตโนมัติโดยใช้ Google Play Console (แนะนำ) และวิธีด้วยตนเองโดยใช้ ลิงก์เนื้อหาดิจิทัล (Digital Asset Links) โดยตรง
2. ตั้งค่าโดยใช้ Google Play Console (แนะนำ)
วิธีที่ง่ายที่สุดในการเปิดใช้การแชร์ข้อมูลเข้าสู่ระบบระหว่างเว็บไซต์กับแอป Android คือการใช้ Google Play Console วิธีนี้ช่วยให้คุณเชื่อมโยงแอปกับเว็บไซต์ได้โดยไม่ต้องแก้ไขไฟล์ Manifest ของแอปหรือเผยแพร่แอปเวอร์ชันใหม่ Google Play จะจัดการการเชื่อมโยงฝั่งแอปให้คุณ
ข้อกำหนดเบื้องต้น
- สิทธิ์ของ Play Console ในการเข้าถึงหน้า Deep Link
- ความสามารถในการเผยแพร่ไฟล์
/.well-known/assetlinks.jsonในโดเมน
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Deep Link ได้ที่ Android App Link
ขั้นตอน
- ใน Play Console ให้ไปที่ขยายการมองเห็น > Deep Link
- หากโดเมนไม่อยู่ในรายการ ให้คลิกเพิ่มโดเมนในส่วนการกำหนดค่าแอป
- ค้นหาโดเมนและมองหาคอลัมน์การแชร์ข้อมูลเข้าสู่ระบบ คลิกเปิด (หรือตรวจสอบว่าได้เปิดเปิดใช้การแชร์ข้อมูลเข้าสู่ระบบสำหรับโดเมนใหม่แล้ว)
- คัดลอกข้อมูลโค้ด JSON ที่ Play Console สร้างขึ้น
- เผยแพร่เนื้อหา JSON นี้ไปยัง
https://{your-domain}/.well-known/assetlinks.json(หากมีไฟล์นี้อยู่แล้ว ให้เพิ่มข้อความใหม่ต่อท้าย) - กลับไปที่ Play Console แล้วคลิกสร้างการเชื่อมโยงเว็บไซต์หรือเปิดการแชร์ข้อมูลเข้าสู่ระบบ
ตอนนี้ Play Console จะยืนยันการตั้งค่าโฮสติ้ง

โฮสต์เว็บไซต์ของคุณต้องมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้จึงจะแชร์ข้อมูลเข้าสู่ระบบได้
- URL เข้าถึงได้ผ่าน HTTPS
- เซิร์ฟเวอร์ตอบกลับด้วย
Content-Type: application/json - URL เข้าถึงได้โดยไม่ต้องเปลี่ยนเส้นทาง
เมื่อยืนยันแล้ว การแชร์ข้อมูลเข้าสู่ระบบจะเปิดใช้งาน การเปลี่ยนแปลงการกำหนดค่าอาจใช้เวลา 1-2 สัปดาห์จึงจะมีผล
3. ตั้งค่าด้วยตนเองโดยใช้ลิงก์เนื้อหาดิจิทัล
ต้องการการควบคุมเพิ่มเติมหรือไม่ หรือไม่มีสิทธิ์เข้าถึง Play Console คุณกำหนดค่าการแชร์ข้อมูลเข้าสู่ระบบระหว่างเว็บไซต์กับแอป Android ได้ด้วยตนเอง ซึ่งมีงานหลัก 2 อย่าง ได้แก่ การฝากไฟล์ JSON ในเว็บไซต์และการอัปเดตไฟล์ Manifest ของแอป Android
1. รับลายนิ้วมือดิจิทัลของแอป
ก่อนตั้งค่าการแชร์ข้อมูลเข้าสู่ระบบอย่างราบรื่น โปรดตรวจสอบว่าคุณมีสิ่งต่อไปนี้สำหรับแต่ละแพลตฟอร์ม
สำหรับแอป Android แต่ละแอป
- รหัสแอปพลิเคชัน Android ตามที่ประกาศไว้ในไฟล์
build.gradleของแอป - ลายนิ้วมือ SHA256 ของใบรับรองการลงนาม
- (แนะนำ) การลงชื่อเข้าใช้ของผู้ใช้ที่ใช้งาน Credential Manager API
2. สร้างไฟล์การเชื่อมโยง
คุณต้องสร้างไฟล์ assetlinks.json ที่ประกาศความสัมพันธ์ระหว่างเว็บไซต์กับแอป ใช้ delegate_permission/common.get_login_creds เพื่อให้สิทธิ์ในการแชร์รหัสผ่าน และ delegate_permission/common.handle_all_urls เพื่อเปิดใช้ Deep Link และแชร์พาสคีย์
สร้างไฟล์ชื่อ assetlinks.json ที่มีเนื้อหาต่อไปนี้ แทนที่ค่าตัวอย่างด้วย URL ของเว็บไซต์ ชื่อแพ็กเกจ และลายนิ้วมือของคุณเอง
[{
"relation": [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target": {
"namespace": "android_app",
"package_name": "com.example.app",
"sha256_cert_fingerprints":
["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
}
}]
3. ฝากไฟล์
อัปโหลดไฟล์ assetlinks.json ไปยังไดเรกทอรี .well-known ที่รูทของโดเมน
สถานที่: https://{your-domain}/.well-known/assetlinks.json
โฮสต์เว็บไซต์ของคุณต้องมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้จึงจะแชร์ข้อมูลเข้าสู่ระบบได้
- URL เข้าถึงได้ผ่าน HTTPS
- เซิร์ฟเวอร์ตอบกลับด้วย
Content-Type: application/json - URL เข้าถึงได้โดยไม่ต้องเปลี่ยนเส้นทาง

4. กำหนดค่าแอป Android
ตอนนี้ให้บอกแอป Android ให้เชื่อถือเว็บไซต์ คุณจะเพิ่มการอ้างอิงในไฟล์ Manifest ที่นำไปยังไฟล์ทรัพยากรซึ่งมี assetlinks.json URL
1. เพิ่มทรัพยากรสตริง
ใน res/values/strings.xml ให้เพิ่มสตริงใหม่ asset_statements โปรดสังเกตเครื่องหมายคำพูดที่กำหนดเป็นอักขระหลีก
<resources>
<string name="asset_statements" translatable="false">
[{
\"include\": \"https://www.example.com/.well-known/assetlinks.json\"
}]
</string>
</resources>
2. เพิ่มข้อมูลเมตาลงในไฟล์ Manifest
ใน AndroidManifest.xml ให้เพิ่มแท็ก <meta-data> ภายในองค์ประกอบ <application> ที่อ้างอิงทรัพยากรสตริงนี้
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<meta-data
android:name="asset_statements"
android:resource="@string/asset_statements" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
หลังจากทำตามขั้นตอนเหล่านี้และเผยแพร่แอป Android เวอร์ชันใหม่แล้ว เครื่องมือจัดการรหัสผ่านที่รองรับลิงก์เนื้อหาดิจิทัล (Digital Asset Links) (เช่น เครื่องมือจัดการรหัสผ่านบน Google) จะแนะนำข้อมูลเข้าสู่ระบบที่บันทึกไว้สำหรับ www.example.com เมื่อผู้ใช้พยายามลงชื่อเข้าใช้ com.example.app และในทางกลับกัน
4. ตรวจสอบการตั้งค่า
ก่อนที่จะจัดส่ง คุณต้องยืนยันการกำหนดค่า Digital Asset Links JSON ไม่ถูกต้องหรือไฟล์ที่เข้าถึงไม่ได้จะล้มเหลวโดยไม่มีข้อความแจ้ง
ใช้เครื่องมือเครื่องมือสร้างและตรวจสอบใบแจ้งยอดอย่างเป็นทางการ

- ป้อนโดเมนของเว็บไซต์และชื่อแพ็กเกจของแอป
- คลิกทดสอบใบแจ้งยอด
- เครื่องมือจะตรวจสอบว่ามีการโฮสต์ไฟล์
assetlinks.jsonอย่างถูกต้องและมีการเชื่อมโยงที่ถูกต้อง
5. การแชร์ข้อมูลเข้าสู่ระบบระหว่างเว็บไซต์หลายแห่ง

หากคุณมีเว็บไซต์หลายแห่งที่ใช้ระบบการเข้าสู่ระบบเดียวกัน (เช่น example.com และ example.co.uk) คุณสามารถประกาศให้เว็บไซต์เหล่านั้นเป็นเว็บไซต์ในเครือเพื่อให้แชร์ข้อมูลเข้าสู่ระบบระหว่างกันได้
แชร์รหัสผ่านระหว่างเว็บไซต์หลายแห่ง
หากต้องการแชร์รหัสผ่านระหว่างเว็บไซต์ คุณสามารถประกาศการเชื่อมโยงแบบweb-ต่อ-webได้โดยใช้ delegate_permission/common.get_login_creds
เช่น หาก example.com ต้องการแชร์รหัสผ่านกับ example.co.uk ไฟล์ assetlinks.json ที่โฮสต์ใน https://example.com/.well-known/assetlinks.json ต้องมีข้อความที่กำหนดเป้าหมายเป็น example.co.uk
[{
"relation": ["delegate_permission/common.get_login_creds"],
"target": {
"namespace": "web",
"site": "https://example.co.uk"
}
}]
ในทำนองเดียวกัน https://example.co.uk/.well-known/assetlinks.json ต้องมีข้อความที่กำหนดเป้าหมาย example.com
แชร์พาสคีย์ระหว่างหลายเว็บไซต์
หากต้องการอนุญาตให้หลายเว็บไซต์แชร์พาสคีย์เดียวกัน เว็บไซต์เหล่านั้นต้องใช้รหัสผู้ให้บริการ (RP ID) เดียวกัน ใน WebAuthn และพาสคีย์ รหัส RP จะระบุขอบเขตของข้อมูลเข้าสู่ระบบตามชื่อโดเมน เมื่อสร้างพาสคีย์ ระบบจะเชื่อมโยงพาสคีย์กับ RP ID ที่เฉพาะเจาะจง และจะใช้ได้เฉพาะในโดเมนที่อยู่ในขอบเขตของรหัสนั้น การกำหนดรหัส RP อย่างถูกต้องจะช่วยให้มั่นใจได้ถึงประสบการณ์การใช้งานพาสคีย์ที่ราบรื่นในโดเมนย่อย ต้นทางข้ามเว็บไซต์ และแอปบนอุปกรณ์เคลื่อนที่ของบุคคลที่หนึ่ง ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่ารหัส RP ได้ที่ทำความเข้าใจรหัส Relying Party (รหัส RP) คำขอต้นทางที่เกี่ยวข้องช่วยให้เว็บไซต์หนึ่งระบุต้นทางอื่นๆ ที่ได้รับอนุญาตให้ใช้รหัส RP ของตนได้ ซึ่งจะช่วยให้ผู้ใช้ใช้พาสคีย์เดียวกันซ้ำในหลายเว็บไซต์ที่คุณดำเนินการได้ โปรดทราบว่าการดำเนินการนี้แตกต่างจากการแชร์พาสคีย์ระหว่างเว็บไซต์กับแอป Android ซึ่งใช้ delegate_permission/common.handle_all_urls ในลิงก์เนื้อหาดิจิทัล
ตัวอย่างเช่น หากต้องการให้ example.com และ example.co.uk แชร์พาสคีย์ คุณสามารถกำหนดให้ example.com เป็นรหัส RP ที่เป็น Canonical ได้ หากต้องการให้ฟีเจอร์นี้ทำงานได้ example.co.uk ต้องใช้ rpId: 'example.com' ในการเรียก WebAuthn API และ example.com ต้องโฮสต์ไฟล์ที่ https://example.com/.well-known/webauthn เพื่อเพิ่ม example.co.uk ลงในรายการที่อนุญาต
{
"origins": [
"https://example.co.uk"
]
}
ซึ่งจะช่วยให้ example.co.uk สร้างและใช้พาสคีย์ที่เชื่อมโยงกับ example.com ได้
6. บทสรุป
ยินดีด้วย คุณตั้งค่าการแชร์ข้อมูลเข้าสู่ระบบอย่างราบรื่นเรียบร้อยแล้ว
ตอนนี้ผู้ใช้สามารถบันทึกรหัสผ่านและพาสคีย์ในเว็บไซต์ของคุณ และใช้เพื่อลงชื่อเข้าใช้แอป Android ได้ด้วยการแตะเพียงครั้งเดียว (และในทางกลับกัน) การเปลี่ยนแปลงง่ายๆ นี้จะช่วยเพิ่มอัตรา Conversion ของการลงชื่อเข้าใช้และความพึงพอใจของผู้ใช้ได้อย่างมาก
ขั้นตอนต่อไปคืออะไร
- ดูเอกสารประกอบอย่างเป็นทางการของ Digital Asset Links
- ดูข้อมูลเพิ่มเติมเกี่ยวกับพื้นฐานของการแชร์ข้อมูลเข้าสู่ระบบ
- อ่านกรณีศึกษาของ eBay เพื่อดูผลลัพธ์