key-auth eklentisi, API anahtarlarını URL parametrelerinden veya HTTP üst bilgilerinden ayrıştırıp erişim izinlerini doğrulayarak isteklerin kimliğini doğrular.
API anahtarı (kimlik bilgisi) edinin
Her çağırıcı, eklenti yapılandırmasında tanımladığınız bir dize anahtarı olan credential değeriyle kimlik doğrular. Konsol uygulaması gerekmez.
Bir credential tanımlarken aşağıdaki kurallara uyun:
Örneğin UUID biçiminde 32 veya daha fazla karakterden oluşan rastgele bir dize kullanın:
2bda943c-ba2b-11ec-ba07-00163e125d8fAnahtarı güvenli tutun. İstemci tarafı kodunda veya genel belgelerde paylaşmayın.
Birden çok çağırıcıya farklı izinler atamak için her biri için benzersiz bir
credentialtanımlayın ve bunlarıconsumersalanında yapılandırın.
Eklenti türü
Kimlik doğrulama ve yetkilendirme.
Alanlar
Kimlik doğrulama yapılandırması
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
consumers nesnesindeki alanlar:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yetkilendirme yapılandırması (isteğe bağlı)
|
|
|
|
|
|
|
|
|
|
|
|
Yetkilendirme ve kimlik doğrulama yapılandırmaları tek bir kuralda birlikte bulunamaz.
Kimliği doğrulanmış istekler için, çağrıyı tanımlamak amacıyla bir
X-Mse-Consumerüst bilgisi eklenir.
Örnek
Rota düzeyi yetkilendirme ile global kimlik doğrulama
Bu örnekte kimlik doğrulama örnek düzeyinde; yetkilendirme ise rota ve etki alanı düzeyinde yapılandırılır. Her credential değeri benzersiz olmalıdır.
Örnek düzeyi eklenti yapılandırması:
global_auth: false
consumers:
- credential: 2bda943c-ba2b-11ec-ba07-00163e125***
name: consumer1
- credential: c8c8e9ca-558e-4a2d-bb62-e700dcc40***
name: consumer2
keys:
- apikey
- x-api-key
route-a ve route-b rotaları için eklenti yapılandırması:
allow:
- consumer1
*.example.com ve test.com etki alanları için eklenti yapılandırması:
allow:
- consumer2
Bir istek
route-aveyaroute-bile eşleştiğinde yalnızcanamedeğericonsumer1olarak ayarlanmış olan çağırıcının erişimine izin verilir.Bir istek
*.example.comveyatest.comile eşleştiğinde yalnızcanamedeğericonsumer2olarak ayarlanmış olan çağırıcının erişimine izin verilir.
İzin verilen istekler (route-a rotasıyla eşleşen):
-
URL parametresinde API anahtarı:
curl http://xxx.hello.com/test?apikey=2bda943c-ba2b-11ec-ba07-00163e1*** -
HTTP üst bilgisinde API anahtarı:
curl http://xxx.hello.com/test -H 'x-api-key: 2bda943c-ba2b-11ec-ba07-00163e1***'
Kimlik doğrulama başarılı olduktan sonra X-Mse-Consumer üst bilgisi çağırıyı tanımlar. Bu örnekte değer consumer1 olur.
Reddedilen istekler:
-
API anahtarı sağlanmamış. HTTP 401 döndürür.
curl http://xxx.hello.com/test -
Geçersiz API anahtarı. HTTP 401 döndürür.
curl http://xxx.hello.com/test?apikey=926d90ac-ba2e-11ec-ab68-00163e1*** -
Eşleşen çağırıcının erişim izni yok. HTTP 403 döndürür.
# The caller consumer2 is not in the whitelist of route-a. curl http://xxx.hello.com/test?apikey=c8c8e9ca-558e-4a2d-bb62-e700dcc***
Ağ geçidi genelinde kimlik doğrulamayı etkinleştirin
Aşağıdaki örnek düzeyi yapılandırmayla tüm istekler key-auth kimlik doğrulaması gerektirir.
global_auth: true
consumers:
- credential: 2bda943c-ba2b-11ec-ba07-00163e1***
name: consumer1
- credential: c8c8e9ca-558e-4a2d-bb62-e700dcc***
name: consumer2
keys:
- apikey
- x-api-key
Hata kodları
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|