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. mobil tabanlı uygulamaların Fleet Engine verilerine erişmesini sağlamamızdır. 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 bu yaklaşımı kullanmanızı önerir. zaman harcamış olursunuz. Bu kitaplık, tüm kullanım senaryolarını ele alarak ve büyük ölçüde Bu, uygulamanızı kolaylaştırır.
  • 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, her senaryo için JWT'lerin çeşitli örnekleri verilmiştir.

JWT'lerin işleyiş şekli

Cep telefonları ve web tarayıcıları gibi güvenilmeyen ortamlar için arka ucunuz sunucu aşağıdaki gibi çalışan JWT'ler yayınlar:

  • Düşük güven ortamında çalışan istemci kodunuz sunucunuzu çağırıyor uygun JWT'yi istemek için, tamamen güvenilir bir ortamda çalışan kod Fleet Engine'e geçmek zorunda.

  • JWT'ler hizmet hesaplarıyla ilişkilendirilir, bu nedenle istekler Fleet Engine'e gönderilir JWT'yi imzalayan hizmet hesabıyla dolaylı olarak ilişkilendirilir.

  • JWT talepleri, müşterinin üzerinde çalışabileceği kaynakları daha fazla kısıtlar. temel bilgileri de içerir.

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ı geziler veya geziler için tüm hizmet hesabı rollerinin tam listesi planlanmış 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 bir Google API Kod Oluşturucu (GAPIC) istemci kitaplığı
  • İmzalayanları Fleet Engine istemci kitaplıklarıyla entegre etme talimatları

Kodunuzdan JWT yayınlıyorsanız

Java için yetkilendirme kitaplığını kullanamıyorsanız JWT'leri oluşturmanız önerilir. Bu bölümde, kendi profilinizi oluşturmanıza yardımcı olacak jeton. Fleet Engine'de Güvenlik bölümündeki JSON Web Jetonları'na bakın JWT alanları ve hak talepleri listesini inceleyebilirsiniz. Bkz. Hizmet hesabı rollerine ilişkin daha fazla bilgi. 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 hizmet hesaplarını ve rolleri kullanın. Hizmet hesabı ve ilişkili rol, jetonu isteyen kullanıcının jetonun erişim izni verdiği bilgileri görüntüleyebilir. Özellikle:
    • Mobil cihaza iletilmek üzere bir JWT'yi imzalıyorsanız hizmeti kullanın Sürücü veya Tüketici SDK'sı rolünün bir hesabı vardır. Aksi halde, mobil verileri değiştirebilir ve erişmemesi gereken verilere erişebilir.
    • Özel çağrılar için kullanılacak JWT'yi imzalıyorsanız şu hizmeti kullanın: hesabı için doğru Fleet Engine Yöneticisi rolüne sahip olmanız gerekir. 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şturun.
  • 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ını döndürme. Sunucunuzun, birkaç saniye içinde tamamlanır.
  • Doğrudan jeton sahibi olarak bir JSON dosyası oluşturup imzalamanız gerekiyorsa OAuth 2.0 erişim jetonlarını kullanmak yerine Hizmet OAuth olmadan hesap yetkilendirmesi Geliştirici dokümanları.

İ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ı olarak reklam kullanıyorsanız sık karşılaşılan senaryolar için JWT örnekleri verilmiştir. kullanabilirsiniz.

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.

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"
       }
    }

Filo işlemleri için JWT örnekleri

Bu bölümde, filo operasyonlarındaki tipik bir senaryo için JWT örneği verilmiştir.

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

Aşağıdaki örnek, operatör tarafından kullanılan web tabanlı bir uygulamadan filo Gerekli izinler istemci uygulamalarına göre daha fazladır. Görüntüleyin İstemci tarafı için JavaScript Filo İzleme Kitaplığı'nı ayarlama yeni bir etiket oluşturabilirsiniz:

  • Fleet Engine Delivery Fleet Reader Cloud IAM'ini kullanarak jetonu imzalayın çok önemlidir.

   {
      "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": "*",
       }
    }

Arka uç sunucu işlemleri için alternatif kimlik doğrulama yöntemi

Google, arka uç sunucu işlemlerinin kimliğini doğrulamak için ADC'yi kullanmanızı önerir. Eğer ADC kullanamazsınız ve JWT'leri kullanmanız gerekiyorsa bu örneklere bakın.

İsteğe bağlı 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": "*"
     }
  }
  

Planlanmış 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": "*"
       }
    }
   

Planlanmış bir 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": ["*"]
       }
    }
  

Planlanmış bir arka uç sunucusu araç başına teslim 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ırada ne var?

  • Deneme aracı oluşturabilmek için kurulumunuzu doğrulayın. jetonlarınız beklendiği gibi çalışıyor
  • Arka uç sunucu işlemleri için JWT'ler yerine ADC kullanma hakkında bilgi için Güvenliğe genel bakış başlıklı makaleyi inceleyin.