HMAC politikası

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, <displayname></displayname> öğesini şunun için kullanın: Apigee kullanıcı arayüzü proxy düzenleyicisinde politikayı farklı, doğal bir dille etiketleyin. dokunun.

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 true olarak ayarlayın başarısız olur.

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

"Kapat" için false olarak ayarlandı politika. Politika uygulanmayacak bir akışa bağlı kalsa bile uygulanabilir.

true İsteğe bağlı
eş zamansız Bu özelliğin desteği sonlandırıldı. false Kullanımdan kaldırıldı

&lt;Algorithm&gt;

<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, SHA256, SHA-256 ve sha256 eşdeğerdir.

&lt;DisplayName&gt;

<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

&lt;Message&gt;

<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.

&lt;Output&gt;

<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 hmac.POLICYNAME.output şeklindedir.

encoding özelliği için varsayılan değer base64 şeklindedir.

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 hex, base16, base64, base64url.

Değerler, büyük/küçük harfe duyarlı değildir; hex ve base16 eş anlamlı kelimelerdir.

Output öğesinin metin değeri herhangi bir geçerli akış değişkeni adı olabilir.

&lt;SecretKey&gt;

<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; ref özelliği gereklidir.

encoding özelliği olmadığında, politika varsayılan olarak anahtar baytlarını elde etmek için gizli anahtar dizesinin kodunu UTF-8 ile çözer.

Bulunma Zorunlu
Tür Dize
Geçerli değerler

encoding için geçerli değerler şunlardır: hex, base16, base64, utf8. Varsayılan değer UTF8'dir. Değerler büyük/küçük harfe duyarlı değildir ve kısa çizgilerle önemlidir. Base16, base-16 ile aynı ve bAse16. Base16 ve Hex eş anlamlı kelimelerdir.

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, private.encodedsecretkey öğesinin 536563726574313233 dizesini barındırdığını varsayalım.

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, encoding='base64', private.encodedsecretkey ise U2VjcmV0MTIz dizesini, anahtar için aynı bayt kümesi elde edilir. Kodlama özelliği olmadan, veya UTF8 kodlama özelliği kullanılırsa dize değeri Secret123 ile aynı bayt kümesi olabilir.

&lt;VerificationValue&gt;

<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: hex, base16, base64, base64url. Değerler büyük/küçük harfe duyarlı değildir; hex ve base16 eş anlamlı kelimelerdir.

VerificationValue kodlamasının, kodlamayla aynı olması gerekmez. Output öğesi için kullanılır.

&lt;IgnoreUnresolvedVariables&gt;

<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:

  • Out of scope (not available in the specific flow where the policy is being executed)

    or

  • Can't be resolved (is not defined)
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>