Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Ne?
Yapılandırılabilir bir hak talebi grubu içeren imzalı bir JWS oluşturur. JWS, daha sonra arka uç hedeflerine aktarılan ya da başka şekillerde kullanılan Ayrıntılı bilgi için JWS ve JWT politikalarına genel bakış sayfasına göz atın.
JWS'nin bölümleri ve bunların nasıl şifrelenip imzalandığı hakkında bilgi edinmek için şuraya bakın: RFC7515.
Video
İmzalanmış bir JWT'nin nasıl oluşturulacağını öğrenmek için kısa bir video izleyin. Bu video, JWT oluşturmaya özgü kavramların birçoğu JWS'de aynıdır.
Örnekler
Ekte, HS256 ile imzalanmış bir JWS oluşturun algoritma
Bu örnek politika, ekli bir JWS oluşturur ve HS256 algoritmasını kullanarak imzalar. HS256 referansları hem imza hem de doğrulama için paylaşılan bir sırla.
Ekli bir JWS, kodlanmış başlığı, yükü ve imzayı içerir:
header.payload.signature
Ayrı içerik oluşturmak için <DetachContent>
değerini doğru olarak ayarlayın.
Daha fazla bilgi için Parts of a JWS/JWT
JWS'nin yapısı ve biçimi hakkında daha fazla bilgi edinin.
Ham, kodlanmamış JWS yükünü belirtmek için <Payload>
öğesini kullanın.
Bu örnekte, bir değişken yükü içermektedir. Bu politika işlemi tetiklendiğinde
Edge, JWS üstbilgisini ve yükünü kodlar, ardından JWS'yi dijital olarak imzalamak için kodlanmış imzayı ekler.
Aşağıdaki politika yapılandırması, değişkende bulunan yükten bir JWS oluşturur
private.payload
<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 ile imzalanmış ayrı bir JWS oluşturun algoritma
Bu örnek politika, ayrılmış bir JWS oluşturur ve RS256 algoritmasını kullanarak imzalar. Oluşturuluyor RS256 imzası, PEM kodlu biçimde sağlanması gereken bir RSA özel anahtarını temel alır.
Çıkarılan JWS, yükü JWS'den çı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
ve sonra bunları kodlanmış imzayı oluşturmak için kullanır. Bununla birlikte oluşturulan JWS, yükü atlar.
Dosyayı,
VerifyJWS politikasının <DetachedContent>
öğesi.
<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 için kullandığınız öğeler, seçilen algoritmaya bağlıdır. aşağıdaki tabloda gösterildiği gibi):
Algoritma | Temel öğeler | |
---|---|---|
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>
|
|
*Temel şartlar hakkında daha fazla bilgi için İmza şifreleme algoritmaları hakkında. |
JWS Oluşturma için öğe referansı
Politika referansında, JWS Oluştur politikasının öğelerini ve özellikleri açıklanmaktadır.
Not: Yapılandırma, şifrelemeye bağlı olarak biraz farklılık gösterir. belirlemektir. Aşağıdaki örnekler için Örnekler'e bakın: yapılandırmalarına yardımcı olur.
Şu özellikler üst düzey öğeye uygula
<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 | Bulunma |
---|---|---|---|
ad |
Politikanın dahili adı. Adda kullanabileceğiniz karakterler aşağıdakilerle sınırlıdır:
A-Z0-9._\-$ % Bununla birlikte, Edge yönetim arayüzü,
alfasayısal olmayan karakterlerin otomatik olarak kaldırılması gibi kısıtlamalara tabidir.
İsteğe bağlı olarak, |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur
çoğu politika için geçerli olur.
Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
etkin |
Politikayı uygulamak için true olarak ayarlayın.
"Kapat" için |
true | İsteğe bağlı |
eş zamansız | Bu özelliğin desteği sonlandırıldı. | false | Kullanımdan kaldırıldı |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Yönetim kullanıcı arayüzü proxy düzenleyicisinde politikayı etiketlemek için ad özelliğine ek olarak kullanın doğal bir dille değiştirin.
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 imzalamak için kullanılacak şifreleme algoritmasını belirtir.
Varsayılan | Yok |
Bulunma | 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ını/değer çiftlerini JWS'nin başlığına yerleştirir.
Varsayılan | Yok |
Bulunma | İsteğe bağlı |
Geçerli değerler | Ek bir hak talebi için kullanmak istediğiniz herhangi bir değer. Tekliflerinizi otomatikleştirmek ve optimize etmek için dize, sayı, boole, harita veya dizi biçiminde olabilir. |
<Claim>
öğesi şu özellikleri alır:
- name - (Zorunlu) Hak talebinin adı.
- ref - (İsteğe bağlı) Bir akış değişkeninin adı. Varsa politika, değişkeninin hak talebi olarak kabul edildiğini gösterir. Hem bir ref özelliği hem de açık bir hak talebi değeri belirtilirse açık değer varsayılan değerdir 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
- dizi - (İsteğe bağlı) Değerin bir tür dizisi olup olmadığını belirtmek için true olarak ayarlayın. Varsayılan: false (yanlış) değerini alır.
<CriticalHeaders>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
JWS'ye kritik başlık olan crit ekler. crit başlığı JWS alıcısı tarafından bilinmesi ve tanınması gereken bir başlık adları dizisidir. Örneğin:
{ “typ: “...”, “alg” : “...”, “crit” : [ “a”, “b”, “c” ], }
Çalışma zamanında, VerifyJWS politikası crit başlığını inceler.
crit başlığında listelenen her üstbilgi için <KnownHeaders>
öğesinin
). VerifyJWS politikasının crit'te bulduğu herhangi bir üstbilgi
aynı zamanda <KnownHeaders>
içinde de listelenmeyen bir uzantı, VerifyJWS 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 | Bir dizi veya diziyi içeren bir değişkenin adı. |
<DetachContent>
<DetachContent>true|false</DetachContent>
JWS'nin ayrılmış bir yük (<DetachContent>true</DetachContent>
) ile oluşturulup oluşturulmayacağını belirtir.
veya değil, <DetachContent>false</DetachContent>
.
False değerini belirtirseniz varsayılan olarak oluşturulan JWS şu biçimde olur:
header.payload.signature
Ayrılan yük oluşturmak için true değerini belirtirseniz oluşturulan JWS, yükü atlar ve şu biçimde olur:
header..signature
Ayrı bir yük ile orijinal kodlanmamış yükü VerifyJWS politikasına aktarmak size kalmıştır
VerifyJWS politikasının <DetachedContent>
öğesini kullanarak oluşturun.
Varsayılan | false |
Bulunma | İsteğe bağlı |
Tür | Boole |
Geçerli değerler | doğru veya yanlış |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
Başvurulan herhangi bir değişken belirtildiğinde politikanın hata vermesini istiyorsanız false (yanlış) değerine ayarlayın bu politikada çözülemez. Çözümlenemeyen değişkenleri boş dize olarak ele almak için doğru değerine ayarlanır (boş).
Varsayılan | false |
Bulunma | İ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
akış değişkeni jws.POLICYNAME.generated_jws
.
Varsayılan | jws.POLICYNAME.generated_jws |
Bulunma | İsteğe bağlı |
Tür | Dize (akış değişkeni adı) |
<Payload>
<Payload ref="flow-variable-name-here" /> or <Payload>payload-value</Payload>
Ham, kodlanmamış JWS yükünü belirtir. Yükü içeren bir değişken veya bir dize belirtin.
'nı inceleyin.Varsayılan | Yok |
Bulunma | Zorunlu |
Tür | Dize, bayt dizisi, akış veya kodlanmamış JWS yükünün başka bir temsili. |
<PrivateKey/Id>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
JWS başlığına dahil edilecek anahtar kimliğini (çocuk) belirtir. Yalnızca kullanım ile ilgili bir mesaj oluşturun.
Varsayılan | Yok |
Bulunma | İsteğe bağlı |
Tür | Dize |
Geçerli değerler | 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. Şunu kullanın: ref özelliğini kullanabilirsiniz. Yalnızca kullanım ile ilgili bir mesaj oluşturun.
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 belirtmeniz gerekir. Edge, geçersiz bir a
şifrenin şifrelenmemiş metin olarak belirtildiği politika yapılandırması. Akış değişkeni
"private" ön ekine sahip olmalıdır. Örneğin, |
<PrivateKey/Value>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
JWS'yi imzalamak için kullanılan PEM kodlu özel anahtarı belirtir. anahtarın içine yerleştirin. Yalnızca algoritma RS256/RS384/RS512 değerlerinden biri olduğunda kullanın. PS256/PS384/PS512 veya ES256/ES384/ES512.
Varsayılan | Yok |
Bulunma | RS256 algoritmasını kullanarak bir JWS 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şkeninin ön eki "private" olmalıdır. Örneğin,
|
<SecretKey/Id>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
HMAC ile imzalanmış bir JWS'nin JWS başlığına dahil edilecek anahtar kimliğini (çocuk) belirtir. algoritmasından faydalanırsınız. Yalnızca algoritma HS256/HS384/HS512'den biri olduğunda kullanın.
Varsayılan | Yok |
Bulunma | İsteğe bağlı |
Tür | Dize |
Geçerli değerler | Akış değişkeni veya dizesi |
<SecretKey/Value>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
HMAC algoritmasıyla jetonları doğrulamak veya imzalamak için kullanılan gizli anahtarı sağlar. Yalnızca kullanım olması gerekir. ref özelliğini kullanın anahtarı bir akış değişkeninde geçirecek.
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 ve HS512 için 64 bayttır. Daha düşük güçlü bir anahtar 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 atıfta bulunan bir akış değişkeni
Not: Akış değişkeni ise "private" ön ekine sahip olmalıdır. Örneğin,
örnek, |
Akış değişkenleri
JWS 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. 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>