Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Karma tabanlı mesaj doğrulama kodu (HMAC) hesaplar ve doğrular. Bazen Anahtarlı Mesaj Kimlik Doğrulama Kodu veya Anahtarlı Karma olarak da bilinen HMAC, bir "mesaja" uygulanan SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 veya MD-5 gibi bir şifreleme karma işlevini gizli bir anahtarla birlikte kullanarak bu mesajda bir imza veya mesaj kimlik doğrulama kodu oluşturur. Buradaki "mesaj" terimi, herhangi bir bayt akışını ifade eder. Bir iletinin göndereni, alıcıya HMAC da gönderebilir ve alıcı, iletiyi doğrulamak için HMAC'yi kullanabilir.
HMAC hakkında daha fazla bilgi edinmek için HMAC: Keyed-Hashing for Message Authentication (rfc2104) başlıklı makaleyi inceleyin.
Örnekler
HMAC oluşturma
<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ğrulama
<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>
İmza hesaplama ve imza doğrulama işlemleri tam olarak aynı süreci izler. HMAC politikası bir HMAC hesaplar ve isteğe bağlı olarak hesaplanan imzayı beklenen bir değere göre doğrulayabilir. İsteğe bağlı VerificationValue öğesi (varsa) politikayı, hesaplanan değeri bilinen veya verilen bir değere karşı kontrol etmeye yönlendirir.
HMAC için öğe referansı
Politika referansında, HMAC politikasının öğeleri ve özellikleri açıklanır.
En üst düzey öğeye uygulanan özellikler
<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 | Varlık (Presence) |
|---|---|---|---|
| ad |
Politikanın dahili adı. Adda kullanabileceğiniz karakterler şunlarla sınırlıdır:
A-Z0-9._\-$ %. Ancak Apigee kullanıcı arayüzü, alfanümerik olmayan karakterleri otomatik olarak kaldırma gibi ek kısıtlamalar uygular.
İsteğe bağlı olarak, |
Yok | Zorunlu |
| continueOnError |
Bir politika başarısız olduğunda hata döndürmek için false olarak ayarlayın. Bu, çoğu politika için beklenen bir davranıştır.
Bir politika başarısız olsa bile akış yürütme işleminin devam etmesi için |
yanlış | İsteğe bağlı |
| etkin |
Politikayı zorunlu kılmak için true olarak ayarlayın.
Politikayı "kapatmak" için |
doğru | İsteğe bağlı |
| eş zamansız | Bu özelliğin desteği sonlandırıldı. | yanlış | Kullanımdan kaldırıldı |
<Algorithm>
<Algorithm>algorithm-name</Algorithm>
HMAC'yi hesaplamak için karma algoritmasını belirtir.
| Varsayılan | Yok |
| Varlık (Presence) | 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 ayrımı yapmadan ve harfler ile sayılar arasında tire işaretiyle ya da tire işareti olmadan algoritma adlarını kabul eder . Örneğin, |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Apigee kullanıcı arayüzü proxy düzenleyicisinde politikayı farklı ve doğal dilde bir adla etiketlemek için ad özelliğiyle birlikte kullanılır.
| Varsayılan | Bu öğeyi atlarsanız politikanın ad özelliği değeri kullanılır. |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Dize |
<Message>
<Message>message_template_here</Message> or <Message ref='variable_here'/>
İmzalanacak ileti yükünü belirtir. Bu öğenin girişi, çalışma zamanında ek öğelerin (ör. zaman damgaları, tek kullanımlık sayılar, üstbilgi listeleri veya diğer bilgiler) dahil edilmesine olanak tanımak için ileti şablonlarını (değişken değiştirme) destekler. Örneğin:
<Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message>
İleti şablonu, yeni satırlar ve statik işlevler de dahil olmak üzere sabit ve değişken bölümler içerebilir. Boşluk önemlidir.
| Varsayılan | Yok |
| Varlık (Presence) | Zorunlu |
| Tür | Dize |
| Geçerli değerler | Metin değeri için herhangi bir dize geçerlidir. ref özelliği sağlarsanız bu özellik, metin değerine göre öncelikli olur. Politika, metin değerini veya referans verilen değişkeni ileti şablonu olarak değerlendirir. |
<Output>
<Output encoding='encoding_name'>variable_name</Output>
Politikanın hesaplanan HMAC değeriyle ayarlaması gereken değişkenin adını belirtir. Ayrıca çıktı için kullanılacak kodlamayı da belirtir.
| Varsayılan |
Varsayılan çıkış değişkeni |
| Varlık (Presence) | İsteğe bağlı. Bu öğe mevcut değilse politika, akış değişkenini hmac.POLICYNAME.output olarak ayarlar ve base64 kodlu bir değer kullanır. |
| 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şkenden alınır ve belirli kodlamaya göre çözülür.
| Varsayılan |
Referans verilen değişken için varsayılan değer yok;
|
| Varlık (Presence) | Zorunlu |
| Tür | Dize |
| Geçerli değerler |
Kodlama özelliği, UTF-8 yazdırılabilir karakter aralığı dışındaki baytları içeren bir anahtar belirtmenize olanak tanır. Örneğin, politika yapılandırmasının şunları içerdiğini varsayalım: <SecretKey encoding='hex' ref='private.encodedsecretkey'/>
Bu durumda, anahtar baytları şu şekilde çözülür: [53 65 63 72 65 74 31 32 33]
(her bayt onaltılık olarak 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ğerinin yanı sıra doğrulama değerini kodlamak için kullanılan kodlama algoritmasını belirtir. Politika, değeri kod çözmek için bu algoritmayı kullanır.
| Varsayılan | Varsayılan doğrulama değeri yoktur. Öğe mevcutsa ancak encoding özelliği yoksa politika, base64 varsayılan kodlamasını kullanır. |
| Varlık (Presence) | İ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>
Politikada belirtilen referans verilen değişkenlerden herhangi biri çözümlenemediğinde politikanın hata vermesini istiyorsanız false olarak ayarlayın. Çözülemeyen değişkenleri boş dize (null) olarak değerlendirmek için true değerine ayarlayın.
IgnoreUnresolvedVariables boole'u yalnızca mesaj şablonu tarafından referans verilen değişkenleri etkiler. SecretKey ve VerificationValue bir değişkene referans verebilir ancak her ikisinin de çözümlenebilir olması gerekir. Bu nedenle, ignore ayarı bunlar için geçerli değildir.
| Varsayılan | Yanlış |
| Varlık (Presence) | İsteğe bağlı |
| Tür | Boole |
| Geçerli değerler | doğru veya yanlış |
Akış değişkenleri
Politika, yürütme sırasında bu değişkenleri ayarlayabilir.
| Değişken | Açıklama | Örnek |
|---|---|---|
hmac.policy_name.message |
Politika, bu değişkeni etkili mesajla ayarlar. Bu, Message öğesinde belirtilen mesaj şablonunun değerlendirilmesinin sonucudur. |
hmac.HMAC-Policy.message = "Hello, World" |
hmac.policy_name.output |
Output öğesi bir değişken adı belirtmediğinde HMAC hesaplamasının sonucunu alır. |
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>