Yetkilendirme jetonları alma

Jeton nedir?

Düşük güven düzeyine sahip ortamlardan gelen API yöntemi çağrıları için Fleet Engine, Uygun bir hizmet hesabı tarafından imzalanan JSON Web Jetonlarının (JWT) kullanımı. Akıllı telefonlar ve tarayıcılar, güven düzeyinin düşük olduğu ortamlara dahildir. JWT tamamen güvenilir bir ortam olan sunucunuzdan kaynaklandığı için JWT imzalanır, şifrelenir ve sonraki sunucu için istemciye iletilir geçerlilik süresi sona erene kadar veya geçerliliğini yitirene kadar etkileşimleri iptal eder.

Arka ucunuz aşağıdakileri kullanarak Fleet Engine'e karşı kimlik doğrulamalı ve yetkilendirme yapmalıdır: Application Default Credentials (Uygulama Varsayılan Kimlik Bilgileri) mekanizmalarını kullanın. Uygun bir hizmet hesabı tarafından imzalanmış JWT'leri kullandığınızdan emin olun. Hizmet hesabı rollerinin listesi için Fleet Engine'in Temel Özellikleri başlıklı makalenin Fleet Engine hizmet hesabı rolleri bölümüne bakın.

Buna karşılık, arka ucunuzun Fleet Engine'e karşı kimlik doğrulaması ve yetkilendirme yapması gerekir. standart Uygulama Varsayılan Kimlik Bilgilerini kullanarak mekanizmalar.

JSON Web jetonları hakkında daha fazla bilgi için Fleet Engine ile İlgili Temel Bilgiler başlıklı makalenin JSON Web Jetonları bölümüne bakın.

İstemciler jetonları nasıl alır?

Bir sürücü veya tüketici, uygun yetkilendirme kimlik bilgilerini kullanarak uygulamanıza giriş yaptığında, söz konusu cihazdan gönderilen tüm güncellemeler, uygulamanın izinlerini Fleet Engine'a ileten uygun yetkilendirme jetonlarını kullanmalıdır.

Geliştirici olarak, istemci uygulamanız aşağıdakileri yapma imkanı sağlamalıdır. şu:

  • Sunucunuzdan bir JSON Web Token'u alın.
  • Jeton yenileme işlemlerini en aza indirmek için jetonu süresi dolana kadar yeniden kullanın.
  • Süresi dolan jetonu yenileyin.

AuthTokenFactory sınıfı, konum güncellenirken yetkilendirme jetonları oluşturur. SDK, jetonları güncellemeyle birlikte paketlemelidir bilgi sağlar. SDK'yı başlatmadan önce sunucu tarafı uygulamanızın jeton yayınlayabileceğinden emin olun.

Fleet Engine hizmetinin beklediği jetonlarla ilgili ayrıntılar için Fleet Engine'da JSON web jetonu verme başlıklı makaleyi inceleyin.

Yetkilendirme jetonu getirme aracı örneği

AuthTokenFactory için iskelet uygulamasını aşağıda bulabilirsiniz:

class JsonAuthTokenFactory implements AuthTokenFactory {
  private String vehicleServiceToken;  // initially null
  private long expiryTimeMs = 0;
  private String vehicleId;

  // This method is called on a thread whose only responsibility is to send
  // location updates. Blocking is OK, but just know that no location updates
  // can occur until this method returns.
  @Override
  public String getToken(AuthTokenContext authTokenContext) {
    String vehicleId = requireNonNull(context.getVehicleId());

    if (System.currentTimeMillis() > expiryTimeMs || !vehicleId.equals(this.vehicleId)) {
      // The token has expired, go get a new one.
      fetchNewToken(vehicleId);
    }

    return vehicleServiceToken;
  }

  private void fetchNewToken(String vehicleId) {
    String url = "https://yourauthserver.example/token/" + vehicleId;

    try (Reader r = new InputStreamReader(new URL(url).openStream())) {
      com.google.gson.JsonObject obj
          = com.google.gson.JsonParser.parseReader(r).getAsJsonObject();
      vehicleServiceToken = obj.get("VehicleServiceToken").getAsString();
      expiryTimeMs = obj.get("TokenExpiryMs").getAsLong();

      // The expiry time could be an hour from now, but just to try and avoid
      // passing expired tokens, we subtract 10 minutes from that time.
      expiryTimeMs -= 10 * 60 * 1000;
      this.vehicleId = vehicleId;
    } catch (IOException e) {
      // It's OK to throw exceptions here. The StatusListener you passed to
      // create the DriverContext class will be notified and passed along the failed
      // update warning.
      throw new RuntimeException("Could not get auth token", e);
    }
  }
}

Bu özel uygulama, bir web sitesini jeton. İstemci, jetonu yeniden kullanmak için kaydeder ve eski jetonun geçerlilik süresi sona ermeden 10 dakika önce jetonu yeniden getirir.

Uygulamanız, arka plan ileti dizisi kullanmak gibi bazı işlemleri farklı yapabilir tıklayın.

Fleet Engine için kullanılabilen istemci kitaplıkları hakkında bilgi edinmek isterseniz Planlanmış görev hizmetleri için istemci kitaplıkları başlıklı makaleyi inceleyin.

Sırada ne var?

Sürücü SDK'sını başlatma