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ı
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
consumers içindeki alanlar:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bir rota
auth_pathile eşleşirse istek arka uca iletilmez. Bunun yerine, rota bir belirteç oluşturur.global_credentialsdeğ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-Consumerbaşlığı eklenir.
(İsteğe bağlı) Yetkilendirme yapılandırması
|
|
|
|
|
|
|
|
|
|
|
|
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
route-averoute-bağ geçidi rotalarıdır. Bu rotalarla eşleşen isteklere yalnızcaconsumer1adlı tüketici erişebilir.*.example.comvetest.comifadeleri isteklerdeki etki alanı adlarıyla eşleşir. Bu etki alanlarıyla eşleşen isteklere yalnızcaconsumer2adlı 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ı
|
|
|
|
|
|
|
|
|
|
|
|