Tüm Ürünler
Search
Belge Merkezi

API Gateway:OAuth eklentisi

Son Güncelleme:Oct 04, 2026

OAuth eklentisi, JSON Web Token (JWT) tabanlı OAuth 2.0 erişim belirteçleri verir ve RFC 9068 standardına uygundur.

Eklenti türü

Kimlik doğrulama ve yetkilendirme.

Eklenti yapılandırması

Alanlar

Yetkilendirme yapılandırması


Alan


Veri türü


Zorunlu


Varsayılan değer


Açıklama


consumers


array of object


Evet


-


Kimlik doğrulama istemeye yetkili olan çağırıcılar (tüketici).


issuer


string


Hayır


Higress-Gateway


JWT veren taraf.


auth_path


string


Hayır


/oauth2/token


Belirteç yayınlama için kullanılan yol son eki. Rotanın bu yolla eşleştiğinden emin olun. API yönetimi kullanıyorsanız aynı yola sahip bir API oluşturun.


global_credentials


bool


Hayır


true


Tüketici kimlik doğrulaması başarılı olduğunda, herhangi bir rotada verilen kimlik bilgilerinin erişim sağlayıp sağlamayacağını belirtir.


auth_header_name


string


Hayır


Authorization


JWT'yi içeren istek başlığı.


token_ttl


number


Hayır


7200


Yayımlandıktan sonra belirtecin geçerlilik süresi (saniye cinsinden).


clock_skew_seconds


number


Hayır


60


JWT exp ve iat doğrulamaları için izin verilen saat farkı (saniye cinsinden).


keep_token


bool


Hayır


true


Arka uca iletilen isteklerde JWT'nin korunup korunmayacağını belirtir.


global_auth


array of string


Hayır (Yalnızca örnek düzeyi yapılandırmalar için zorunludur)


-


Yalnızca örnek düzeyinde geçerlidir. true olarak ayarlanırsa kimlik doğrulama tüm rotalara uygulanır. false olarak ayarlanırsa kimlik doğrulama yalnızca yapılandırılmış etki alanları ve rotalara uygulanır. Ayarlanmazsa, etki alanı veya rota düzeyinde yapılandırma yoksa kimlik doğrulama genel olarak uygulanır.

consumers içindeki alanlar:


Alan


Veri türü


Zorunlu


Varsayılan değer


Açıklama


name


string


Evet


-


Tüketici adı.


client_id


string


Evet


-


OAuth 2.0 istemci kimliği.


client_secret


string


Evet


-


OAuth 2.0 istemci gizli anahtarı.

Önemli
  • Bir rota auth_path ile eşleşirse istek arka uca iletilmez. Bunun yerine, rota bir belirteç oluşturur.

  • global_credentials değeri false ise, eklentinin etkin olduğu rotanın tam eşleşme kullanmadığından emin olun. Birlikte bulunan önek eşleştirmeli bir rota beklenmeyen davranışlara neden olabilir.

  • Kimlik doğrulanmış istekler için, çağrıyı tanımlamak amacıyla bir X-Mse-Consumer başlığı eklenir.

(İsteğe bağlı) Yetkilendirme yapılandırması


Alan


Veri türü


Zorunlu


Varsayılan değer


Açıklama


allow


array of string


Hayır (Örnek dışı düzey yapılandırmaları için zorunludur)


-


Yalnızca rota veya etki alanı düzeyinde geçerlidir. Eşleşen isteklere hangi tüketicilerin erişebileceğini belirtir ve ayrıntılı izin denetimi sağlar.

Önemli

Yetkilendirme ve kimlik doğrulama yapılandırmaları aynı kural içinde birlikte bulunamaz.

Örnekler

Rota düzeyi yetkilendirme yapılandırması

Aşağıdaki eklenti yapılandırmasını route-a ve route-b rotalarına uygulayın:

consumers:
- name: consumer1
  client_id: 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Bu yapılandırmayla, route-a tarafından verilen kimlik bilgileri route-b rotasına erişemez; tersi de geçerlidir.

Kimlik bilgilerini rotalar arasında paylaşmak için:

global_credentials: true
consumers:
- name: consumer1
  client_id: 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Genel yetkilendirme yapılandırması ve rota düzeyi kimlik doğrulama yapılandırması

Aşağıdaki yapılandırma, belirli rotalar veya etki alanları için JWT kimlik doğrulamasını etkinleştirir. Bir JWT birden fazla JSON Web Key Sets (JWKSs) ile eşleşiyorsa ilk eşleşen consumer geçerli olur.

Örnek düzeyi yapılandırma:

global_auth: false
consumers:
- name: consumer1
  client_id: 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- name: consumer2
  client_id: 87654321-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: hgfedcba-xxxx-xxxx-xxxx-xxxxxxxxxxxx

route-a ve route-b rotaları için yapılandırma:

allow:
- consumer1

*.example.com ve test.com etki alanları için yapılandırma:

allow:
- consumer2
Not
  • route-a ve route-b ağ geçidi rotalarıdır. Bu rotalarla eşleşen isteklere yalnızca consumer1 adlı tüketici erişebilir.

  • *.example.com ve test.com ifadeleri isteklerdeki etki alanı adlarıyla eşleşir. Bu etki alanlarıyla eşleşen isteklere yalnızca consumer2 adlı tüketici erişebilir.

Ağ geçidi düzeyinde kimlik doğrulamayı etkinleştirme

Tüm ağ geçidi istekleri için OAuth2 kimlik doğrulamasını etkinleştirin:

global_auth: true
consumers:
- name: consumer1
  client_id: 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- name: consumer2
  client_id: 87654321-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: hgfedcba-xxxx-xxxx-xxxx-xxxxxxxxxxxx

İstek örnekleri

Client Credential yetkilendirme türünü kullanma

Erişim belirteci alma

# Obtain an access token by using the GET method. We recommend that you use this method.
curl 'http://test.com/oauth2/token?grant_type=client_credentials&client_id=12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx&client_secret=abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

# Obtain an access token by using the POST method. To perform this operation, you need to match a route that points to a real destination service. Otherwise, the gateway does not read request bodies.
curl 'http://test.com/oauth2/token' -H 'content-type: application/x-www-form-urlencoded' -d 'grant_type=client_credentials&client_id=12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx&client_secret=abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

# Obtain the value of the access_token field from the response.
{
  "token_type": "bearer",
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImFwcGxpY2F0aW9uXC9hdCtqd3QifQ.eyJhdWQiOiJkZWZhdWx0IiwiY2xpZW50X2lkIjoiMTIzNDU2NzgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4IiwiZXhwIjoxNjg3OTUxNDYzLCJpYXQiOjE2ODc5NDQyNjMsImlzcyI6IkhpZ3Jlc3MtR2F0ZXdheSIsImp0aSI6IjEwOTU5ZDFiLThkNjEtNGRlYy1iZWE3LTk0ODEwMzc1YjYzYyIsInN1YiI6ImNvbnN1bWVyMSJ9.NkT_rG3DcV9543vBQgneVqoGfIhVeOuUBwLJJ4Wycb0",
  "expires_in": 7200
}

Erişim belirtecini kullanarak istek gönderme

curl 'http://test.com' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6ImFwcGxpY2F0aW9uXC9hdCtqd3QifQ.eyJhdWQiOiJkZWZhdWx0IiwiY2xpZW50X2lkIjoiMTIzNDU2NzgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4IiwiZXhwIjoxNjg3OTUxNDYzLCJpYXQiOjE2ODc5NDQyNjMsImlzcyI6IkhpZ3Jlc3MtR2F0ZXdheSIsImp0aSI6IjEwOTU5ZDFiLThkNjEtNGRlYy1iZWE3LTk0ODEwMzc1YjYzYyIsInN1YiI6ImNvbnN1bWVyMSJ9.NkT_rG3DcV9543vBQgneVqoGfIhVeOuUBwLJJ4Wycb0'

Hata kodları


HTTP durum kodu


Hata mesajı


Neden


401


Invalid Jwt token.


JWT eksik, hatalı biçimlendirilmiş veya süresi dolmuş.


403


Access Denied.


Tüketici bu rotaya erişmek için yetkilendirilmemiş.