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 |
Error reference
This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
| Fault code | HTTP status | Occurs when |
|---|---|---|
steps.hmac.UnresolvedVariable |
401 | This error occurs if a variable specified in the HMAC policy is either:
|
steps.hmac.HmacVerificationFailed |
401 | The HMAC verification failed; the verification value provided does not match the calculated value. |
steps.hmac.HmacCalculationFailed |
401 | The policy was unable to calculate the HMAC. |
steps.hmac.EmptySecretKey |
401 | The value of the secret key variable is empty. |
steps.hmac.EmptyVerificationValue |
401 | The variable holding the verification value is empty. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
| Error name | HTTP status | Occurs when |
|---|---|---|
steps.hmac.MissingConfigurationElement |
401 | This error occurs when a required element or attribute is missing. |
steps.hmac.InvalidValueForElement |
401 | This error occurs if the value specified in the Algorithm element is not
one of the following values: SHA-1, SHA-224, SHA-256,
SHA-512, or MD-5. |
steps.hmac.InvalidSecretInConfig |
401 | This error occurs if there is a text value explicitly provided for SecretKey. |
steps.hmac.InvalidVariableName |
401 | This error occurs if the SecretKey variable does not contain the
private prefix (private.). |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
| Variables | Where | Example |
|---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "UnresolvedVariable" |
hmac.policy_name.failed |
The policy sets this variable in the case of a failure. | hmac.HMAC-Policy.failed = true |
Example error response
For error handling, the best practice is to trap the errorcode part of the error
response. Do not rely on the text in the faultstring, because it could change.
Example fault rule
<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>