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

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:

  • Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)

    veya

  • Çözümlenemiyor (tanımlanmadı)
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>