วันที่แก้ไขล่าสุด: 10 ก.ย. 2025
ภาพรวม
เอกสารนี้จะบันทึกขั้นตอนที่จำเป็นทั้งหมดในการเริ่มต้นใช้งานผู้ให้บริการใน การยืนยันหมายเลขโทรศัพท์ Firebase (FPNV) ผ่านการยืนยันหมายเลขโทรศัพท์ TS.43
คำศัพท์
บุคคลที่เกี่ยวข้อง
- CSP: ผู้ให้บริการด้านการสื่อสาร
- เช่น ผู้ให้บริการเครือข่ายมือถือ
- ผู้รวบรวมข้อมูล
- ผู้รวบรวมที่ใช้แอป: ผู้รวบรวมที่อนุญาตให้แอปทำการยืนยันโดยไม่ต้องให้แอปโต้ตอบกับผู้ให้บริการโดยตรง
- เช่น การยืนยันหมายเลขโทรศัพท์ของ Firebase
- ผู้รวบรวมข้อมูลเมตา: ผู้รวบรวมข้อมูลที่สนับสนุนผู้ให้บริการในการเริ่มต้นใช้งาน
ผู้รวบรวมข้อมูลที่แสดงในแอป
- เมตาแอกกริเกเตอร์อาจมีหน้าที่ตั้งค่าเซิร์ฟเวอร์การให้สิทธิ์ สำหรับผู้ให้บริการและ/หรือกำหนดค่ารายละเอียดเซิร์ฟเวอร์การให้สิทธิ์กับ แอกกริเกเตอร์ที่ใช้กับแอป
- FPNV: การยืนยันหมายเลขโทรศัพท์ของ Firebase
- TAM ของ Google: ผู้จัดการลูกค้าด้านเทคนิคของ Google ซึ่งช่วยให้ผู้ให้บริการ เริ่มต้นใช้งาน FPNV
- โทรศัพท์ Android: มี API หมายเลขโทรศัพท์ใน Android ซึ่งรวมถึงแพลตฟอร์มสำหรับผู้ให้บริการและผู้รวบรวมข้อมูลเพื่อให้บริการยืนยัน TS.43
- GSMA: สมาคมผู้ให้บริการเครือข่ายมือถือที่กำหนดข้อกำหนดต่างๆ รวมถึง TS.43
- CAMARA: โปรเจ็กต์โอเพนซอร์สของ Linux ที่กำหนด API ของผู้ให้บริการโดย ร่วมมือกับ GSMA
ข้อกำหนดในการยืนยัน
- PNV: การยืนยันหมายเลขโทรศัพท์
- TS.43: กำหนดโปรโตคอลสำหรับไคลเอ็นต์และเซิร์ฟเวอร์บนอุปกรณ์เคลื่อนที่เพื่อสื่อสารกับผู้ให้บริการโดยใช้ HTTP
- EAP-AKA: วิธีการตรวจสอบสิทธิ์ที่กำหนดไว้ใน https://www.rfc-editor.org/rfc/rfc4187 ซึ่งไม่ ต้องโต้ตอบกับผู้ใช้
- ECS: Entitlement Configuration Server
- จุดแรกเข้าสำหรับผู้รวบรวมข้อมูลในการพูดคุยกับผู้ให้บริการ
- ODSA: การเปิดใช้งานบริการในอุปกรณ์
- หมายถึงการดำเนินการต่างๆ ที่ ECS จัดให้เพื่อเปิดใช้งานบริการใน อุปกรณ์
- เช่น AcquireTemporaryToken, GetPhoneNumber
เซิร์ฟเวอร์การให้สิทธิ์ของผู้ให้บริการและอุปกรณ์ปลายทาง PNV
สร้างปลายทางที่จำเป็น
การดำเนินการ 1: ผู้ให้บริการจะใช้ปลายทางต่อไปนี้ ซึ่งทั้งหมด เข้าถึงได้ผ่านอินเทอร์เน็ต ดูรายละเอียดเพิ่มเติมเกี่ยวกับการ ติดตั้งใช้งานได้ที่ภาคผนวก ก
ข้อกำหนดทางเทคนิค
ประสิทธิภาพทั่วไป: เวลาทำงานของอุปกรณ์ปลายทางทั้งหมดต้องมีอย่างน้อย 99.99%
ความปลอดภัย: ด้วยเหตุผลด้านความปลอดภัย จุดสิ้นสุดของผู้ให้บริการต้องเป็นไปตามข้อกำหนดต่อไปนี้
- โทเค็นการให้สิทธิ์ EAP-AKA: ต้องหมดอายุภายใน 1 ชั่วโมง
- โทเค็นชั่วคราว: ใช้ได้ครั้งเดียวและจะหมดอายุใน 5 นาที
- ตัวเลือกที่ 1 - Vanilla TS.43
- โทเค็น OAuth: ต้องหมดอายุภายใน 1 ชั่วโมง
- ตัวเลือกที่ 2 - CAMARA
- โทเค็นเพื่อการเข้าถึง CAMARA: ใช้ได้ครั้งเดียวและจะหมดอายุใน 5 นาที
คุณภาพของข้อมูล API: เนื้อหาทั้งหมดของการตอบกลับที่สําเร็จ (เช่น MSISDN ควรถูกต้อง)
FPNV รองรับ TS.43 2 รูปแบบ ความแตกต่างหลักคือวิธีที่เซิร์ฟเวอร์ FPNV จะแลกเปลี่ยน TempToken กับผู้ให้บริการ
- TS.43 แบบดั้งเดิม: หมายถึงการติดตั้งใช้งานตามที่ระบุไว้ในข้อกำหนดเฉพาะของ TS.43
- CAMARA: หมายถึงการใช้งานตามที่กำหนดโดยโฟลว์ JWT Bearer ของ CAMARA
ตัวเลือกที่ 1 - การติดตั้งใช้งาน TS.43 แบบดั้งเดิม
คำขอจากอุปกรณ์ Android
- ปลายทาง EAP-AKA: แสดงโทเค็นการให้สิทธิ์
- ปลายทาง AcquireTemporaryToken: เมื่อได้รับโทเค็นการให้สิทธิ์ ให้ส่งคืน TempToken
คำขอจากเซิร์ฟเวอร์ FPNV
- ปลายทาง OAuth 2.0 - ขั้นตอนรหัสไคลเอ็นต์/รหัสลับ OAuth: เมื่อระบุรหัสไคลเอ็นต์/รหัสลับ OAuth ให้แสดงโทเค็นเพื่อการเข้าถึง OAuth
- ปลายทาง GetPhoneNumber: เมื่อได้รับโทเค็นเพื่อการเข้าถึง OAuth และ TempToken ให้แสดงหมายเลขโทรศัพท์ที่เกี่ยวข้อง
ตัวเลือกที่ 2 - การติดตั้งใช้งาน CAMARA
การใช้งาน CAMARA จะคล้ายกับการใช้งาน TS.43 แบบเดิม ยกเว้น สำหรับปลายทางที่ใช้จัดการคำขอจากเซิร์ฟเวอร์ FPNV
คำขอจากอุปกรณ์ Android
- ปลายทาง EAP-AKA: แสดงโทเค็นการให้สิทธิ์
- ปลายทาง AcquireTemporaryToken: เมื่อได้รับโทเค็นการให้สิทธิ์ ให้ส่งคืน TempToken
คำขอจากเซิร์ฟเวอร์ FPNV
- ปลายทาง OAuth 2.0 - ขั้นตอน JWT Bearer: เมื่อได้รับ JWT ที่มี TempToken ให้ส่งคืนโทเค็นเพื่อการเข้าถึง CAMARA
- ปลายทาง NumberVerification v2 ของ CAMARA: เมื่อได้รับโทเค็นเพื่อการเข้าถึงของ CAMARA ให้แสดงหมายเลขโทรศัพท์ที่เกี่ยวข้อง
การเริ่มต้นใช้งานโทรศัพท์ Android และ FPNV
แอปทดสอบของผู้ให้บริการ
การดำเนินการ 2: ผู้ให้บริการติดต่อผู้จัดการลูกค้าด้านเทคนิค (TAM) ของ Google และ TAM จะแชร์แอปทดสอบผู้ให้บริการ FPNV กับผู้ให้บริการ แอปทดสอบผู้ให้บริการ นี้จะจำลองคำขอที่ FPNV จะส่งโดยไม่ต้องใช้เซิร์ฟเวอร์ FPNV แอปทดสอบผู้ให้บริการนี้มีประโยชน์สำหรับผู้ให้บริการในการตรวจสอบว่า ปลายทางทำงานอย่างถูกต้อง
ACTION3: ผู้ให้บริการยืนยันว่าปลายทางข้างต้นทํางานแบบครบวงจรโดย ใช้แอปทดสอบผู้ให้บริการ FPNV
การตั้งค่าการกำหนดค่าที่จำเป็นสำหรับการใช้งานจริง
การกำหนดค่า Android - EAP-AKA / AcquireTempToken
ACTION4: ผู้ให้บริการกำหนดค่าการผลิตสำหรับคำขอ EAP-AKA/AcquireTempToken จาก Android Telephony
- การกำหนดค่า
- รหัสผู้ให้บริการ Canonical ของ Android ของผู้ให้บริการรายนี้
- ค่า TS.43 use_cases:
use_case=GetPhoneNumber - URL ของเซิร์ฟเวอร์การให้สิทธิ์เวอร์ชันที่ใช้งานจริงสำหรับ EAP-AKA/AcquireTempToken
- SAN และลายนิ้วมือของใบรับรอง x509 เวอร์ชันที่ใช้งานจริงของ Firebase
- SAN:
fpnv.googleapis.com - ลายนิ้วมือ:
aad068c93399a22fc2b11ab58468e8cb72b8f9fc53700991799a8b764c589c7e
การกำหนดค่า Firebase - แลกเปลี่ยน TempToken สำหรับโทรศัพท์
ACTION5: ข้อมูลเข้าสู่ระบบ Firebase เพื่อดึงโทเค็น OAuth จากผู้ให้บริการ
- Vanilla TS.43
- ผู้ให้บริการสร้างรหัสไคลเอ็นต์และรหัสลับ OAuth สำหรับคำขอของ FPNV ผู้ให้บริการ จะกำหนดค่าปลายทาง OAuth เพื่อแสดงโทเค็นเพื่อการเข้าถึงสำหรับข้อมูลเข้าสู่ระบบเหล่านี้
- CAMARA
- TAM ของ Google จะให้คีย์สาธารณะของ Google เพื่อให้ปลายทาง OAuth ของผู้ให้บริการ ยืนยันได้ว่า Google เป็นผู้ลงนามใน JWT
ACTION6: ผู้ให้บริการกำหนดค่าการใช้งานจริงสำหรับเซิร์ฟเวอร์ FPNV เพื่อแลกเปลี่ยน TempToken สำหรับโทรศัพท์
- รหัสผู้ให้บริการแบบมาตรฐานของ Android ของ MNO นี้
- Vanilla TS.43
- OAuth - ขั้นตอนรหัสไคลเอ็นต์/ข้อมูลลับ
- URL ปลายทางของ OAuth
- รหัสไคลเอ็นต์/รหัสลับไคลเอ็นต์ OAuth
- ขอบเขต OAuth (หากมี)
- GetPhoneNumber
- URL ของปลายทาง GetPhoneNumber
- CAMARA
- OAuth - ขั้นตอนการส่งโทเค็น JWT
- URL ปลายทางของ OAuth
- NumberVerification API v2
- URL ของปลายทาง NumberVerification
การแชร์ข้อมูลเข้าสู่ระบบ/การกำหนดค่า
การยืนยันหมายเลขโทรศัพท์ Firebase
การดำเนินการ 7: ผู้ให้บริการแชร์การกำหนดค่าการใช้งานจริงจากการดำเนินการ 4 และการดำเนินการ 6 กับผู้จัดการฝ่ายเทคนิคของ Google
- [สำคัญ] ต้องแชร์ข้อมูลลับของ OAuth โดยใช้กลไกนอกแบนด์ (ไม่มี อีเมล ไม่มีเอกสาร ฯลฯ) ที่ปลอดภัยกับ Google ผู้ให้บริการและ TAM ของ Google จะตกลงกลไกนอกแบนด์นี้
การดำเนินการ 8: TAM ของ Google จะตรวจสอบว่าการกำหนดค่าใช้งานได้แบบครบวงจรโดยใช้ แอปทดสอบของผู้ให้บริการ จากนั้น TAM ของ Google จะจัดเก็บข้อมูลเข้าสู่ระบบ OAuth ใน ที่เก็บข้อมูลที่ปลอดภัยของ Google และอัปเดตการกำหนดค่าของ FPNV เพื่อแลกเปลี่ยน TempToken สำหรับโทรศัพท์ (เช่น การกำหนดค่าของการดำเนินการ 6)
โทรศัพท์ Android
ACTION9: ผู้ให้บริการทำตามเอกสาร "การเริ่มต้นใช้งาน CSP ของ Google Open Gateway" (ซึ่ง TAM ของ Google จะแชร์กับผู้ให้บริการ) ผู้ให้บริการหรือ TAM ของ Google จะยื่นคำขอใน Buganizer เพื่อเริ่มต้นใช้งานการกำหนดค่าของ Android Telephony ที่ https://issuetracker.google.com/issues/new?component=1861595&template=2168610 ข้อบกพร่องนี้จะใช้การกำหนดค่าเวอร์ชันที่ใช้งานจริงจาก ACTION4
หากเมตาแอกกริเกเตอร์ตั้งค่าการผสานรวม FPNV ในนามของผู้ให้บริการ ผู้ให้บริการจะต้องออกหนังสือแสดงความยินยอม (อีเมล, PDF, จดหมาย ฯลฯ) จาก ผู้นำของผู้ให้บริการ (ระดับผู้อำนวยการขึ้นไป) เพื่อยืนยันความสัมพันธ์ทางธุรกิจกับผู้ให้บริการดังกล่าว หลังจากนั้น เมตาแอกกริเกเตอร์จะระบุการกำหนดค่าของผู้ให้บริการ ในนามของผู้ให้บริการไปยัง Android Telephony ได้
ภาคผนวก ก. การติดตั้งใช้งานโดยละเอียด
คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
- ส่วนหัว HTTP ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
- อย่างไรก็ตาม รูปแบบ XML และ JSON จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ดังนั้นสำหรับฟิลด์คำขอ/คำตอบ โปรดตรวจสอบว่าฟิลด์ตรงกับเอกสารนี้ทุกประการ
ขั้นตอนที่ 1 - EAP-AKA / AcquireTempToken
ปลายทาง: EAP-AKA และ AcquireTempToken ต้องใช้ปลายทาง ECS เดียวกัน
EAP-AKA Challenge
ข้อมูลอ้างอิง: TS.43 v12.0 - Section 2.8.1 - "Embedded EAP-AKA Authentication by Entitlement Configuration Server"
EAP-AKA ขั้นตอนที่ 1 - คำท้าในการตรวจสอบสิทธิ์
EAP-AKA #1 - คำขอ GET ไปยัง ECS
โมดูลโทรศัพท์ Android จะส่งคำขอ TS.43 EAP-AKA ไปยังเซิร์ฟเวอร์การให้สิทธิ์ของ ผู้ให้บริการ
ส่วนหัวของคำขอของ Android
Accept:application/vnd.gsma.eap-relay.v1.0+json- ซึ่งเป็นรูปแบบ JSON ที่เฉพาะเจาะจงสำหรับ GSMA ไม่ใช่แค่
application/json
- ซึ่งเป็นรูปแบบ JSON ที่เฉพาะเจาะจงสำหรับ GSMA ไม่ใช่แค่
ฟิลด์คำขอของ Android
eap_id: ดูภาคผนวก ค. ของ RCC.14- กล่าวคือ
0<IMSI>@<realm>.mnc<MNC>.mcc<MCC>.3gppnetwork.org
- กล่าวคือ
GID1: ระบุเฉพาะในกรณีที่เวอร์ชันการให้สิทธิ์เป็น 12.0app_name: AppName ที่เข้ารหัสจะมีค่าแฮช MD5 ของ Use Case ที่ทำการยืนยันหมายเลขโทรศัพท์ ดังนี้- คำขอของตัวรวบรวมทั้งหมดที่ส่งไปยังแอปจะมีชื่อแอปเป็น
Google-OGI
- คำขอของตัวรวบรวมทั้งหมดที่ส่งไปยังแอปจะมีชื่อแอปเป็น
app: รหัสแอปap2014แสดงข้อมูลหมายเลขโทรศัพท์terminal_vendor/model/sw_version: ตั้งค่าเป็นค่าใดก็ได้ Android ไม่รับประกันว่าฟิลด์เหล่านี้จะมีข้อมูลจริงของอุปกรณ์vers: เวอร์ชันการกำหนดค่า เช่น 0 หรือ 1entitlement_version: Google จะกำหนดค่าเวอร์ชันการให้สิทธิ์ที่ส่ง ไปยังผู้ให้บริการตามสิ่งที่ผู้ให้บริการร้องขอ- โดยปกติ
entitlement_versionจะเป็น 10.0 หรือ 12.0
- โดยปกติ
EAP-AKA #1 - Response from ECS
ส่วนหัวการตอบกลับของ ECS
Content-Type: Android คาดหวังว่าประเภทการตอบกลับจะตรงกับ ส่วนหัว Accept ของคำขอ- กล่าวคือ
application/vnd.gsma.eap-relay.v1.0+json
- กล่าวคือ
ฟิลด์การตอบกลับของ ECS
eap-relay-packet: มีแพ็กเกจ EAP ตาม RCC.14 - Section C.2
EAP-AKA ขั้นตอนที่ 2 - รับโทเค็นการตรวจสอบสิทธิ์
EAP-AKA #2 - คำขอ POST ไปยัง ECS
จากนั้นโมดูลโทรศัพท์ Android จะส่ง eap-relay-packet
ที่ได้รับกลับไปยังปลายทางเดียวกัน
ส่วนหัวของคำขอของ Android
Accept: Android จะตั้งค่าส่วนหัว Accept 2 รายการ ดังนี้application/vnd.gsma.eap-relay.v1.0+json: หมายถึงผู้ให้บริการเครือข่าย ส่ง JSON อีกครั้งหากอุปกรณ์ต้องส่งคำขอ EAP-AKA อีกครั้งtext/vnd.wap.connectivity-xml: หมายถึงรูปแบบจริงที่ Android คาดหวังว่าผู้ให้บริการจะส่งคืนโทเค็นการตรวจสอบสิทธิ์ EAP-AKA
Content-Type:application/vnd.gsma.eap-relay.v1.0+json
ฟิลด์คำขอของ Android
eap-relay-packet: มี eap-relay-packet ของการตอบกลับ EAP-AKA ก่อนหน้า แต่ในรูปแบบ EAP-Response/AKA-Challenge ตาม RFC 4817 - ส่วนที่ 9.2
EAP-AKA #2 - Response from ECS
หลังจากตรวจสอบสิทธิ์ EAP-AKA สำเร็จแล้ว ผู้ให้บริการจะส่งโทเค็นการให้สิทธิ์ กลับมา
ส่วนหัวการตอบกลับของ ECS
Content-Type: Android คาดหวังว่าการตอบกลับที่ตรงกับ ส่วนหัว Accept ของคำขอ- กล่าวคือ Android คาดหวังว่าการตอบกลับที่มีโทเค็นการให้สิทธิ์จะมีประเภทเป็น
text/vnd.wap.connectivity-xml - ส่วนหัว Accept อื่น
application/vnd.gsma.eap-relay.v1.0+jsonจะใช้ในกรณีที่ ผู้ให้บริการต้องการให้ Android ส่งคำขอ EAP-AKA อื่น
- กล่าวคือ Android คาดหวังว่าการตอบกลับที่มีโทเค็นการให้สิทธิ์จะมีประเภทเป็น
ฟิลด์การตอบกลับของ ECS
TOKEN.token: มีโทเค็นการตรวจสอบสิทธิ์TOKEN.validity: จำนวนวินาทีที่การตอบกลับใช้ได้หลังจากที่ อุปกรณ์ได้รับการตอบกลับ- Google จะตรวจสอบว่าโทเค็นการให้สิทธิ์เป็นไปตามข้อกำหนดทางเทคนิค
AcquireTemporary Token
AcquireTempToken - คำขอ GET ไปยัง ECS
ไคลเอ็นต์ Android จะใช้โทเค็นการให้สิทธิ์ที่ได้รับจาก EAP-AKA เพื่อดึงโทเค็นชั่วคราวโดยการเรียกใช้ปลายทาง AcquireTemporaryToken ของผู้ให้บริการ คำขอ
- ตัวอย่าง: TS.43 v12.0 - Section 6.4.6 - "AcquireTemporaryToken Request Example"
- AcquireTempToken มีพารามิเตอร์คล้ายกับ EAP-AKA #1 ยกเว้น
- AcquireTempToken ยังระบุ
IMSI, operationและoperation_targets - AcquireTempToken ไม่ได้ระบุ
EAP_ID
- AcquireTempToken ยังระบุ
ส่วนหัวของคำขอของ Android
Accept: Android จะตั้งค่าtext/vnd.wap.connectivity-xml
ฟิลด์คำขอของ Android
terminal_vendor/model/sw_version: Android ไม่รับประกันว่าฟิลด์เหล่านี้จะมีข้อมูลจริงของอุปกรณ์operation_targets- FPNV: เป้าหมายการดำเนินการคือ
GetPhoneNumber
- FPNV: เป้าหมายการดำเนินการคือ
AcquireTempToken - การตอบกลับจาก ECS
ตัวอย่าง: TS.43 v12.0 - Section 6.6.6 - "AcquireTemporaryToken Response Example"
ส่วนหัวการตอบกลับของ ECS
Content-Type: Android คาดหวังว่าประเภทการตอบกลับจะตรงกับ ส่วนหัว Accept ของคำขอ- กล่าวคือ
text/vnd.wap.connectivity-xml
- กล่าวคือ
ฟิลด์การตอบกลับของ ECS
APPLICATION.TemporaryToken: TemporaryToken ที่เซิร์ฟเวอร์ FPNV สามารถ แลกเปลี่ยนเป็นหมายเลขโทรศัพท์ได้APPLICATION.TemporaryTokenExpiry: เวลาหมดอายุในรูปแบบ YYYY-MM-DDThh:mm:ssTZD- Google จะตรวจสอบว่าการหมดอายุของ TempToken เป็นไปตามข้อกำหนด ทางเทคนิค
APPLICATION.OperationResult: ดูTS.43 v12.0 - Section 6.5.1- กล่าวคือ หากการดำเนินการเป็น
SUCCESSให้แสดงผลเป็น 1
- กล่าวคือ หากการดำเนินการเป็น
ขั้นตอนที่ 2 - แลกเปลี่ยน TempToken เป็นหมายเลขโทรศัพท์
ตัวเลือกที่ 1 - Vanilla TS.43
ปลายทาง: ปลายทาง OAuth และ GetPhoneNumber อาจเป็นเซิร์ฟเวอร์/ปลายทางที่แตกต่างกัน นอกจากนี้ Endpoint เหล่านี้ยังอาจแตกต่างจาก Endpoint EAP-AKA/AcquireTempToken ด้วย
OAuth
ผู้ให้บริการควรทำตามคู่มือ OAuth นี้และให้ข้อมูล OAuth ที่จำเป็น (รหัสไคลเอ็นต์ รหัสลับไคลเอ็นต์ URL ของเซิร์ฟเวอร์ OAuth) แก่ Google
OAuth - คำขอ POST ไปยังเซิร์ฟเวอร์การตรวจสอบสิทธิ์ของผู้ให้บริการ
ส่วนหัวของคำขอ FPNV
Authorization: FPNV จะตั้งค่าBasic $BASE64_ENCODED_CREDENTIALS- ข้อมูลเข้าสู่ระบบที่เข้ารหัส Base64 คือการเข้ารหัส Base64 ของ OAuth
$CLIENT_ID:$CLIENT_SECRET
- ข้อมูลเข้าสู่ระบบที่เข้ารหัส Base64 คือการเข้ารหัส Base64 ของ OAuth
Content-Type: FPNV จะตั้งค่าapplication/x-www-form-urlencodedAccept: FPNV จะตั้งค่าapplication/json
ฟิลด์คำขอ FPNV
grant_type:client_credentials
POST HTTP/1.1
Host: $OAUTH_ENDPOINT
Authorization: Basic $BASE64_ENCODED_CREDENTIALS
Content-Type: application/x-www-form-urlencoded
Accept: application/json
grant_type=client_credentials
OAuth - การตอบกลับจากเซิร์ฟเวอร์การตรวจสอบสิทธิ์ของผู้ให้บริการ
ส่วนหัวการตอบกลับของผู้ให้บริการ
Content-Type: FPNV คาดหวังว่าประเภทการตอบกลับจะตรงกับส่วนหัว Accept ของคำขอ- กล่าวคือ
application/json
- กล่าวคือ
ฟิลด์การตอบกลับของผู้ให้บริการ
access_token: โทเค็นเพื่อการเข้าถึง OAuthtoken_type:bearerexpires_in: การหมดอายุของโทเค็นเพื่อการเข้าถึง OAuth เป็นวินาที- Google จะตรวจสอบว่าเวลาหมดอายุของโทเค็น OAuth เป็นไปตามข้อกำหนดทางเทคนิค
200 OK
Content-Type: application/json
{
"access_token": $ACCESS_TOKEN,
"token_type": "bearer",
"expires_in": $EXPIRATION_IN_SECS,
}
GetPhoneNumber
GetPhoneNumber - คำขอ POST ไปยัง ECS
เซิร์ฟเวอร์การยืนยันของ Google จะดึงหมายเลขโทรศัพท์โดยใช้การดำเนินการ GetPhoneNumber
- ตัวอย่าง: TS.43 v12.0 - Section 6.4.7 - "GetPhoneNumber Request Example"
ส่วนหัวของคำขอของ FPNV
Accept:application/jsonContent-Type:application/json
ฟิลด์คำขอของ FPNV
requestor_id: ระบุบริการที่เรียกใช้การดำเนินการ GetPhoneNumber TS.43- UUID การยืนยันหมายเลขโทรศัพท์ของ Firebase:
191fd7cc-f7cd-4bb4-a5d2-455ae1fb9a19
- UUID การยืนยันหมายเลขโทรศัพท์ของ Firebase:
temporary_token: TemporaryToken จาก AcquireTempTokenaccess_token: โทเค็น OAuth สำหรับ Google ในการตรวจสอบสิทธิ์กับผู้ให้บริการterminal_vendor/model/sw_version: FPNV จะป้อนค่าที่กำหนดเองในช่องเหล่านี้entitlement_version: Google จะกำหนดค่าเวอร์ชันการให้สิทธิ์ที่ส่ง ไปยังผู้ให้บริการตามสิ่งที่ผู้ให้บริการร้องขอ- โดยปกติ
entitlement_versionจะเป็น 10.0 หรือ 12.0
- โดยปกติ
app: FPNV จะตั้งค่าap2014app_name: FPNV จะตั้งค่าfirebaseสำหรับคำขอ FPNV ทั้งหมด- หมายเหตุ: AcquireTempToken จะมี
app_nameเป็นGoogle-OGIไม่ว่าจะใช้ผู้รวบรวมข้อมูลใดก็ตาม
- หมายเหตุ: AcquireTempToken จะมี
operation: FPNV จะตั้งค่าGetPhoneNumber
GetPhoneNumber - การตอบกลับจาก ECS
ตัวอย่าง: TS.43 v12.0 - Section 6.6.7 - "GetPhoneNumber Response Example"
ส่วนหัวการตอบกลับของผู้ให้บริการ
Content-Type: FPNV คาดหวังว่าประเภทการตอบกลับจะตรงกับส่วนหัว Accept ของคำขอ- กล่าวคือ
application/json
- กล่าวคือ
ฟิลด์การตอบกลับของผู้ให้บริการ
ap2014.MSISDN: FPNV คาดหวังให้ส่งคืนหมายเลขโทรศัพท์ในรูปแบบ E164 format- JSON จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ดังนั้น MSISDN ต้องเป็นตัวพิมพ์ใหญ่
รหัสข้อผิดพลาดของโทเค็นชั่วคราว
ข้อมูลอ้างอิงจาก TS.43 เวอร์ชัน 12.0 ส่วนที่ 2.8.6
ตารางต่อไปนี้แสดงรายละเอียดการตอบกลับที่ล้มเหลวซึ่ง ECS คาดว่าจะส่งคืนไปยังเซิร์ฟเวอร์การยืนยันของ Google สำหรับคำขอ GetPhoneNumber
สถานการณ์ |
รหัสการตอบกลับ GET/POST จาก ECS |
การดำเนินการของเซิร์ฟเวอร์บุคคลที่สาม |
พารามิเตอร์ไม่ถูกต้องหรือขาดหายไป หรือรูปแบบในคำขอไม่ถูกต้อง |
400 คำขอไม่ถูกต้อง |
ลองอีกครั้งเมื่อผู้ใช้เรียกใช้ครั้งถัดไป / หลังจากรีสตาร์ทไคลเอ็นต์ |
โทเค็นชั่วคราวในคำขอไม่ถูกต้องหรือหมดอายุ |
401 ไม่ได้รับอนุญาต |
หากเป็นไปได้ ให้ทริกเกอร์อุปกรณ์เพื่อรับโทเค็นชั่วคราวที่ถูกต้อง (ใหม่) จาก ECS |
การดำเนินการไม่ถูกต้องเมื่อใช้ร่วมกับโทเค็นชั่วคราว |
403 ต้องห้าม |
ลองอีกครั้งเมื่อผู้ใช้เรียกใช้ครั้งถัดไป / หลังจากรีสตาร์ทไคลเอ็นต์ |
ไม่พบทรัพยากรที่ขอ |
404 ไม่พบ |
ลองอีกครั้งเมื่อผู้ใช้เรียกใช้ครั้งถัดไป / หลังจากรีสตาร์ทไคลเอ็นต์ |
ECS พบข้อผิดพลาดภายในระหว่างการประมวลผลคำขอ |
500 ข้อผิดพลาดภายในเซิร์ฟเวอร์ |
ลองอีกครั้งเมื่อผู้ใช้เรียกใช้ครั้งถัดไป / หลังจากรีสตาร์ทไคลเอ็นต์ |
ตัวเลือกที่ 2 - CAMARA
ปลายทาง: การดึงโทเค็นเพื่อการเข้าถึง CAMARA และการดึงหมายเลขโทรศัพท์อาจใช้เซิร์ฟเวอร์/ปลายทางที่แตกต่างกัน นอกจากนี้ ปลายทางเหล่านี้ยังอาจแตกต่างจากปลายทาง EAP-AKA / AcquireTempToken ด้วย
OAuth - ดึงโทเค็นเพื่อการเข้าถึง CAMARA
Google จะรองรับเฉพาะโฟลว์ผู้ถือ JWT ของ CAMARA และไม่รองรับโฟลว์ CIBA
โทเค็นเพื่อการเข้าถึง CAMARA - คำขอ POST ไปยังผู้ให้บริการ
Google จะสร้าง JWT ที่มีฟิลด์ต่อไปนี้
iss: ผู้ออก JWT (หรือที่เรียกว่ารหัสไคลเอ็นต์)- เช่น
firebase(การผสานรวม FPNV จริง) หรือfpnv-carrier-tester-app(แอปทดสอบของผู้ให้บริการ)
- เช่น
sub: เรื่องของ JWT- กล่าวคือ
operatortoken:$TEMP_TOKEN
- กล่าวคือ
aud: กลุ่มเป้าหมาย ผู้รับที่ JWT มีไว้สำหรับ- URL ปลายทางของโทเค็น (เช่น URL ของเซิร์ฟเวอร์การให้สิทธิ์)
exp: เวลาหมดอายุเป็นวินาที- Google จะส่งระยะเวลาการหมดอายุที่ตรงกับระยะเวลาที่ควรใช้ได้ของโทเค็นเพื่อการเข้าถึง CAMARA (ดูข้อกำหนดทางเทคนิค)
iat: ออก ณ เวลาเป็นวินาทีjti: ตัวระบุที่ไม่ซ้ำเพื่อหลีกเลี่ยงการโจมตีแบบเล่นซ้ำ- เช่น UUID ที่สร้างขึ้นแบบสุ่ม
scope: วัตถุประสงค์ของคำขอ- กล่าวคือ
dpv:FraudPreventionAndDetection number-verification:device-phone-number:read
- กล่าวคือ
{
"iss": "firebase",
"sub": "operatortoken:ey...",
"aud": $OAUTH_ENDPOINT,
"exp": $EXPIRATION_TIME_IN_SECS,
"iat": $ISSUED_AT_TIME_IN_SECS,
"jti": $RANDOMLY_GENERATED_UUID,
"scope": "dpv:FraudPreventionAndDetection number-verification:device-phone-number:read"
}
FPNV จะลงชื่อ JWT โดยใช้คีย์ส่วนตัวของตนเอง และผู้ให้บริการสามารถตรวจสอบ JWT โดยใช้คีย์สาธารณะที่เกี่ยวข้องได้ FPNV จะระบุคีย์สาธารณะ โดยใช้ปลายทาง JWKS ผู้ให้บริการควรสำรวจข้อมูลปลายทาง JWKS นี้เป็นประจำเพื่อหาคีย์สาธารณะ (เช่น วันละครั้ง) เนื่องจาก FPNV จะหมุนเวียนคีย์สาธารณะตามช่วงเวลาปกติ (เช่น ทุกๆ 30 วัน)
ส่วนหัวของคำขอของ FPNV
Content-Type:application/x-www-form-urlencodedAccept:application/json
ฟิลด์คำขอของ FPNV
grant_type:urn:ietf:params:oauth:grant-type:jwt-bearerassertion: JWT ที่สร้างขึ้นด้านบนและลงนามด้วยคีย์ส่วนตัวของ FPNV- โปรดทราบว่า JWT นี้มี TempToken
POST /token.oauth2 HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
Accept: application/json
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&assertion=$JWT
โทเค็นเพื่อการเข้าถึง CAMARA - การตอบกลับจากผู้ให้บริการ
ส่วนหัวการตอบกลับของผู้ให้บริการ
Content-Type: FPNV คาดหวังว่าประเภทการตอบกลับจะตรงกับส่วนหัว Accept ของคำขอ- กล่าวคือ
application/json
- กล่าวคือ
ฟิลด์การตอบกลับของผู้ให้บริการ
access_token: โทเค็นเพื่อการเข้าถึง CAMARA ซึ่งสามารถแลกเป็น หมายเลขโทรศัพท์ได้ในภายหลังtoken_type:bearerexpires_in: การหมดอายุของโทเค็นเพื่อการเข้าถึง OAuth เป็นวินาที- Google จะตรวจสอบว่าเวลาหมดอายุของโทเค็น OAuth เป็นไปตามข้อกำหนดทางเทคนิค
scope: วัตถุประสงค์ของคำขอ- กล่าวคือ
dpv:FraudPreventionAndDetection number-verification:device-phone-number:read
- กล่าวคือ
200 OK
Content-Type: application/json
{
"access_token": $CAMARA_ACCESS_TOKEN,
"token_type": "bearer",
"expires_in": $EXPIRATION_IN_SECS,
"scope": "dpv:FraudPreventionAndDetection number-verification:device-phone-number:read"
}
CAMARA NumberVerification API v2
จากนั้น Google จะแลกเปลี่ยนโทเค็นเพื่อการเข้าถึง CAMARA โดยส่งคำขอ GET ไปยังปลายทาง /device-phone-number ของผู้ให้บริการ
CAMARA NumberVerification - คำขอ GET ไปยังผู้ให้บริการ
ส่วนหัวของคำขอของ FPNV
Authorization:Bearer $CAMARA_ACCESS_TOKENAccept:application/json
GET /device-phone-number
Authorization: Bearer $CAMARA_ACCESS_TOKEN
Accept: application/json
Content-Type: application/json
CAMARA NumberVerification - Response from Carrier
ส่วนหัวการตอบกลับของผู้ให้บริการ
Content-Type: FPNV คาดหวังว่าประเภทการตอบกลับจะตรงกับส่วนหัว Accept ของคำขอ- กล่าวคือ
application/json
- กล่าวคือ
ฟิลด์การตอบกลับของผู้ให้บริการ
devicePhoneNumber: แสดงผลหมายเลขโทรศัพท์ในรูปแบบ E164
200 OK
Content-Type: application/json
{
"devicePhoneNumber": $PHONE_NUMBER
}