Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Karma tabanlı bir mesaj doğrulama kodu (HMAC) hesaplayıp doğrular. Bazen Anahtarlı İleti Kimlik Doğrulama Kodu veya Anahtarlı karma olarak bilinen HMAC, kriptografik bir karma SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 veya MD-5 gibi bir işlevi vardır. ve gizli bir anahtarla birlikte imza veya ileti kimlik doğrulama kodu oluşturmak için kullanabilirsiniz. "Mesaj" terimi burayı tıklayın herhangi bir bayt akışını ifade eder. Mesajı gönderen kişi ayrıca alıcıya HMAC de gönderebilir. Alıcı, mesajın kimliğini doğrulamak için HMAC'yi kullanabilir.
HMAC hakkında daha fazla bilgi edinmek için HMAC: Anahtarlı Karma oluşturma (rfc2104).
Örnekler
HMAC oluştur
<HMAC name='HMAC-1'> <Algorithm>SHA256</Algorithm> <SecretKey ref='private.secretkey'/> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <!-- optional --> <!-- The "message" can include fixed and multiple variable parts, including newlines and static functions. Whitespace is significant. --> <Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message> <!-- default encoding is base64 --> <Output encoding='base16'>name_of_variable</Output> </HMAC>
HMAC'yi doğrulayın
<HMAC name='HMAC-1'> <Algorithm>SHA256</Algorithm> <SecretKey ref='private.secretkey'/> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <!-- optional --> <!-- The "message" can include fixed and multiple variable parts, including newlines and static functions. Whitespace is significant. --> <Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message> <!-- VerificationValue is optional. Include it to perform an HMAC check. --> <VerificationValue encoding='base16' ref='expected_hmac_value'/> <!-- default encoding is base64 --> <Output encoding='base16'>name_of_variable</Output> </HMAC>
İmzanın oluşturulması ve bu imzanın doğrulanması tam olarak aynıdır. bahsedeceğim. HMAC politikası bir HMAC hesaplar ve isteğe bağlı olarak hesaplanan beklentilerin karşılanmasını sağlar. İsteğe bağlı VerificationValue öğesi (varsa), politikayı, hesaplanan değeri bilinen veya verilen bir değere göre kontrol etmeye yönlendirir. değer.
HMAC için öğe referansı
Politika referansı, HMAC politikasının öğelerini ve özelliklerini açıklar.
Şu özellikler üst düzey öğeye uygula
<HMAC name="HMAC" 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._\-$ % Ancak Apigee kullanıcı 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ı |
<Algorithm>
<Algorithm>algorithm-name</Algorithm>
HMAC'yi hesaplamak için karma oluşturma algoritmasını belirtir.
Varsayılan | Yok |
Bulunma | Zorunlu |
Tür | Dize |
Geçerli değerler | SHA-1 , SHA-224 , SHA-256 , SHA-384 ,
SHA-512 ve MD-5
Politika yapılandırması, büyük/küçük harf kullanımını ayırt etmeden algoritma adlarını kabul eder ve
harfler ve rakamlar arasında tire işareti olmadan veya boşluksuz olarak ekleyebilirsiniz . Örneğin, |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Politikayı Apigee kullanıcı arayüzü proxy düzenleyicisinde 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 |
<Message>
<Message>message_template_here</Message> or <Message ref='variable_here'/>
İmzalanacak mesaj yükünü belirtir. Bu öğenin girişi şunları destekler: ileti şablonları (değişken ikame) kullanma: veya diğer bilgiler olabilir. Örneğin:
<Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message>
Mesaj şablonu, yeni satırlar ve statik işlevler de dahil olmak üzere sabit ve değişken parçalar içerebilir. Boşluk önemlidir.
Varsayılan | Yok |
Bulunma | Zorunlu |
Tür | Dize |
Geçerli değerler | Metin değeri için herhangi bir dize geçerlidir. Bir ref özelliği sağlarsanız
bu değer, metin değerine göre öncelikli olur. Politika,
değerini veya başvurulan değişkeni
bir ileti şablonu olarak kullanır. |
<Output>
<Output encoding='encoding_name'>variable_name</Output>
Politikanın, hesaplanan HMAC değeriyle ayarlaması gereken değişkenin adını belirtir. Ayrıca, çıkış için kullanılacak kodlamayı da belirtir.
Varsayılan |
Varsayılan çıkış değişkeni |
Bulunma | İsteğe bağlı. Bu öğe mevcut değilse politika, akış değişkenini ayarlar
hmac.POLICYNAME.output (base64 kodlu bir değerle ifade edilir). |
Tür | Dize |
Geçerli değerler | Kodlama için Değerler, büyük/küçük harfe duyarlı değildir;
|
<SecretKey>
<SecretKey encoding='encoding_name' ref='private.secretkey'/>
HMAC'yi hesaplamak için kullanılan gizli anahtarı belirtir. Anahtar, referans verilen değişkenin kodu çözülmüş olarak gösterir.
Varsayılan |
Başvuruda bulunulan değişken için varsayılan değer yoktur;
|
Bulunma | Zorunlu |
Tür | Dize |
Geçerli değerler |
Kodlama özelliği kullanmak, UTF-8 yazdırılabilir karakter aralığının dışındaki baytları da içerir. Örneğin, politika yapılandırmasının şunu içerdiğini varsayalım: <SecretKey encoding='hex' ref='private.encodedsecretkey'/>
Ayrıca,
Bu durumda, anahtar baytlarının kodu şu şekilde çözülür: [53 65 63 72 65 74 31 32 33]
(her bayt onaltılık biçimde gösterilir). Başka bir örnek olarak, |
<VerificationValue>
<VerificationValue encoding='encoding_name' ref='variable_name'/> or <VerificationValue encoding='encoding_name'>string_value</VerificationValue>
(İsteğe bağlı) Doğrulama değerini ve doğrulama değerini kodlamak için kullanılır. Politika, değerin kodunu çözmek için bu algoritmayı kullanır.
Varsayılan | Varsayılan bir doğrulama değeri yok. Öğe mevcutsa ancak
encoding özelliği eksik. Politika, varsayılan base64 kodlamasını kullanır. |
Bulunma | İsteğe bağlı |
Tür | Dize |
Geçerli değerler |
Kodlama özelliği için geçerli değerler şunlardır:
|
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
Başvurulan herhangi bir değişken belirtildiğinde politikanın hata vermesini istiyorsanız false
değerine ayarlayın
bu politikada çözülemez. Çözümlenemeyen değişkenleri boş dize olarak değerlendirmek için true
olarak ayarlayın
(boş).
PendingUnresolvedVariables boole yalnızca
kullanabilirsiniz. SecretKey
ve VerificationValue
bir değişkene başvuruda bulunabilir, ancak hem
bunlardan birinin çözümlenebilir olması gerekir. ignore
ayarı bunlar için geçerli değildir.
Varsayılan | Yanlış |
Bulunma | İsteğe bağlı |
Tür | Boole |
Geçerli değerler | doğru veya yanlış |
Akış değişkenleri
Politika, bu değişkenleri yürütme sırasında ayarlayabilir.
Değişken | Açıklama | Örnek |
---|---|---|
hmac.policy_name.message |
Politika, bu değişkeni etkili mesajla,
Message içinde belirtilen ileti şablonunun değerlendirilmesinin sonucu
öğesine dokunun. |
hmac.HMAC-Policy.message = "Hello, World" |
hmac.policy_name.output |
Şunun sonucunu alır:
Output öğesi bunu yaptığında HMAC hesaplaması
bir değişken adı belirtmeyin. |
hmac.HMAC-Policy.output = /yyRjydfP+fBHTwXFgc5AZhLAg2kwCri+e35girrGw4= |
hmac.policy_name.outputencoding |
Çıkış kodlamasının adını alır. | hmac.HMAC-Policy.outputencoding = base64 |
Hata referansı
Bu bölümde, bu politika bir hata tetiklediğinde gönderilen hata kodları ve hata mesajları ile Apigee 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.hmac.UnresolvedVariable |
401 | Bu hata, HMAC politikasında belirtilen bir değişken aşağıdakilerden biriyse ortaya çıkar:
|
steps.hmac.HmacVerificationFailed |
401 | HMAC doğrulaması başarısız oldu. Sağlanan doğrulama değeri, hesaplanan değerle eşleşmiyor. |
steps.hmac.HmacCalculationFailed |
401 | Politika HMAC hesaplanamadı. |
steps.hmac.EmptySecretKey |
401 | Gizli anahtar değişkeninin değeri boş. |
steps.hmac.EmptyVerificationValue |
401 | Doğrulama değerini tutan değişken boş. |
Dağıtım hataları
Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.
Hata adı | HTTP durumu | Gerçekleşme zamanı: |
---|---|---|
steps.hmac.MissingConfigurationElement |
401 | Bu hata, gerekli bir öğe veya özellik eksik olduğunda ortaya çıkar. |
steps.hmac.InvalidValueForElement |
401 | Bu hata, Algoritma öğesinde belirtilen değer şu değerlerden biri değilse ortaya çıkar: SHA-1 , SHA-224 , SHA-256 , SHA-512 veya MD-5 . |
steps.hmac.InvalidSecretInConfig |
401 | Bu hata, SecretKey için açıkça sağlanan bir metin değeri varsa ortaya çıkar. |
steps.hmac.InvalidVariableName |
401 | Bu hata, SecretKey değişkeni private önekini (private. ) içermiyorsa ortaya çıkar. |
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, hatanın şurada belirtildiği gibi adıdır: Yukarıdaki Çalışma zamanı hataları tablosu. Hata adı en son hata kodunun bir bölümüdür. | fault.name Matches "UnresolvedVariable" |
hmac.policy_name.failed |
Politika, hata durumunda bu değişkeni ayarlar. | hmac.HMAC-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="HMAC Policy Errors"> <Step> <Name>AM-Unauthorized</Name> <Condition>(fault.name Matches "HmacVerificationFailed")</Condition> </Step> <Condition>hmac.HMAC-1.failed = true</Condition> </FaultRule> </FaultRules>