Antipattern: OAuth jetonları için geçerlilik bitiş zamanı belirleme

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Apigee Edge, şunlar için OAuth 2.0 çerçevesini sağlar: güvenli API'ler. OAuth2; açık standart, jeton tabanlı kimlik doğrulama ve yetkilendirme şemalarını kullanabilirsiniz. İstemci uygulamalarının kullanıcılar adına API'lere erişmesine olanak tanır. kullanıcılardan kullanıcı adlarını ve şifrelerini ifşa etmelerini istemek.

Apigee Edge, geliştiricilerin aşağıdakilerden herhangi birini uygulayarak erişim oluşturmalarına ve/veya jeton yenilemelerine olanak tanır. şunlardır: istemci kimlik bilgileri şifre implicit ve yetkilendirme kodu - OAuthv2 politikasını kullanarak. İstemci uygulamaları, güvenli API'leri kullanmak için erişim jetonlarını kullanır. Her erişim jetonunun kendi geçerlilik süresi vardır zamanıdır (OAuthv2 politikasında ayarlanabilir).

Yenileme jetonları isteğe bağlı olarak, bazı izin türlerini içeren erişim jetonlarıyla birlikte verilir. Yenile jetonlar, orijinal erişim jetonunun süresi dolduktan sonra yeni ve geçerli erişim jetonları almak için kullanılır. iptal edilmiştir. Yenileme jetonlarının geçerlilik süresi, OAuthv2 politikasında da ayarlanabilir.

Bu antipattern, uzun bir geçerlilik süresi belirleme OAuth jetonları için geçerlidir.

Antipattern

OAuthv2 politikasında yenileme jetonu için geçerlilik süresi belirlememe OAuth jetonlarının birikmesine ve Cassandra düğümlerinde disk alanı kullanımının artmasına yol açar.

Aşağıdaki örnek OAuthV2 politikası, <RefreshTokenExpiresIn>:

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <!--<RefreshTokenExpiresIn> is missing -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

Yukarıdaki örnekte:

  • Erişim jetonu, 30 dakikalık makul bir geçerlilik süresiyle ayarlanmıştır.
  • Yenileme jetonunun geçerlilik süresi ayarlanmamış.
  • Yenileme jetonu veri deposunda (Cassandra) sonsuza kadar kalır ve bu da verilere neden olur biriktirmeye yol açar.
  • Sona erme tarihi olmayan bir yenileme jetonu, erişim jetonları oluşturmak için süresiz olarak kullanılabilir.
  • Bu API'ye gelen trafik saniyede 10 istekse 864.000 jeton oluşturabilir bir gün içinde.

Etki

  • Yenileme jetonunun geçerlilik bitiş tarihi olmadan oluşturulması durumunda iki önemli sonuç ortaya çıkar:
    • Yenileme jetonu gelecekte herhangi bir zamanda (muhtemelen yıllar boyunca) erişim elde etmek için kullanılabilir jeton. Bunun güvenlikle ilgili etkileri olabilir.
    • Cassandra'da yenileme jetonunu içeren satır hiçbir zaman silinmez. Bu durum Cassandra'da veri biriktirmesine neden olur.
  • Yenileme jetonunu kullanmıyorsanız yeni bir erişim jetonu almak yerine yeni bir yenileme jetonu ve erişim jetonu oluşturabilirsiniz. eski yenileme jetonu Cassandra'da kalacaktır. Bu nedenle, Cassandra'da jeton birikmeye devam edecek. Bu artış, ve daha ağır sıkıştırmalara neden olur. Bu da nihayetinde okuma/yazma gecikmeleri yaşayabilirsiniz.

En İyi Uygulama

Hem yenileme hem de erişim jetonları için uygun şekilde kısa bir geçerlilik süresi belirleyin. Görüntüleyin en iyi uygulama süre sonu ayarlama için yenileme ve erişim jetonlarının zamanları. Her iki erişim için de bir son kullanma yapılandırması belirttiğinizden emin olun ve yenileme jetonu kullanın. Daha fazla bilgi için OauthV2 politikası dokümanları inceleyebilirsiniz.

Private Cloud müşterileri için Edge'e özel en iyi uygulamalar

Bu bölümde, Private Cloud müşterileri için Edge'e özel en iyi uygulamalar açıklanmaktadır.

Varsayılan yenileme jetonu son kullanma tarihi belirtme

Varsayılan olarak, politika yapılandırmasında yenileme jetonunun geçerlilik süresi belirtilmemişse Edge, geçerlilik sonu olmayan bir yenileme jetonu oluşturur. Bu davranışı şu prosedürü uygulayın:

  1. Mesaj işlemcisi düğümünde yapılandırma geçersiz kılma dosyasını düzenleyin veya oluşturun $APIGEE_ROOT/customer/application/message-processor.properties Bu dosyanın: apigee kullanıcısı tarafından okunabilir.
  2. Aşağıdaki satırı dosyaya ekleyin:
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
    Bu ayar, bir politikada herhangi bir değer belirtilmemişse varsayılan yenileme jetonunun geçerlilik süresini 1 saat olarak ayarlar. Bu varsayılan değeri işletmenizin ihtiyaçlarına göre değiştirebilirsiniz.
  3. Mesaj işlemci hizmetini yeniden başlatın:
    apigee-service edge-message-processor restart
  4. Yukarıdaki adımları tüm ileti işlemci düğümlerinde tek tek tekrarlayın.
ziyaret edin. ziyaret edin.

Cassandra'da en iyi uygulamalar

Apigee'nin herkese açık en son sürümüne geçmeyi deneyin. Apigee devam ediyor yönetimi iyileştirmeye ve optimize etmeye devam eden düzeltmeler ve geliştirmeler Apigee'de birçok jeton bulunuyor. Apigee'de erişim ve yenileme jetonları Cassandra'da depolanır yapabilirsiniz. Bu sıkıştırma stratejisinin tuş tuşu LeveledCompactionStrategy olarak ayarlandı. Aşağıdaki dizinlerin mevcut olmadığını kontrol etmeniz gerekir:
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx#f0f0f0 ve
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx

Ayrıca riskleri azaltmayı da kms.oauth_20_access_tokens tablosunda gc_grace_seconds varsayılan 10 günden daha düşük bir değerinin (örneğin 3 gün) silinmemesi nedeniyle oluşturulan mezar taşlarının veri deposundan daha hızlı silinir.

Daha fazla bilgi