JSON Web Jetonları Sorun

Bu dokümanda, web'i etkinleştirme işleminin bir parçası olarak JSON Web Jetonlarının nasıl düzenleneceği açıklanmaktadır. ve mobil tabanlı uygulamaların Fleet Engine verilerine erişmesine izin verir. Henüz yapmadıysanız Fleet Engine'de güvenlik bölümündeki JSON Web Jetonları'nı okuyun bölümüne bakın. Fleet Engine hizmetiyle JWT'leri şu yöntemleri kullanabilirsiniz:

  • Yetkilendirme kitaplığını kullan: Google, aşağıdaki durumlarda bu yaklaşımı kullanmanızı önerir: kod tabanınız Java'da yazılmıştır. Bu kitaplık, ihtiyaç duyabileceğiniz senaryolara yer verir ve projenizin hakkında bilgi edindiniz.
  • Kendi JWT'lerinizi oluşturun: JWT kitaplığımızı kullanamıyorsanız şunları yapmanız gerekir: kendi kod tabanınızda derleyin. Bu bölümde, Google Görüntülü Reklam Ağı'nda JWT kullanmayı deneyin.

Java için yetkilendirme kitaplığını kullanma

Java için Fleet Engine yetkilendirme kitaplığını kullanmak istiyorsanız GitHub'a gidin depo. Kitaplık, Fleet Engine'in yapımını basitleştirir JWT'leri kullanarak bunları güvenli bir şekilde imzalar. Sunulan bilgiler:

  • Proje bağımlılık beyanları
  • İsteğe bağlı veya planlanmış geziler için tüm hizmet hesabı rollerinin tam listesi görevler
  • Kimlik bilgisi dosyalarını kullanma dışındaki jeton imzalama mekanizmaları, ör. bir hizmet hesabının kimliğine bürünme
  • İmzalanmış jetonları bir gRPC koçanından veya GAPIC istemcisi
  • İmzalayanları Fleet Engine istemci kitaplıklarıyla entegre etme talimatları

Kodunuzdan JWT yayınlıyorsanız

Java için yetkilendirme kitaplığını kullanamadığınızda JWT'leri uygulamanız gerekir kendi kod tabanınızda kullanmanız gerekir. Bu bölümde, projenizin verilerini sahip olmanız gerekir. Fleet Engine'de Güvenlik bölümündeki JSON Web Jetonları'na bakın. bölümüne bakın. Görüntüleyin isteğe bağlı gezilere yönelik JWT örneklerinin listesi için aşağıdaki bölüme görevlerden sorumlu tutmalısınız.

Genel yönergeler

  • Uygun rolleri kullanın. Böylece, jeton isteyen kullanıcının erişim izni verdiği bilgileri görüntüleme yetkisine sahip olmalıdır. Özellikle:
    • Bir mobil cihaza iletilmek üzere JWT'yi imzalarken Sürücü veya Tüketici SDK'sı rolünün hesabını oluşturun. Aksi halde, mobil cihaz, olmaması gereken durumu değiştirebilir.
    • Benzer şekilde, ayrıcalıklı çağrılar için kullanılacak JWT'yi imzalarken, mutlaka hizmet hesabını doğru Fleet Engine Yönetici rolüyle kullanın. Aksi takdirde işlem başarısız olur.
  • Yalnızca oluşturulan jetonları paylaşın. Şu işlem için kullandığınız kimlik bilgilerini asla paylaşmayın: jetonlar oluşturulur.
  • gRPC çağrılarında jetonun takılma mekanizması kullanılan dil ve çerçevedir. Bir çağrısına hamiline ait bir Authorization başlığı eklemektir değeri jeton olan jeton.
  • Geçerlilik bitiş zamanı döndürür. Sunucunuzun, birkaç saniye içinde tamamlanır.
  • Bir JSON dosyasını doğrudan jeton sahibi olarak oluşturmak ve imzalamak için OAuth 2.0 erişim jetonları için Hizmet hesabı talimatlarını okuyun Kimlik Geliştirici'de OAuth olmadan yetkilendirme belgelerinden faydalanabilirsiniz.

İsteğe bağlı geziler için

  • JWT yükünü oluştururken yetkilendirmeye ek bir talep ekleyin vehicleid veya tripid anahtarının aracın değerine ayarlandığı bölüm Aramanın yapıldığı kimlik veya gezi kimliği.

Planlanmış görevler için

  • Sunucunuz diğer API'leri çağırdığında jetonlar, uygun hak talebi. Bunun için şunları yapabilirsiniz:
    • Her anahtarın değerini * olarak ayarlayın.
    • Kullanıcıya tüm taskids ve deliveryvehicleids için erişim izni verin. Yapılacaklar Bu işlemin ardından, yetkilendirme bölümüne taskid ve deliveryvehicleid tuşlarını kullanın.
    • taskids hak talebinde yıldız işareti (*) kullanıldığında dizideki tek öğedir.

İsteğe bağlı geziler için JWT örnekleri

Bu bölümde, isteğe bağlı web sitesi kullanıyorsanız sık karşılaşılan senaryolar için JWT örnekleri verilmiştir. kullanabilirsiniz.

Arka uç sunucu işlemi için örnek jeton

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_provider_service_account"
}
.
{
  "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
  "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "vehicleid": "*",
     "tripid": "*"
   }
}

Sürücü uygulaması işlemi için örnek jeton

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_driver_service_account"
}
.
{
  "iss": "driver@yourgcpproject.iam.gserviceaccount.com",
  "sub": "driver@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "vehicleid": "driver_12345"
   }
}

Bir tüketici uygulaması işlemi için örnek jeton

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_consumer_service_account"
}
.
{
  "iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
  "sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "tripid": "trip_54321"
   }
}

Planlanmış görevler için JWT örnekleri

Bu bölümde, zamanlanmış reklam biçimi kullanıyorsanız görevlerden biridir.

Arka uç sunucu işlemi için örnek jeton

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "taskid": "*"
       }
    }

Arka uç sunucusu görevleri toplu oluşturma işlemi için örnek jeton

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "taskids": ["*"]
       }
    }

Araç başına teslim için arka uç sunucusu işlemi için örnek jeton

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "deliveryvehicleid": "*"
       }
    }

Sürücü uygulaması için örnek jeton

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_delivery_driver_service_account"
    }
    .
    {
      "iss": "driver@yourgcpproject.iam.gserviceaccount.com",
      "sub": "driver@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "deliveryvehicleid": "driver_12345"
       }
    }

Bir tüketici uygulaması için örnek jeton

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_delivery_consumer_service_account"
    }
    .
    {
      "iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
      "sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "trackingid": "shipment_12345"
       }
    }

Tüm görevleri ve araçları takip etmeye yönelik örnek jeton

Aşağıdaki örnek, tüm görevleri izleyen ve filodaki araçlar. JavaScript Filo İzleme Kitaplığı'nı ayarlama konusuna bakın. bu jetonu kullanacak istemci taraflı uygulama için:

  • Fleet Engine Delivery Fleet Reader Cloud IAM rolünü kullanarak jetonu imzalayın.

   {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_consumer_service_account"
    }
    .
    {
      "iss": "superuser@yourgcpproject.iam.gserviceaccount.com",
      "sub": "superuser@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "scope": "https://www.googleapis.com/auth/xapi",
      "authorization": {
         "taskid": "*",
         "deliveryvehicleid": "*",
       }
    }

Sırada ne var?