Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne?
Yapılandırılabilir bir talep grubuyla imzalı bir JWS oluşturur. JWS daha sonra istemcilere döndürülebilir, arka uç hedeflerine iletilebilir veya başka şekillerde kullanılabilir. Ayrıntılı bir giriş için JWS ve JWT politikalarına genel bakış başlıklı makaleyi inceleyin.
JWS'nin bölümleri, şifrelenme ve imzalanma şekilleri hakkında bilgi edinmek için RFC7515'e bakın.
Video
İmzalı bir JWT oluşturmayı öğrenmek için kısa bir video izleyin. Bu video, JWT oluşturmaya özel olsa da kavramların çoğu JWS için de aynıdır.
Örnekler
- HS256 algoritmasıyla imzalanmış ekli bir JWS oluşturma
- RS256 algoritmasıyla imzalanmış ayrılmış bir JWS oluşturma
HS256 algoritmasıyla imzalanmış ekli bir JWS oluşturun.
Bu örnek politika, eklenmiş bir JWS oluşturur ve bunu HS256 algoritmasını kullanarak imzalar. HS256, hem imzalamak hem de imzayı doğrulamak için paylaşılan bir gizli bilgiye dayanır.
Ekli bir JWS, kodlanmış başlığı, yükü ve imzayı içerir:
header.payload.signature
Ayrılmış içerik oluşturmak için <DetachContent> değerini doğru olarak ayarlayın.
JWS'nin yapısı ve biçimi hakkında daha fazla bilgi için JWS/JWT'nin bölümleri başlıklı makaleyi inceleyin.
Ham, kodlanmamış JWS yükünü belirtmek için <Payload> öğesini kullanın.
Bu örnekte, bir değişken yükü içeriyor. Bu politika işlemi tetiklendiğinde Edge, JWS başlığını ve yükünü kodlar, ardından JWS'yi dijital olarak imzalamak için kodlanmış imzayı ekler.
Aşağıdaki politika yapılandırması, private.payload değişkeninde bulunan bir yükten JWS oluşturur.
<GenerateJWS name="JWS-Generate-HS256"> <DisplayName>JWS Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> <Payload ref="private.payload" /> <OutputVariable>jws-variable</OutputVariable> </GenerateJWS>
RS256 algoritmasıyla imzalanmış ayrılmış bir JWS oluşturun.
Bu örnek politika, ayrılmış bir JWS oluşturur ve RS256 algoritmasını kullanarak imzalar. RS256 imzası oluşturmak için RSA özel anahtarı gerekir. Bu anahtar, PEM kodlamalı biçimde sağlanmalıdır.
Ayrılmış bir JWS, JWS'den yükü çıkarır:
header..signature
Ham, kodlanmamış JWS yükünü belirtmek için <Payload> öğesini kullanın.
Bu politika tetiklendiğinde Edge, JWS başlığını ve yükünü kodlar, ardından kodlanmış imzayı oluşturmak için bunları kullanır. Ancak oluşturulan JWS, yükü atlar.
VerifyJWS politikasının <DetachedContent> öğesini kullanarak yükü VerifyJWS politikasına iletmek sizin sorumluluğunuzdadır.
<GenerateJWS name="JWS-Generate-RS256"> <DisplayName>JWS Generate RS256</DisplayName> <Algorithm>RS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> <Payload ref="private.payload" /> <DetachContent>true</DetachContent> <OutputVariable>jws-variable</OutputVariable> </GenerateJWS>
Temel öğeleri ayarlama
JWS'yi oluşturmak için kullanılan anahtarı belirtmek üzere kullandığınız öğeler, seçilen algoritmaya bağlıdır. Bu öğeler aşağıdaki tabloda gösterilmektedir:
| Algoritma | Önemli 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>
|
|
| *Anahtar koşulları hakkında daha fazla bilgi için İmza şifreleme algoritmaları hakkında başlıklı makaleyi inceleyin. | ||
Generate JWS için öğe referansı
Politika referansı, JWS oluşturma politikasının öğelerini ve özelliklerini açıklar.
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
<GenerateJWS name="JWS" continueOnError="false" enabled="true" async="false">
Aşağıdaki özellikler, tüm politika üst öğeleri için ortaktır.
| Özellik | Açıklama | Varsayılan | Varlık (Presence) |
|---|---|---|---|
| ad |
Politikanın dahili adı. Adda kullanabileceğiniz karakterler şunlarla sınırlıdır:
A-Z0-9._\-$ %. Ancak Edge yönetim kullanıcı arayüzü, alfanümerik olmayan karakterleri otomatik olarak kaldırma gibi ek kısıtlamalar uygular.
İsteğe bağlı olarak, |
Yok | Zorunlu |
| continueOnError |
Bir politika başarısız olduğunda hata döndürmek için false olarak ayarlayın. Bu, çoğu politika için beklenen bir davranıştır.
Bir politika başarısız olsa bile akış yürütme işleminin devam etmesi için |
yanlış | İsteğe bağlı |
| etkin |
Politikayı zorunlu kılmak için true olarak ayarlayın.
Politikayı "kapatmak" için |
doğru | İsteğe bağlı |
| eş zamansız | Bu özelliğin desteği sonlandırıldı. | yanlış | Kullanımdan kaldırıldı |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için ad özelliğiyle birlikte kullanın.
| Varsayılan | Bu öğeyi atlarsanız politikanın ad özelliği değeri kullanılır. |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Dize |
<Algorithm>
<Algorithm>algorithm-here</Algorithm>
Jetonu imzalamak için şifreleme algoritmasını belirtir.
| Varsayılan | Yok |
| Varlık (Presence) | Zorunlu |
| Tür | Dize |
| Geçerli değerler | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<AdditionalHeaders/Claim>
<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 talep adı/değer çiftlerini JWS'nin üstbilgisine yerleştirir.
| Varsayılan | Yok |
| Varlık (Presence) | İsteğe bağlı |
| Geçerli değerler | Ek bir talep için kullanmak istediğiniz herhangi bir değer. İddiayı dize, sayı, Boole, eşlem veya dizi olarak açıkça belirtebilirsiniz. |
<Claim> öğesi şu özellikleri alır:
- name: (Zorunlu) Hak talebinin adı.
- ref: (İsteğe bağlı) Bir akış değişkeninin adı. Bu değişken varsa politika, bu değişkenin değerini talep olarak kullanır. Hem ref özelliği hem de açık bir talep değeri belirtilirse açık değer varsayılan değer olur ve referans verilen akış değişkeni çözümlenmemişse kullanılır. başlıklı makaleyi inceleyin.
- type: (İsteğe bağlı) Şu değerlerden biri: dize (varsayılan), sayı, Boole veya eşlem
- 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’/>
JWS'ye önemli üstbilgi olan crit'i ekler. crit üstbilgisi, JWS alıcısı tarafından bilinmesi ve tanınması gereken üstbilgi adlarının bir dizisidir. Örneğin:
{
“typ: “...”,
“alg” : “...”,
“crit” : [ “a”, “b”, “c” ],
}Çalışma zamanında, VerifyJWS politikası crit üstbilgisini inceler.
crit üstbilgisinde listelenen her üstbilgi için, VerifyJWS politikasının <KnownHeaders> öğesinin de bu üstbilgiyi listelediği kontrol edilir. VerifyJWS politikasının crit içinde bulduğu ve <KnownHeaders> içinde listelenmeyen tüm üstbilgiler, VerifyJWS politikasının başarısız olmasına neden olur.
| Varsayılan | Yok |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Virgülle ayrılmış dizeler dizisi |
| Geçerli değerler | Dizi veya diziyi içeren bir değişkenin adı. |
<DetachContent>
<DetachContent>true|false</DetachContent>
JWS'nin ayrılmış bir yükle mi (<DetachContent>true</DetachContent>) yoksa ayrılmış bir yük olmadan mı (<DetachContent>false</DetachContent>) oluşturulacağını belirtir.
Varsayılan değer olan false'u belirtirseniz oluşturulan JWS şu biçimde olur:
header.payload.signature
Ayrılmış yük oluşturmak için true değerini belirtirseniz oluşturulan JWS, yükü atlar ve şu biçimde olur:
header..signature
Ayrılmış bir yükte, VerifyJWS politikası'nın <DetachedContent> öğesini kullanarak orijinal kodlanmamış yükü VerifyJWS politikasına iletmek sizin sorumluluğunuzdadır.
| Varsayılan | yanlış |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Boole |
| Geçerli değerler | doğru veya yanlış |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
Politikada belirtilen referans verilen değişkenlerden herhangi biri çözümlenemediğinde politikanın hata vermesini istiyorsanız yanlış olarak ayarlayın. Çözülemeyen değişkenleri boş dize (null) olarak değerlendirmek için true olarak ayarlayın.
| Varsayılan | yanlış |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Boole |
| Geçerli değerler | doğru veya yanlış |
<OutputVariable>
<OutputVariable>JWS-variable</OutputVariable>
Bu politika tarafından oluşturulan JWS'nin nereye yerleştirileceğini belirtir. Varsayılan olarak jws.POLICYNAME.generated_jws akış değişkenine yerleştirilir.
| Varsayılan | jws.POLICYNAME.generated_jws |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Dize (bir akış değişkeni adı) |
<Payload>
<Payload ref="flow-variable-name-here" /> or <Payload>payload-value</Payload>
Kodlanmamış, ham JWS yükünü belirtir. Yükü içeren bir değişken veya dize belirtin.
başlıklı makaleyi inceleyin.| Varsayılan | Yok |
| Varlık (Presence) | Zorunlu |
| Tür | Dize, bayt dizisi, akış veya kodlanmamış JWS yükünün başka bir gösterimi. |
<PrivateKey/Id>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
JWS başlığına eklenecek anahtar kimliğini (kid) belirtir. Yalnızca algoritma RS256/RS384/RS512, PS256/PS384/PS512 veya ES256/ES384/ES512 olduğunda kullanın.
| Varsayılan | Yok |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Dize |
| Geçerli değerler | Akış değişkeni veya dize |
<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 olduğunda kullanın.
| Varsayılan | Yok |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Dize |
| Geçerli değerler |
Akış değişkeni referansı.
Not: Bir akış değişkeni belirtmeniz gerekir. Edge, şifrenin düz metin olarak belirtildiği politika yapılandırmasını geçersiz olarak reddeder. Akış değişkeni "private" önekini içermelidir. Örneğin, |
<PrivateKey/Value>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
JWS'yi imzalamak için kullanılan PEM kodlamalı özel anahtarı belirtir. Bir akış değişkeninde anahtarı iletmek için ref özelliğini kullanın. Yalnızca algoritma RS256/RS384/RS512, PS256/PS384/PS512 veya ES256/ES384/ES512 olduğunda kullanın.
| Varsayılan | Yok |
| Varlık (Presence) | RS256 algoritması kullanılarak JWS oluşturmak için gereklidir. |
| Tür | Dize |
| Geçerli değerler |
PEM kodlamalı RSA özel anahtar değerini temsil eden bir dize içeren akış değişkeni.
Not: Akış değişkeni "private" önekini içermelidir. Örneğin,
|
<SecretKey/Id>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
Bir HMAC algoritmasıyla imzalanmış JWS'nin JWS üstbilgisine eklenecek anahtar kimliğini (kid) belirtir. Yalnızca algoritma HS256/HS384/HS512 olduğunda kullanın.
| Varsayılan | Yok |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Dize |
| Geçerli değerler | Akış değişkeni veya dize |
<SecretKey/Value>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
Jetonları HMAC algoritmasıyla doğrulamak veya imzalamak için kullanılan gizli anahtarı sağlar. Yalnızca algoritma HS256/HS384/HS512 olduğunda kullanın. Anahtarı bir akış değişkeninde iletmek için ref özelliğini kullanın.
Edge, HS256/HS384/HS512 algoritmaları için minimum anahtar gücü uygular. HS256 için minimum anahtar uzunluğu 32 bayt, HS384 için 48 bayt ve HS512 için 64 bayttır. Daha düşük güçlü bir anahtar kullanmak çalışma zamanı hatasına neden olur.
| Varsayılan | Yok |
| Varlık (Presence) | HMAC algoritmaları için gereklidir. |
| Tür | Dize |
| Geçerli değerler |
Bir dizeye atıfta bulunan akış değişkeni
Not: Akış değişkeni ise "private" önekini içermelidir. Örneğin, |
Akış değişkenleri
JWS oluşturma 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. 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.jws.GenerationFailed |
401 | Politika, JWS'yi oluşturamadı. |
steps.jws.InsufficientKeyLength |
401 | HS256 algoritmasına göre 32 bayttan küçük bir anahtar için |
steps.jws.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.jws.InvalidCurve |
401 | Anahtar tarafından belirtilen eğri, Elips Biçimli Eğri algoritması için geçerli değildir. |
steps.jws.InvalidJsonFormat |
401 | JWS üstbilgisinde geçersiz JSON bulundu. |
steps.jws.InvalidPayload |
401 | JWS yükü geçersiz. |
steps.jws.InvalidSignature |
401 | <DetachedContent> atlanır ve JWS'de ayrı bir içerik yükü bulunur. |
steps.jws.KeyIdMissing |
401 | Doğrulama politikası, ortak anahtarlar için kaynak olarak bir JWKS kullanır ancak imzalanmış JWS, başlıkta bir kid özelliği içermez. |
steps.jws.KeyParsingFailed |
401 | Ortak anahtar, verilen anahtar bilgisinden ayrıştırılamadı. |
steps.jws.MissingPayload |
401 | JWS yükü eksik. |
steps.jws.NoAlgorithmFoundInHeader |
401 | JWS, algoritma başlığını çıkardığında ortaya çıkar. |
steps.jws.SigningFailed |
401 | GenerateJWS'de HS384 veya HS512 algoritmaları için minimum boyuttan daha küçük bir anahtar için |
steps.jws.UnknownException |
401 | Bilinmeyen bir istisna oluştu. |
steps.jws.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ı | Gerçekleşme zamanı: |
|---|---|
InvalidAlgorithm |
Geçerli değerler şunlardır: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512. |
|
|
Diğer olası dağıtım hataları. |
Hata değişkenleri
Bu değişkenler, çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla bilgi edinin.
| Değişkenler | Konum | Örnek |
|---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name Matches "TokenExpired" |
JWS.failed |
Tüm JWS politikaları, hata durumunda aynı değişkeni ayarlar. | jws.JWS-Policy.failed = true |
Örnek hata yanıtı
Hata giderme için en iyi uygulama, hatanın errorcode kısmını yakalamaktır
tıklayın. Değişebileceği için faultstring içindeki metne güvenmeyin.
Örnek hata kuralı
<FaultRules>
<FaultRule name="JWS Policy Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "TokenExpired")</Condition>
</Step>
<Condition>JWS.failed=true</Condition>
</FaultRule>
</FaultRules>