FPNV Teknik Operatör İlk Katılım Kılavuzu

Son Değiştirilme Tarihi: 10 Eylül 2025

Genel Bakış

Bu belgede, TS.43 telefon numarası doğrulamaları aracılığıyla bir operatörün Firebase Telefon Numarası Doğrulama'ya (FPNV) dahil edilmesi için gereken tüm zorunlu adımlar açıklanmaktadır.

Terminoloji

İlgili Taraflar (Parties Involved)

  • CSP: İletişim Hizmeti Sağlayıcı
    • ör. Mobil operatörler
  • Toplayıcılar
    • Uygulamaya Yönelik Toplayıcılar: Uygulamaların doğrudan operatörle etkileşime girmeden doğrulama yapmasına olanak tanıyan toplayıcı
    • ör. Firebase Telefon Numarası Doğrulama
    • Meta Toplayıcı: Operatörün uygulamaya yönelik bir toplayıcıya dahil olmasını destekleyen toplayıcıdır.
      • Bir meta toplayıcı, operatörler için hak sunucularını ayarlamaktan ve/veya hak sunucularının ayrıntılarını uygulamaya yönelik toplayıcılarla yapılandırmaktan sorumlu olabilir.
  • FPNV: Firebase Telefon Numarası Doğrulaması
  • Google THY: Operatörün FPNV'ye dahil olmasına yardımcı olan Google Teknik Hesap Yöneticisi
  • Android Telephony: Operatörlerin ve toplayıcıların TS.43 doğrulamaları sağlaması için bir platform da dahil olmak üzere Android'de telefon numarası API'leri sunar.
  • GSMA: TS.43 dahil olmak üzere özellikleri tanımlayan mobil ağ operatörleri birliği
  • CAMARA: GSMA ile işbirliği içinde operatör API'lerini tanımlayan Linux açık kaynak projesi

Doğrulama Şartları

  • PNV: Telefon Numarası Doğrulama
  • TS.43: Mobil istemcilerin ve sunucuların HTTP kullanarak operatörle iletişim kurması için protokolü tanımlar.
  • EAP-AKA: https://www.rfc-editor.org/rfc/rfc4187 adresinde tanımlanan ve kullanıcıyla etkileşim gerektirmeyen kimlik doğrulama yöntemi
  • ECS: Yetkilendirme Yapılandırma Sunucusu
    • Toplayıcının kargo şirketiyle iletişim kurduğu giriş noktası
  • ODSA: Cihaz Üzerinde Hizmet Etkinleştirme
    • ECS'nin cihazda hizmetleri etkinleştirmek için sağladığı farklı işlemleri ifade eder.
    • ör. AcquireTemporaryToken; GetPhoneNumber

Operatör Yetkilendirme Sunucusu ve PNV Uç Noktası

Gerekli uç noktaları oluşturma

İŞLEM1: Operatör, internet üzerinden erişilebilen aşağıdaki uç noktaları uygular. Uygulama hakkında daha ayrıntılı bilgi için Ek A'ya bakın.

Teknik Gereksinimler

Genel Performans: Tüm uç noktaların çalışma süresi en az %99,99 olmalıdır.

Güvenlik: Güvenlik nedeniyle, operatör uç noktaları aşağıdaki koşulları karşılamalıdır:

  • EAP-AKA Auth Token: 1 saat içinde sona ermelidir.
  • Geçici Jeton: Tek kullanımlık ve 5 dakika geçerlidir.
  • 1. seçenek: Vanilla TS.43
    • OAuth Jetonu: 1 saat içinde geçerliliğini yitirmelidir.
  • 2. seçenek: CAMARA
    • CAMARA erişim jetonu: 5 dakika geçerli tek kullanımlık jeton

API Veri Kalitesi: Başarılı yanıtların içeriklerinin% 100'ü (ör.MSISDN doğru olmalıdır).

FPNV, TS.43'ün iki türünü destekler. Aradaki temel fark, FPNV sunucusunun TempToken'ı operatörle nasıl değiştireceğidir.

  • Vanilla TS.43: TS.43 spesifikasyonunda belirtilen uygulama şeklini ifade eder.
  • CAMARA: CAMARA'nın JWT taşıyıcı akışı tarafından öngörülen uygulama anlamına gelir.

1. seçenek: Vanilla TS.43 uygulaması

Android cihazdan gelen istekler

  1. EAP-AKA uç noktası: Kimlik doğrulama jetonu döndürme
  2. AcquireTemporaryToken uç noktası: Kimlik doğrulama jetonu verildiğinde TempToken döndürür.

FPNV sunucusundan gelen istekler

  1. OAuth 2.0 Uç Noktası - OAuth İstemci Kimliği/Gizli Anahtar Akışı: OAuth istemci kimliği/gizli anahtarı verildiğinde OAuth erişim jetonunu döndürür.
  2. GetPhoneNumber uç noktası: OAuth erişim jetonu ve TempToken verildiğinde, karşılık gelen telefon numarasını döndürür.

2. seçenek: CAMARA uygulaması

CAMARA uygulaması, FPNV sunucusundan gelen istekleri işleyecek uç noktalar dışında, standart TS.43 uygulamasına benzer.

Android cihazdan gelen istekler

  1. EAP-AKA uç noktası: Kimlik doğrulama jetonu döndürme
  2. AcquireTemporaryToken Endpoint: Kimlik doğrulama jetonu verildiğinde TempToken döndürür.

FPNV sunucusundan gelen istekler

  1. OAuth 2.0 Uç Noktası - JWT Taşıyıcı Akışı: TempToken'ı içeren bir JWT verildiğinde CAMARA erişim jetonunu döndürür.
  2. CAMARA NumberVerification v2 Uç Noktası: CAMARA erişim jetonu verildiğinde, ilgili telefon numarasını döndürür.

Android Telefon ve FPNV'ye Geçiş

Operatör Test Uygulaması

2. İŞLEM: Operatör, Google Teknik Hesap Yöneticisi (THY) ile iletişime geçer ve THY, FPNV operatör test uygulamasını operatörle paylaşır. Bu operatör test uygulaması, FPNV sunucusu kullanılmadan FPNV tarafından gönderilecek istekleri taklit eder. Bu operatör test uygulaması, operatörün uç noktalarının düzgün çalıştığını doğrulaması için kullanışlıdır.

İŞLEM3: Operatör, FPNV operatör test uygulamasını kullanarak yukarıdaki uç noktaların uçtan uca çalıştığını doğrular.

Gerekli Üretim Yapılandırmalarını Ayarlama

Android Yapılandırması - EAP-AKA / AcquireTempToken

ACTION4: Operatör, Android Telefonu'ndan gelen EAP-AKA/AcquireTempToken istekleri için üretim yapılandırmasını tanımlar.

  • Yapılandırma:
    • Bu operatörün Android Canonical Carrier ID'si
    • TS.43 use_cases değerleri: use_case=GetPhoneNumber
    • EAP-AKA/AcquireTempToken için üretim yetkilendirme sunucusu URL'si
    • Firebase'in üretim x509 sertifikasının SAN'ı ve dijital parmak izi
    • SAN: fpnv.googleapis.com
    • Parmak izi: aad068c93399a22fc2b11ab58468e8cb72b8f9fc53700991799a8b764c589c7e

Firebase Config - Exchange TempToken for Phone

ACTION5: Bir OAuth jetonunu operatörden almak için Firebase kimlik bilgileri

  • Vanilla TS.43
    • Operatör, FPNV'nin istekleri için OAuth istemci kimliğini ve gizli anahtarını oluşturur. Operatör, OAuth uç noktasını bu kimlik bilgileri için erişim jetonu döndürecek şekilde yapılandırır.
  • CAMARA
    • Google TAM, Google'ın ortak anahtarını sağlar. Böylece operatörün OAuth uç noktası, JWT'nin Google tarafından imzalandığını doğrulayabilir.

ACTION6: Operatör, FPNV sunucusunun TempToken'ı telefonla değiştirmesi için bir üretim yapılandırması tanımlar.

  • Bu mobil şebeke operatörünün Android Standart Operatör Kimliği
  • Vanilla TS.43
    • OAuth - İstemci Kimliği/Gizli Anahtar Akışı
    • OAuth uç nokta URL'si
    • OAuth istemci kimliği/sırrı
    • OAuth kapsamı (varsa)
    • GetPhoneNumber
    • GetPhoneNumber uç nokta URL'si
  • CAMARA
    • OAuth - JWT Taşıyıcı Akışı
    • OAuth uç nokta URL'si
    • NumberVerification API v2
    • NumberVerification uç nokta URL'si

Kimlik Bilgilerini/Yapılandırmaları Paylaşma

Firebase Telefon Numarası Doğrulama

ACTION7: Operatör, ACTION4 ve ACTION6'daki üretim yapılandırmasını Google Teknik Hesap Yöneticisi ile paylaşır.

  • [ÖNEMLİ] OAuth sırrı, Google ile güvenli bir bant dışı (e-posta, doküman vb. yok) mekanizma kullanılarak paylaşılmalıdır. Bu bant dışı mekanizma, operatör ve Google TAM tarafından kabul edilecektir.

ACTION8: Google TAM, operatör test uygulamasını kullanarak yapılandırmanın uçtan uca çalıştığını doğrular. Ardından Google TAM, OAuth kimlik bilgilerini Google'ın güvenli depolama alanında saklar ve FPNV'nin yapılandırmalarını, TempToken'ı telefonla (ör. ACTION6 yapılandırmaları) değiştirecek şekilde günceller.

Android Telefon Hizmeti

ACTION9: Operatör, "Google Open Gateway CSP Onboarding" belgesini (Google TAM'ın operatörle paylaşacağı) takip eder. Operatör veya Google TAM'leri, Android Telephony'nin yapılandırmasına dahil olmak için Buganizer bileti gönderir: https://issuetracker.google.com/issues/new?component=1861595&template=2168610. Bu hata, ACTION4'teki üretim yapılandırmasını kullanır.

Bir meta toplayıcı, FPNV entegrasyonunu operatör adına ayarlıyorsa operatörün üst düzey yöneticilerinden (müdür ve üzeri) alınmış bir izin beyanı (e-posta, PDF, mektup vb.) operatörün söz konusu operatörle olan ticari ilişkisini onaylamalıdır. Ardından, meta toplayıcı, operatörün yapılandırmasını operatör adına Android Telephony'ye sağlayabilir.

Ek A. Ayrıntılı Uygulama

Büyük/Küçük Harf Duyarlılığı (Case Sensitivity)

  • HTTP üstbilgileri büyük/küçük harfe duyarlı değildir.
  • Ancak XML ve JSON biçimleri büyük/küçük harfe duyarlıdır. Bu nedenle, istek/yanıt alanlarının bu dokümanla tam olarak eşleştiğinden emin olun.

1. adım: EAP-AKA / AcquireTempToken

Bir cihazın, operatör sunucusundan geçici jeton almak için EAP-AKA ve AcquireTempToken işlemlerini gerçekleştirdiğini gösteren şema.
1. şekil. Cihaz, EAP-AKA ve AcquireTempToken işlemlerini gerçekleştirerek geçici jetonu operatör sunucusundan alır. 2. adım: TempToken'ı telefon numarasıyla değiştirme TempToken'ın telefon numarasıyla nasıl değiştirileceği açıklanacaktır.

Uç noktalar: EAP-AKA ve AcquireTempToken aynı ECS uç noktasını kullanmalıdır.

EAP-AKA Challenge

Referanslar: TS.43 v12.0 - Bölüm 2.8.1 - "Embedded EAP-AKA Authentication by Entitlement Configuration Server".

EAP-AKA 1. Adım - Kimlik Doğrulama Meydan Okuması
EAP-AKA #1 - GET Request to ECS

Android Telephony modülü, operatörün hak sunucusuna bir TS.43 EAP-AKA isteği gönderir.

Android'in İstek Başlıkları

  • Accept: application/vnd.gsma.eap-relay.v1.0+json
    • Bu, yalnızca application/json değil, GSMA'ya özgü bir JSON biçimidir.

Android'in İstek Alanları

  • eap_id: RCC.14 Ek C'ye bakın.
    • ör. 0<IMSI>@<realm>.mnc<MNC>.mcc<MCC>.3gppnetwork.org
  • GID1: Yalnızca hak sürümü 12.0 ise belirtilir.
  • app_name: Kodlanmış AppName, telefon doğrulaması gerçekleştiren kullanım alanının MD5 karma değerine sahip olur:
    • Uygulamaya yönelik tüm toplayıcı isteklerinin uygulama adı Google-OGI olur.
  • app: Uygulama kimliği ap2014, Telefon Numarası Bilgilerini temsil eder.
  • terminal_vendor/model/sw_version: Rastgele bir değere ayarlanır. Android, bu alanların cihazın gerçek bilgilerini içerdiğini garanti etmez.
  • vers: Yapılandırma sürümü; ör. 0 veya 1
  • entitlement_version: Google, operatörün isteğine göre operatörlere gönderilen hak sürümünü yapılandırır.
    • Genellikle entitlement_version 10.0 veya 12.0'dır.
EAP-AKA #1 - Response from ECS

ECS Yanıt Başlıkları

  • Content-Type: Android, yanıt türünün isteğin Accept başlığıyla eşleşmesini bekler.
    • ör. application/vnd.gsma.eap-relay.v1.0+json

ECS Yanıt Alanları

EAP-AKA 2. Adım - Yetkilendirme Jetonu Alma
EAP-AKA #2 - POST Request to ECS

Android Telephony modülü daha sonra alınan eap-relay-packet aynı uç noktaya geri gönderir.

Android'in İstek Başlıkları

  • Accept: Android iki Accept başlığı ayarlar:
    • application/vnd.gsma.eap-relay.v1.0+json: Cihazın tekrar başka bir EAP-AKA isteği göndermesi gerektiğinde operatörün JSON'u tekrar döndürmesini ifade eder.
    • text/vnd.wap.connectivity-xml: Android'in, operatörün EAP-AKA kimlik doğrulama jetonunu döndürmesini beklediği gerçek biçimi ifade eder.
  • Content-Type: application/vnd.gsma.eap-relay.v1.0+json

Android'in İstek Alanları

  • eap-relay-packet: Önceki EAP-AKA yanıtının eap-relay-packet'ini içerir ancak RFC 4817 - Bölüm 9.2'ye uygun olarak EAP-Response/AKA-Challenge biçimindedir.
EAP-AKA #2 - Response from ECS

Başarılı bir EAP-AKA kimlik doğrulamasından sonra operatör, kimlik doğrulama jetonunu geri döndürür.

ECS Yanıt Başlıkları

  • Content-Type: Android, isteğin Accept başlığıyla eşleşen yanıtın
    • Yani Android, yetkilendirme jetonunu içeren yanıtın text/vnd.wap.connectivity-xml türünde olmasını bekler.
    • Diğer Accept üst bilgisi (application/vnd.gsma.eap-relay.v1.0+json), operatörün Android'in başka bir EAP-AKA isteği gerçekleştirmesini istediği durumlarda kullanılır.

ECS Yanıt Alanları

  • TOKEN.token: Yetkilendirme jetonunu içerir.
  • TOKEN.validity: Cihaz yanıtı aldıktan sonra yanıtın geçerli olduğu saniye sayısı

AcquireTemporary Token

AcquireTempToken - ECS'ye GET isteği

Android istemcisi, EAP-AKA'dan alınan kimlik doğrulama jetonunu kullanarak operatörün AcquireTemporaryToken uç noktasını çağırarak geçici jetonu getirir. İstek

  • Örnek: TS.43 v12.0 - Section 6.4.6 - "AcquireTemporaryToken Request Example"
  • AcquireTempToken, EAP-AKA #1 ile benzer parametrelere sahiptir ancak:
    • AcquireTempToken, IMSI, operation ve operation_targets değerlerini de belirtir.
    • AcquireTempToken, EAP_ID değerini belirtmiyor

Android'in İstek Başlıkları

  • Accept: Android, text/vnd.wap.connectivity-xml değerini ayarlar.

Android'in İstek Alanları

  • terminal_vendor/model/sw_version: Android, bu alanların cihazın gerçek bilgilerini içerdiğini garanti etmez.
  • operation_targets
    • FPNV: İşlem hedefi GetPhoneNumber

AcquireTempToken - ECS'den yanıt

Örnek: TS.43 v12.0 - Section 6.6.6 - "AcquireTemporaryToken Response Example"

ECS Yanıt Başlıkları

  • Content-Type: Android, yanıt türünün isteğin Accept başlığıyla eşleşmesini bekler.
    • ör. text/vnd.wap.connectivity-xml

ECS Yanıt Alanları

  • APPLICATION.TemporaryToken: FPNV sunucusunun daha sonra telefon numarasıyla değiştirebileceği TemporaryToken
  • APPLICATION.TemporaryTokenExpiry: Geçerlilik bitiş zamanı, YYYY-AA-GGTss:dd:ssTZD biçiminde
    • Google, TempToken'ın geçerlilik süresinin Teknik Koşulları karşıladığını doğrular.
  • APPLICATION.OperationResult: TS.43 v12.0 - Bölüm 6.5.1'e bakın.
    • Özellikle, işlemler SUCCESS ise 1 değerini döndürür.

2. adım: TempToken'ı telefon numarasıyla değiştirin

1. seçenek: Vanilla TS.43

Vanilla TS.43 kullanarak bir Google sunucusunun, doğrulanmış bir telefon numarası için operatörle geçici jeton alışverişi yaptığını gösteren şema.
Şekil 2a. Ardından Google sunucusu, GetPhoneNumber'ı çağırarak doğrulanmış telefon karşılığında TempToken'ı operatöre iletir. Bu şemada 1. Adım: EAP-AKA / AcquireTempToken özetlenmiştir.

Uç noktalar: OAuth ve GetPhoneNumber uç noktaları birbirinden farklı sunucular/uç noktalar olabilir. Bu uç noktalar, EAP-AKA/AcquireTempToken uç noktasından da farklı olabilir.

OAuth

Operatör bu OAuth kılavuzunu takip etmeli ve Google'a gerekli OAuth bilgilerini (istemci kimliği, istemci gizli anahtarı, OAuth sunucu URL'si) sağlamalıdır.

OAuth - POST Request to Carrier's Auth Server (OAuth - POST İsteği ile Operatörün Kimlik Doğrulama Sunucusuna Bağlanma)

FPNV İstek Başlıkları

  • Authorization: FPNV, Basic $BASE64_ENCODED_CREDENTIALS değerini ayarlar.
    • Base64 kodlu kimlik bilgileri, OAuth'un Base64 kodlamasıdır. $CLIENT_ID:$CLIENT_SECRET
  • Content-Type: FPNV, application/x-www-form-urlencoded değerini ayarlar.
  • Accept: FPNV, application/json değerini ayarlar.

FPNV İstek Alanları

  • 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 - Response from Carrier's Auth Server

Operatörün yanıt başlıkları

  • Content-Type: FPNV, yanıt türünün isteğin Accept üstbilgisiyle eşleşmesini bekler.
    • ör. application/json

Operatörün Yanıt Alanları

  • access_token: OAuth erişim jetonu
  • token_type: bearer
  • expires_in: OAuth erişim jetonunun saniye cinsinden geçerlilik süresi
    • Google, OAuth jetonunun geçerlilik süresinin Teknik Koşullar'ı karşıladığını doğrular.
200 OK
Content-Type: application/json

{
  "access_token": $ACCESS_TOKEN,
  "token_type": "bearer",
  "expires_in": $EXPIRATION_IN_SECS,
}
GetPhoneNumber
GetPhoneNumber - ECS'ye POST İsteği

Google doğrulama sunucusu, GetPhoneNumber işlemini kullanarak telefon numarasını getirir.

FPNV'nin İstek Başlıkları

  • Accept: application/json
  • Content-Type: application/json

FPNV'nin İstek Alanları

  • requestor_id: GetPhoneNumber TS.43 işlemini çağıran hizmeti tanımlar.
    • Firebase Telefon Numarası Doğrulama UUID'si: 191fd7cc-f7cd-4bb4-a5d2-455ae1fb9a19
  • temporary_token: AcquireTempToken'dan alınan TemporaryToken
  • access_token: Google'ın operatörle kimlik doğrulaması için kullanılan OAuth jetonu
  • terminal_vendor/model/sw_version: FPNV, bu alanları rastgele değerlerle doldurur.
  • entitlement_version: Google, operatörün isteğine göre operatörlere gönderilen hak sürümünü yapılandırır.
    • Genellikle entitlement_version 10.0 veya 12.0'dır.
  • app: FPNV, ap2014 değerini ayarlar.
  • app_name: FPNV, tüm FPNV istekleri için firebase değerini ayarlar.
    • Not: AcquireTempToken, hangi toplayıcı kullanılırsa kullanılsın app_name Google-OGI değerine sahip olur.
  • operation: FPNV, GetPhoneNumber değerini ayarlar.
GetPhoneNumber - ECS'den yanıt

Örnek: TS.43 v12.0 - Section 6.6.7 - "GetPhoneNumber Response Example"

Operatörün yanıt başlıkları

  • Content-Type: FPNV, yanıt türünün isteğin Accept üstbilgisiyle eşleşmesini bekler.
    • ör. application/json

Operatörün Yanıt Alanları

  • ap2014.MSISDN: FPNV, telefon numarasının E164 biçiminde döndürülmesini bekler.
    • JSON büyük/küçük harfe duyarlı olduğundan MSISDN büyük harfle yazılmalıdır.
TemporaryToken Hata Kodları

TS.43 v12.0, bölüm 2.8.6'daki referanslar.

Aşağıdaki tabloda, GetPhoneNumber istekleri için ECS'nin Google doğrulama sunucusuna döndürmesi beklenen hata yanıtları ayrıntılı olarak açıklanmaktadır:

Senaryo

ECS'den GET/POST yanıt kodu

Üçüncü Taraf Sunucu İşlemi

İstek parametreleri geçersiz veya eksik ya da istek yanlış biçimlendirilmiş

400 Hatalı İstek

Bir sonraki kullanıcı çağrısında / istemci yeniden başlatıldıktan sonra yeniden deneme

İstek Geçersiz veya Süresi Dolmuş Geçici Jeton İçeriyor

401 Yetkilendirilmedi

Mümkünse cihazı, ECS'den geçerli bir (yeni) geçici jeton almaya tetikleyin.

Geçici jetonla birlikte geçersiz işlem

403 Yasak

Bir sonraki kullanıcı çağrısında / istemci yeniden başlatıldıktan sonra yeniden deneme

İstenen kaynak bulunamadı

404 Bulunamadı

Bir sonraki kullanıcı çağrısında / istemci yeniden başlatıldıktan sonra yeniden deneme

ECS, istek işlenirken dahili bir hatayla karşılaşıyor

500 Dahili Sunucu Hatası

Bir sonraki kullanıcı çağrısında / istemci yeniden başlatıldıktan sonra yeniden deneme

2. Seçenek: CAMARA

CAMARA&#39;nın JWT taşıyıcı akışını kullanarak bir Google sunucusunun, doğrulanmış bir telefon numarası için operatörle geçici jeton alışverişi yaptığını gösteren şema.
Şekil 2b. Ardından Google sunucusu, CAMARA'nın JWT taşıyıcı akışını gerçekleştirerek TempToken'ı doğrulanmış telefon karşılığında operatöre iletir. Bu şemada 1. adım: EAP-AKA / AcquireTempToken gösterilmemektedir.

Uç noktalar: CAMARA erişim jetonunu alma ve telefon numarasını alma, birbirinden farklı sunucular/uç noktalar olabilir. Bu uç noktalar, EAP-AKA / AcquireTempToken uç noktasından da farklı olabilir.

OAuth - CAMARA Erişim Jetonunu Alma

Google yalnızca CAMARA'nın JWT taşıyıcı akışını destekleyecek, CIBA akışını desteklemeyecektir.

CAMARA Erişim Jetonu - Operatöre POST İsteği

Google, aşağıdaki alanları içeren bir JWT oluşturur.

  • iss: JWT'nin vereni (diğer adıyla istemci kimliği)
    • ör. firebase (gerçek FPNV entegrasyonu) veya fpnv-carrier-tester-app (operatör test uygulaması)
  • sub: JWT'nin konusu
    • ör. operatortoken:$TEMP_TOKEN
  • aud: Kitle; JWT'nin hedeflendiği alıcılar
    • Jeton uç nokta URL'si (ör. yetkilendirme sunucusunun URL'si)
  • exp: Saniye cinsinden geçerlilik süresi
    • Google, CAMARA erişim jetonunun ne kadar süreyle geçerli olması gerektiğiyle eşleşen bir geçerlilik süresi gönderir (Teknik Şartlar bölümüne bakın).
  • iat: Saniye cinsinden yayınlanma zamanı
  • jti: Tekrar oynatma saldırılarını önlemek için kullanılan benzersiz tanımlayıcı
    • Ör. rastgele oluşturulmuş UUID
  • scope: İsteğin amacı
    • ör. 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'yi kendi özel anahtarını kullanarak imzalar ve operatör, JWT'yi karşılık gelen ortak anahtarı kullanarak doğrulayabilir. FPNV, JWKS uç noktası kullanarak ortak anahtarı sağlar. FPNV, ortak anahtarları düzenli olarak (ör. her 30 günde bir) döndüreceğinden operatörler, ortak anahtar için bu JWKS uç noktasını düzenli olarak (ör. günde bir kez) yoklamalıdır.

FPNV'nin İstek Başlıkları

  • Content-Type: application/x-www-form-urlencoded
  • Accept: application/json

FPNV'nin İstek Alanları

  • grant_type: urn:ietf:params:oauth:grant-type:jwt-bearer
  • assertion: Yukarıda oluşturulan ve FPNV'nin özel anahtarıyla imzalanan JWT
    • Bu JWT'nin TempToken içerdiğini unutmayın.
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 Erişim Jetonu - Operatörden gelen yanıt

Operatörün yanıt başlıkları

  • Content-Type: FPNV, yanıt türünün isteğin Accept üstbilgisiyle eşleşmesini bekler.
    • ör. application/json

Operatörün Yanıt Alanları

  • access_token: Daha sonra telefon numarasıyla değiştirilebilen CAMARA erişim jetonu
  • token_type: bearer
  • expires_in: OAuth erişim jetonunun saniye cinsinden geçerlilik süresi
    • Google, OAuth jetonunun geçerlilik süresinin Teknik Koşullar'ı karşıladığını doğrular.
  • scope: İsteğin amacı
    • ör. 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

Ardından Google, operatörün /device-phone-number uç noktasına bir GET isteği göndererek CAMARA erişim jetonunu değiştirir.

CAMARA NumberVerification - GET Request to Carrier

FPNV'nin İstek Başlıkları

  • Authorization: Bearer $CAMARA_ACCESS_TOKEN
  • Accept: application/json
GET /device-phone-number
Authorization: Bearer $CAMARA_ACCESS_TOKEN
Accept: application/json
Content-Type: application/json
CAMARA NumberVerification - Response from Carrier

Operatörün yanıt başlıkları

  • Content-Type: FPNV, yanıt türünün isteğin Accept üstbilgisiyle eşleşmesini bekler.
    • ör. application/json

Operatörün Yanıt Alanları

  • devicePhoneNumber: Telefon numarasını E164 biçiminde döndürür.
200 OK
Content-Type: application/json

{
 "devicePhoneNumber": $PHONE_NUMBER
}