JJT politikası oluştur

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ne

Yapılandırılabilir hak talebi grubuyla imzalı bir JWT oluşturur. JWT daha sonra istemcilere döndürülebilir, arka uç hedeflerine iletilebilir veya başka şekillerde kullanılabilir. Ayrıntılı tanıtım için JWS ve JWT politikalarına genel bakış başlıklı makaleyi inceleyin.

Video

İmzalanmış bir JWT'nin nasıl oluşturulacağını öğrenmek için kısa bir video izleyin.

Örnekler

HS256 algoritmasıyla imzalanmış bir JWT oluşturun

Bu örnek politika, yeni bir JWT oluşturur ve bunu HS256 algoritmasını kullanarak imzalar. HS256, hem imzalama hem de imzayı doğrulamak için paylaşılan bir gizli anahtardan yararlanır.

Bu politika işlemi tetiklendiğinde Edge, JWT başlığını ve yükünü kodlar, ardından JWT'yi dijital olarak imzalar. Politikadan nasıl istekte bulunulacağını da içeren eksiksiz bir örnek için yukarıdaki videoyu izleyin.

Buradaki politika yapılandırması, 1 saatlik geçerlilik süresi ve ek bir hak talebi dahil olmak üzere, JWT spesifikasyonunda tanımlandığı şekilde bir dizi standart hak talebinden oluşan bir JWT oluşturur. İstediğiniz kadar ek hak talebi ekleyebilirsiniz. Bu örnek politikadaki her bir öğeyle ilgili koşullar ve seçenekler hakkında ayrıntılı bilgi için Öğe referansına bakın.

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name="show">And now for something completely different.</Claim>
    </AdditionalClaims>
    <OutputVariable>jwt-variable</OutputVariable>
</GenerateJWT>

Sonuçta elde edilen JWT şu başlığa sahip olur...

{
  "typ" : "JWT", 
  "alg" : "HS256",
  "kid" : "1918290"
}

... ve şuna benzer içeriklerle bir yükü olur:

{ 
  "sub" : "monty-pythons-flying-circus",
  "iss" : "urn://apigee-edge-JWT-policy-test",
  "aud" : "show",
  "iat" : 1506553019,
  "exp" : 1506556619,
  "jti" : "BD1FF263-3D25-4593-A685-5EC1326E1F37",
  "show": "And now for something completely different."
}

iat, exp ve jti hak taleplerinin değeri değişiklik gösterir.

RS256 algoritmasıyla imzalanmış bir JWT oluşturun

Bu örnek politika, yeni bir JWT oluşturur ve RS256 algoritmasını kullanarak bunu imzalar. RS256 imzası oluşturmak için RSA özel anahtarı kullanılır. Bu anahtarın PEM kodlu biçimde sağlanması gerekir. Politikadan nasıl istekte bulunulacağını da içeren eksiksiz bir örnek için yukarıdaki videoyu izleyin.

Bu politika işlemi tetiklendiğinde Edge, hak talepleri dahil olmak üzere JWT'yi kodlayıp dijital olarak imzalar. JWT'nin parçaları ve nasıl şifrelenip imzalandığı hakkında bilgi edinmek için RFC7519 sayfasına bakın.

<GenerateJWT name="JWT-Generate-RS256">
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PrivateKey>
        <Value ref="private.privatekey"/>
        <Password ref="private.privatekey-password"/>
        <Id ref="private.privatekey-id"/>
    </PrivateKey>
    <Subject>apigee-seattle-hatrack-montage</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>urn://c60511c0-12a2-473c-80fd-42528eb65a6a</Audience>
    <ExpiresIn>60m</ExpiresIn>
    <Id/>
    <AdditionalClaims>
        <Claim name="show">And now for something completely different.</Claim>
    </AdditionalClaims>
    <OutputVariable>jwt-variable</OutputVariable>
</GenerateJWT>

Temel unsurları ayarlama

JWT'yi oluşturmak için kullanılan anahtarı belirtmek için kullandığınız öğeler, aşağıdaki tabloda gösterildiği gibi seçilen algoritmaya bağlıdır:

Algoritma Temel unsurlar
HS{256/384/512}*
<SecretKey>
  <Value ref="private.secretkey"/>
  <Id>1918290</Id>
</SecretKey>
RS/PS/ES{256/384/512}*
<PrivateKey>
  <Value ref="private.privatekey"/>
  <Password ref="private.privatekey-password"/>
  <Id ref="private.privatekey-id"/>
</PrivateKey>

<Password> ve <Id> öğeleri isteğe bağlıdır.

*Anahtar şartları hakkında daha fazla bilgi için İmza şifreleme algoritmaları hakkında konusuna bakın.

JWT Oluşturma için öğe referansı

Politika referansında, JWT Oluştur politikasının öğeleri ve özellikleri açıklanmaktadır.

Not: Yapılandırma, kullandığınız şifreleme algoritmasına bağlı olarak biraz farklılık gösterir. Belirli kullanım alanlarına yönelik yapılandırmaları gösteren örnekler için Örnekler bölümüne bakın.

Üst düzey öğe için geçerli olan özellikler

<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">

Aşağıdaki özellikler, tüm politika üst öğelerinde ortaktır.

Özellik Açıklama Varsayılan Bulunma
ad Politikanın dahili adı. Adda kullanabileceğiniz karakterler şunlarla sınırlıdır: A-Z0-9._\-$ %. Bununla birlikte, Edge yönetim kullanıcı arayüzü, alfanümerik olmayan karakterlerin otomatik olarak kaldırılması gibi ek kısıtlamalar uygular.

İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için <displayname></displayname> öğesini kullanın.

Yok Gerekli
continueOnError Bir politika başarısız olduğunda hata döndürülmesi için false olarak ayarlayın. Bu, çoğu politika için beklenen davranıştır.

Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için true değerine ayarlayın.

false İsteğe bağlı
etkin Politikayı uygulamak için true değerine ayarlayın.

Politikayı "devre dışı bırakmak" için false olarak ayarlayın. Politika bir akışa bağlı kalsa bile uygulanmaz.

true İsteğe bağlı
async Bu özellik kullanımdan kaldırıldı. false Kullanımdan kaldırıldı

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

Yönetim arayüzü proxy düzenleyicisinde politikayı farklı bir doğal dil adıyla etiketlemek için name özelliğine ek olarak kullanın.

Varsayılan Bu öğeyi çıkarırsanız politikanın ad özelliğinin değeri kullanılır.
Bulunma İsteğe bağlı
Tür Dize

<Algorithm>

<Algorithm>algorithm-here</Algorithm>

Jetonu imzalayacak şifreleme algoritmasını belirtir.

Varsayılan Yok
Bulunma Gerekli
Tür Dize
Geçerli değerler HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512

<Audience>

<Audience>audience-here</Audience>

or:

<Audience ref='variable_containing_audience'/>

Politika, belirtilen değere ayarlanmış aud talebi içeren bir JWT oluşturur. Bu hak talebi, JWT'nin hedeflendiği alıcıları tanımlar. Bu, RFC7519'da bahsedilen kayıtlı hak taleplerinden biridir.

Varsayılan Yok
Bulunma İsteğe bağlı
Tür Dizi (virgülle ayrılmış değerlerin listesi)
Geçerli değerler Kitleyi tanımlayan herhangi bir şey.

<AdditionalClaims/Claims> (EkHak Talebi/Hak Talebi)

<AdditionalClaims>
    <Claim name='claim1'>explicit-value-of-claim-here</Claim>
    <Claim name='claim2' ref='variable-name-here'/>
    <Claim name='claim3' ref='variable-name-here' type='boolean'/>
</AdditionalClaims>

or:

<AdditionalClaims ref='claim_payload'/>

JWT'nin yükünde ek hak talebi adı/değer çiftleri belirtmenizi sağlar. İddiayı dize, sayı, boole, harita veya dizi olarak açık bir şekilde belirtebilirsiniz. Harita, basit bir şekilde ifade etmek gerekirse, bir dizi ad/değer çiftinden oluşur.

Varsayılan Yok
Bulunma İsteğe bağlı
Geçerli değerler Ek hak talebi için kullanmak istediğiniz herhangi bir değer. İddiayı dize, sayı, boole, harita veya dizi olarak açık bir şekilde belirtebilirsiniz.

<Claim> öğesi şu özellikleri alır:

  • name - (Zorunlu) Hak talebinin adı.
  • ref - (İsteğe bağlı) Bir akış değişkeninin adı. Politika varsa bu değişkenin değerini iddia olarak kullanır. Hem ref özelliği hem de açık hak talebi değeri belirtilirse açıkça belirtilen değer varsayılan değer olur ve başvurulan akış değişkeni çözümlenmemişse kullanılır.
  • type - (İsteğe bağlı) Şunlardan biri: dize (varsayılan), sayı, boole veya harita
  • array - (İsteğe bağlı) Değerin bir tür dizisi olup olmadığını belirtmek için true olarak ayarlayın. Varsayılan: false.

<Claim> öğesini eklediğinizde, politikayı yapılandırırken hak talebi adları statik olarak ayarlanır. Alternatif olarak, hak talebi adlarını belirtmek için bir JSON nesnesi aktarabilirsiniz. JSON nesnesi değişken olarak iletildiğinden, oluşturulan JWT'deki hak talebi adları çalışma zamanında belirlenir.

Örneğin:

<AdditionalClaims ref='json_claims'/>

Burada, json_claims değişkeni şu biçimde bir JSON nesnesi içerir:

{
  "sub" : "person@example.com",
  "iss" : "urn://secure-issuer@example.com",
  "non-registered-claim" : {
    "This-is-a-thing" : 817,
    "https://example.com/foobar" : { "p": 42, "q": false }
  }
}

Oluşturulan JWT, JSON nesnesindeki tüm hak taleplerini içerir.

<Ek Başlık/Hak Talebi>

<AdditionalHeaders>
    <Claim name='claim1'>explicit-value-of-claim-here</Claim>
    <Claim name='claim2' ref='variable-name-here'/>
    <Claim name='claim3' ref='variable-name-here' type='boolean'/>
    <Claim name='claim4' ref='variable-name' type='string' array='true'/>
 </AdditionalHeaders>

Ek hak talebi adını/değer çiftini JWT'nin başlığına yerleştirir.

Varsayılan Yok
Bulunma İsteğe bağlı
Geçerli değerler Ek hak talebi için kullanmak istediğiniz herhangi bir değer. İddiayı dize, sayı, boole, harita veya dizi olarak açık bir şekilde belirtebilirsiniz.

<Claim> öğesi şu özellikleri alır:

  • name - (Zorunlu) Hak talebinin adı.
  • ref - (İsteğe bağlı) Bir akış değişkeninin adı. Politika varsa bu değişkenin değerini iddia olarak kullanır. Hem ref özelliği hem de açık hak talebi değeri belirtilirse açıkça belirtilen değer varsayılan değer olur ve başvurulan akış değişkeni çözümlenmemişse kullanılır.
  • type - (İsteğe bağlı) Şunlardan biri: dize (varsayılan), sayı, boole veya harita
  • array - (İsteğe bağlı) Değerin bir tür dizisi olup olmadığını belirtmek için true olarak ayarlayın. Varsayılan: false.

<CriticalHeaders>

<CriticalHeaders>a,b,c</CriticalHeaders>

or:

<CriticalHeaders ref=’variable_containing_headers’/>

JWT başlığına crit kritik başlığını ekler. crit başlığı, JWT alıcısı tarafından bilinmesi ve tanınması gereken başlık adları dizisidir. Örneğin:

{
  “typ: “...”,
  “alg” : “...”,
  “crit” : [ “a”, “b”, “c” ],
}

Çalışma zamanında VerifyJWT politikası, crit üstbilgisini inceler. crit başlığında listelenen her öğe için, VerificationJWT politikasının <KnownHeaders> öğesinin bu başlığın da listelenip listelenmediğini kontrol eder. VerificationJWT politikasının crit içinde bulduğu, ancak <KnownHeaders> içinde de listelenmeyen herhangi bir üstbilgi, VerificationJWT politikasının başarısız olmasına neden olur.

Varsayılan Yok
Bulunma İsteğe bağlı
Tür Virgülle ayrılmış dize dizisi
Geçerli değerler Dizi veya diziyi içeren değişkenin adı.

<CustomClaims>

Not: Şu anda kullanıcı arayüzü üzerinden yeni bir GenerateJWT politikası eklediğinizde bir CustomClaims öğesi ekleniyor. Bu öğe çalışmıyor ve yoksayıldı. Bunun yerine kullanılacak doğru öğe, <AdditionalClaims> öğesidir. Kullanıcı arayüzü, doğru öğeleri daha sonra eklemek için güncellenecektir.

<ExpiresIn>

<ExpiresIn>time-value-here</ExpiresIn>

JWT'nin kullanım ömrünü milisaniye, saniye, dakika, saat veya gün cinsinden belirtir.

Varsayılan N/A
Bulunma İsteğe bağlı
Tür Tamsayı
Geçerli değerler

Değeri içeren bir akış değişkenine değer veya başvuru. Zaman birimleri aşağıdaki gibi belirtilebilir:

  • ms = milisaniye (varsayılan)
  • s = saniye
  • e = dakika
  • y = saat
  • d = gün

Örneğin ExpiresIn=10d, 864.000 saniyenin ExpiresIn değerine eşittir.

<Kimlik>

<Id>explicit-jti-value-here</Id>
 -or-
<Id ref='variable-name-here'/>
 -or-
<Id/>

Belirli jti talebine sahip bir JWT oluşturur. Metin değeri ve ref özelliği boş olduğunda politika, rastgele UUID içeren bir jti oluşturur. JWT kimliği (jti) hak talebi, JWT için benzersiz bir tanımlayıcıdır. jti hakkında daha fazla bilgi için RFC7519'a bakın.

Varsayılan Yok
Bulunma İsteğe bağlı
Tür Dize veya referans.
Geçerli değerler Kimliği içeren akış değişkeninin bir dize veya adı.

<IgnoreUnresolvedVariables>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

Politikada belirtilen referans verilen herhangi bir değişken çözümlenemez durumda olduğunda politikanın hata vermesini istiyorsanız "false" (yanlış) değerine ayarlayın. Çözümlenemeyen değişkenleri boş dize (null) olarak ele almak için değeri true olarak ayarlayın.

Varsayılan Yanlış
Bulunma İsteğe bağlı
Tür Boole
Geçerli değerler doğru veya yanlış

<Issuer>

<Issuer ref='variable-name-here'/>
<Issuer>issuer-string-here</Issuer>

Politika,iss adlı ve belirtilen değere ayarlanmış bir hak talebi içeren bir JWT oluşturur. JWT'yi veren kuruluşu tanımlayan bir hak talebi. Bu, RFC7519'da belirtilen kayıtlı hak taleplerinden biridir.

Varsayılan Yok
Bulunma İsteğe bağlı
Tür Dize veya referans
Geçerli değerler Hepsi

<NotBefore>

<!-- Specify an absolute time. -->
<NotBefore>2017-08-14T11:00:21-07:00</NotBefore>
 -or-
<!-- Specify a time relative to when the token is generated. -->
<NotBefore>6h</NotBefore>

Jetonun geçerli olacağı zamanı belirtir. Jeton, belirtilen zamana kadar geçersizdir. Mutlak zaman değeri veya jetonun oluşturulduğu zamana göre bir zaman belirtebilirsiniz.

Varsayılan Yok
Bulunma İsteğe bağlı
Tür Dize
Geçerli değerler Aşağıdaki bilgilere bakın.

Mutlak zaman değerleri için NotBefore öğesine yönelik geçerli zaman değerleri

Ad Biçim Örnek
sıralanabilir yyyy-MM-dd'T'HH:mm:ss.SSSZ 2017-08-14T11:00:21.269-0700
RFC 1123 EEE, dd MMM yyyy HH:mm:ss zzz 14 Ağustos 2017 Pazartesi 11:00:21 PDT
RFC 850 EEEE, dd-MMM-yy HH:mm:ss zzz 14-17 Ağustos Pazartesi 11:00:21 PDT
ANCI-C EEE MMM d HH:mm:ss yyyy 14 Ağustos Pzt 11:00:21 2017

Göreli zaman değerleri için bir tam sayı ve dönem belirtin. Örneğin:

  • 10 saniye
  • 60 dk.
  • 12 s

<OutputVariable>

<OutputVariable>jwt-variable</OutputVariable>

Bu politika tarafından oluşturulan JWT'nin nereye yerleştirileceğini belirtir. Varsayılan olarak jwt.POLICYNAME.generated_jwt akış değişkenine yerleştirilir.

Varsayılan jwt.POLICYNAME.generated_jwt
Bulunma İsteğe bağlı
Tür Dize (bir akış değişkeni adı)

<PrivateKey/Id>

<PrivateKey>
  <Id ref="flow-variable-name-here"/>
</PrivateKey>

or

<PrivateKey>
  <Id>your-id-value-here</Id>
</PrivateKey>

JWT üstbilgisine dahil edilecek anahtar kimliğini (kid) belirtir. Yalnızca algoritma RS256/RS384/RS512, PS256/PS384/PS512 veya ES256/ES384/ES512 değerlerinden biri olduğunda kullanın.

Varsayılan Yok
Bulunma İsteğe bağlı
Tür Dize
Geçerli değerler Bir akış değişkeni veya dizesi

<PrivateKey/Password>

<PrivateKey>
  <Password ref="private.privatekey-password"/>
</PrivateKey>

Gerekirse politikanın özel anahtarın şifresini çözmek için kullanması gereken şifreyi belirtin. Anahtarı bir akış değişkeninde iletmek için ref özelliğini kullanın. Yalnızca algoritma RS256/RS384/RS512, PS256/PS384/PS512 veya ES256/ES384/ES512 değerlerinden biri olduğunda kullanın.

Varsayılan Yok
Bulunma İsteğe bağlı
Tür Dize
Geçerli değerler Akış değişkeni referansı.

Not: Bir akış değişkeni belirtmelisiniz. Edge, şifrenin şifrelenmemiş metinde belirtildiği bir politika yapılandırmasını geçersiz olarak reddeder. Akış değişkeni "gizli" ön ekine sahip olmalıdır. Örneğin, private.mypassword

<PrivateKey/Value>

<PrivateKey>
  <Value ref="private.variable-name-here"/>
</PrivateKey>

JWT'yi imzalamak için kullanılan PEM kodlu özel anahtarı belirtir. Anahtarı bir akış değişkeninde iletmek için ref özelliğini kullanın. Yalnızca algoritma RS256/RS384/RS512, PS256/PS384/PS512 veya ES256/ES384/ES512 değerlerinden biri olduğunda kullanın.

Varsayılan Yok
Bulunma RS256 algoritmasını kullanarak bir JWT oluşturmak için gereklidir.
Tür Dize
Geçerli değerler PEM kodlu RSA özel anahtar değerini temsil eden bir dize içeren akış değişkeni.

Not: Akış değişkeni "private" önekine sahip olmalıdır. Örneğin, private.mykey

<Gizli Anahtar/Kimlik>

<SecretKey>
  <Id ref="flow-variable-name-here"/>
</SecretKey>

or

<SecretKey>
  <Id>your-id-value-here</Id>
</SecretKey>

HMAC algoritmasıyla imzalanmış bir JWT'nin JWT üstbilgisine dahil edilecek anahtar kimliğini (kid) belirtir. Yalnızca algoritma, HS256/HS384/HS512 değerlerinden biri olduğunda kullanın.

Varsayılan Yok
Bulunma İsteğe bağlı
Tür Dize
Geçerli değerler Bir akış değişkeni veya dizesi

<SecretKey/Value>

<SecretKey>
  <Value ref="private.your-variable-name"/>
</SecretKey>

Jetonları bir HMAC algoritmasıyla doğrulamak veya imzalamak için kullanılan gizli anahtarı sağlar. Yalnızca algoritmanın HS256/HS384/HS512 olması durumunda kullanın. Anahtarı bir akış değişkeninde iletmek için ref özelliğini kullanın.

Edge, HS256/HS384/HS512 algoritmaları için minimum bir anahtar gücü uygular. Minimum anahtar uzunluğu HS256 için 32 bayt, HS384 için 48 bayt, HS512 için ise 64 bayttır. Daha düşük güçlü bir anahtarın kullanılması, çalışma zamanı hatasına neden olur.

Varsayılan Yok
Bulunma HMAC algoritmaları için gereklidir.
Tür Dize
Geçerli değerler Bir dizeye başvuruda bulunan akış değişkeni

Not: Bir akış değişkeni ise "private" önekine sahip olmalıdır. Örneğin, private.mysecret

<Subject>

<Subject>subject-string-here</Subject>
veya
<Subject ref="flow_variable" />

Örneğin:

<Subject ref="apigee.developer.email"/>

Politika, belirtilen değere ayarlanmış alt hak talebi içeren bir JWT oluşturur.Bu hak talebi, JWT'nin konusunu tanımlar veya ifade eder. Bu, RFC7519'da belirtilen standart iddia gruplarından biridir.

Varsayılan Yok
Bulunma İsteğe bağlı
Tür Dize
Geçerli değerler Bir özneyi veya bir değere atıfta bulunan akış değişkenini benzersiz şekilde tanımlayan herhangi bir değer.

Akış değişkenleri

JWT Oluştur politikası akış değişkenlerini ayarlamaz.

Hata referansı

Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.

Çalışma zamanı hataları

Politika yürütüldüğünde bu hatalar ortaya çıkabilir.

Hata kodu HTTP durumu Gerçekleşme zamanı:
steps.jwt.AlgorithmInTokenNotPresentInConfiguration 401 Doğrulama politikasında birden fazla algoritma olduğunda ortaya çıkar.
steps.jwt.AlgorithmMismatch 401 Oluşturma politikasında belirtilen algoritma, Doğrulama politikasında beklenen algoritmayla eşleşmedi. Belirtilen algoritmalar eşleşmelidir.
steps.jwt.FailedToDecode 401 Politika, JWT'nin kodu çözülemedi. JWT bozuk olabilir.
steps.jwt.GenerationFailed 401 Politika, JWT'yi oluşturamadı.
steps.jwt.InsufficientKeyLength 401 HS256 algoritmasında 32 bayttan, HS386 algoritmasında 48 bayttan ve HS512 algoritmasında 64 bayttan az olan bir anahtar.
steps.jwt.InvalidClaim 401 Eksik hak talebi veya hak talebi uyuşmazlığı ya da eksik başlık veya başlık uyuşmazlığı için.
steps.jwt.InvalidCurve 401 Anahtar tarafından belirtilen eğri, Elips Biçimli Eğri algoritması için geçerli değildir.
steps.jwt.InvalidJsonFormat 401 Başlıkta veya yükte geçersiz JSON bulundu.
steps.jwt.InvalidToken 401 Bu hata, JWT imzası doğrulaması başarısız olduğunda ortaya çıkar.
steps.jwt.JwtAudienceMismatch 401 Kitle hak talebi, jeton doğrulanamadı.
steps.jwt.JwtIssuerMismatch 401 Kartı veren kuruluş talebi, jeton doğrulamasında başarısız oldu.
steps.jwt.JwtSubjectMismatch 401 Konuyla ilgili hak talebi, jeton doğrulanamadı.
steps.jwt.KeyIdMissing 401 Doğrulama politikası, ortak anahtarlar için kaynak olarak bir JWKS kullanır ancak imzalı JWT, başlıkta kid özelliği içermiyor.
steps.jwt.KeyParsingFailed 401 Ortak anahtar, verilen anahtar bilgisinden ayrıştırılamadı.
steps.jwt.NoAlgorithmFoundInHeader 401 JWT, herhangi bir algoritma başlığı içermiyorsa ortaya çıkar.
steps.jwt.NoMatchingPublicKey 401 Doğrulama politikası, ortak anahtarlar için kaynak olarak JWKS kullanır ancak imzalı JWT'deki kid, JWKS'de listelenmiyor.
steps.jwt.SigningFailed 401 GenerateJWT'de, HS384 veya HS512 algoritmaları için minimum boyuttan daha küçük bir anahtar için
steps.jwt.TokenExpired 401 Politika, süresi dolmuş bir jetonu doğrulamaya çalışır.
steps.jwt.TokenNotYetValid 401 Jeton henüz geçerli değil.
steps.jwt.UnhandledCriticalHeader 401 crit başlığında JWT'yi Doğrula politikası tarafından bulunan üst bilgi, KnownHeaders bölgesinde listelenmiyor.
steps.jwt.UnknownException 401 Bilinmeyen bir istisna oluştu.
steps.jwt.WrongKeyType 401 Anahtar türü yanlış belirtilmiş. Örneğin, Elips Biçimli Eğri algoritması için RSA anahtarı veya RSA algoritması için eğri anahtarı belirtirseniz.

Dağıtım hataları

Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.

Hata adı Neden Düzelt
InvalidNameForAdditionalClaim <AdditionalClaims> öğesinin <Claim> alt öğesinde kullanılan hak talebi şu kayıtlı adlardan biriyse dağıtım başarısız olur: kid, iss, sub, aud, iat, exp, nbf veya jti.
InvalidTypeForAdditionalClaim <AdditionalClaims> öğesinin <Claim> alt öğesinde kullanılan hak talebi string, number, boolean veya map türünde değilse dağıtım başarısız olur.
MissingNameForAdditionalClaim İddianın adı <AdditionalClaims> öğesinin <Claim> alt öğesinde belirtilmezse dağıtım başarısız olur.
InvalidNameForAdditionalHeader Bu hata, <AdditionalClaims> öğesinin <Claim> alt öğesinde kullanılan iddianın adı alg veya typ olduğunda ortaya çıkar.
InvalidTypeForAdditionalHeader <AdditionalClaims> öğesinin <Claim> alt öğesinde kullanılan hak talebi türü string, number, boolean veya map türünde değilse dağıtım başarısız olur.
InvalidValueOfArrayAttribute Bu hata, <AdditionalClaims> öğesinin <Claim> alt öğesindeki dizi özelliğinin değeri true veya false olarak ayarlanmadığında ortaya çıkar.
InvalidConfigurationForActionAndAlgorithm <PrivateKey> öğesi HS Family algoritmalarıyla veya <SecretKey> öğesi RSA Family algoritmalarıyla kullanılıyorsa dağıtım başarısız olur.
InvalidValueForElement <Algorithm> öğesinde belirtilen değer desteklenen bir değer değilse dağıtım başarısız olur.
MissingConfigurationElement <PrivateKey> öğesi, RSA ailesi algoritmaları veya <SecretKey> öğesi HS Family algoritmaları ile kullanılmazsa bu hata oluşur.
InvalidKeyConfiguration <Value> alt öğesi <PrivateKey> veya <SecretKey> öğelerinde tanımlanmazsa dağıtım başarısız olur.
EmptyElementForKeyConfiguration <PrivateKey> veya <SecretKey> öğelerinin <Value> alt öğesinin ref özelliği boşsa ya da belirtilmemişse dağıtım başarısız olur.
InvalidVariableNameForSecret Bu hata, <PrivateKey> veya <SecretKey> öğelerinin <Value> alt öğesinin ref özelliğinde belirtilen akış değişkeni adı (private.) özel ön ekini içermiyorsa ortaya çıkar.
InvalidSecretInConfig Bu hata, <PrivateKey> veya <SecretKey> öğelerinin <Value> alt öğesi (private.) özel ön ekini içermiyorsa ortaya çıkar.
InvalidTimeFormat <NotBefore> öğesinde belirtilen değer desteklenen bir biçimi kullanmıyorsa dağıtım başarısız olur.

Hata değişkenleri

Bu değişkenler, bir çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name Matches "TokenExpired"
JWT.failed Tüm JWT politikaları, hata durumunda aynı değişkeni ayarlar. JWT.failed = true

Örnek hata yanıtı

JWT Politikası Hata Kodları

Hata işleme için en iyi uygulama, hata yanıtının errorcode bölümünü yakalamaktır. Değişebileceği için faultstring içindeki metne güvenmeyin.

Hata kuralı örneği

    <FaultRules>
        <FaultRule name="JWT Policy Errors">
            <Step>
                <Name>JavaScript-1</Name>
                <Condition>(fault.name Matches "TokenExpired")</Condition>
            </Step>
            <Condition>JWT.failed=true</Condition>
        </FaultRule>
    </FaultRules>