Aracılığıyla paylaş


resources.webhooks.web kancası tanımı

Web kancası kaynağı, iş akışını otomatikleştirmek için işlem hattınızı bir dış hizmetle tümleştirmenize olanak tanır.

webhooks:
- webhook: string # Required as first property. Name of the webhook.
  connection: string # Required. Name of the connection. In case of offline webhook this will be the type of Incoming Webhook otherwise it will be the type of the webhook extension.
  type: string # Name of the webhook extension. Leave this empty if it is an offline webhook.
  filters: [ filter ] # List of trigger filters.

Bu tanıma başvuran tanımlar: resources.web kancaları

Özellikler

webhook Dize. İlk özellik olarak gereklidir.
Web kancasının adı. Kabul edilebilir değerler: [-_A-Za-z0-9]*.

connection Dize. Gereklidir.
Bağlantının adı. Çevrimdışı web kancası söz konusu olduğunda bu, Gelen Web Kancası türü olur, aksi takdirde web kancası uzantısının türü olur.

type Dize.
Web kancası uzantısının adı. Çevrimdışı bir web kancasıysa bunu boş bırakın.

filtersresources.webhooks.webhook.filters.
Tetikleyici filtreleri listesi.

Örnekler

Temel örnek

İşlem hattınızı aşağıdaki gibi tanımlayabilirsiniz.

resources:
  webhooks:
    - webhook: WebHook
      connection: IncomingWH

steps:  
- script: echo ${{ parameters.WebHook.resource.message.title }}

web kancasını kullanarak işlem hattınızı tetiklemeniz için adresine bir POST istekte https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<webhook_connection_name>?api-version=6.0-previewbulunmanız gerekir. Bu uç nokta genel kullanıma açıktır ve yetkilendirme gerekmez. İstek aşağıdaki gövdeye sahip olmalıdır.

{
    "resource": {
        "message": {
            "title": "Hello, world!",
            "subtitle": "I'm using WebHooks!"
        }
    }
}

Web kancasının istek gövdesinden verilere eriştiğinde, yanlış YAML'ye yol açabileceğine dikkat edin. Örneğin, önceki işlem hattında adımınız değerini okursa - script: echo ${{ parameters.WebHook.resource.message }}ve işlem hattını bir web kancası aracılığıyla tetiklerseniz işlem hattı çalışmaz. Bunun nedeni, aşağıdaki JSON'yi içeren ile messagedeğiştirme ${{ parameters.WebHook.resource.message.title }} işleminde oluşturulan YAML'nin geçersiz hale gelmesidir.

{
  "title": "Hello, world!",
  "subtitle": "I'm using WebHooks!"
}

Oluşturulan YAML geçersiz hale geldiğinden, yanıt olarak hiçbir işlem hattı çalıştırması kuyruğa alınmaz.

Yetkisiz işlem hattı çalıştırmalarını önleme

Web kancaları, kuruluşunuzun ve web kancası hizmet bağlantınızın adlarını bilen herkesin işlem hattınızı tetiklesine izin verir.

Gelen Web Kancası hizmeti bağlantısı oluştururken gizli dizi tanımlayarak yetkisiz işlem hattı çalıştırmalarını önleyebilirsiniz. Web kancasının gövdesinin SHA-1 sağlama toplamını içeren HTTP üst bilgisinin adını da belirtmeniz gerekir.

Gelen web kancası REST API çağrısının yetkilendirildiğini doğrulamak için Azure Pipelines, anahtar olarak gizli dizisini kullanarak isteğin gövdesinin SHA-1 sağlama toplamını hesaplar. Ardından bunu istek üst bilgisinde geçirilen sağlama toplamıyla karşılaştırır. Böylece arayan, sırrı bildiğini kanıtlar.

Bir örneğe göz atalım. adlı IncomingWHbir Gelen Web Kancası hizmeti bağlantısı yapılandırdığınıza göre gizli dizi olarak secretbelirtildi ve sağlama toplamı adlı X-WH-ChecksumHTTP üst bilgisinde gönderildi. Web kancası kaynağını tanımlayan bir işlem hattınız olduğunu düşünün.

aşağıdaki istek gövdesini kullanarak işlem hattını tetiklemek istediğinizi varsayalım:

{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}

Bunu yapmak için adresine bir POST istekte https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/IncomingWH?api-version=6.0-preview bulunmanız ve değerini 750D33212D3AD4932CC390819050734831A0A94Fiçeren X-WH-Checksum üst bilgiyi eklemeniz gerekir. Kullanıcı adı & parola veya başka bir kimlik doğrulama bilgisi belirtmeniz gerekmez.

Azure Pipelines, anahtar olarak kullanarak secret gövdenin SHA-1 sağlama toplamını bağımsız olarak hesaplar ve aynı 750D33212D3AD4932CC390819050734831A0A94F değeri oluşturur. Değerler eşleştiğinden çağrı yetkilendirilmiştir ve işlem hattı kuyruğa alma işlemi devam eder.

Üst bilginin değerini X-WH-Checksum sözde kod SHA1(secret).ComputeHash(requestBody)olarak hesaplarsınız. kullanabilirsiniz. Bu amaçla NET sınıfı System.Security.Cryptography.HMACSHA1 .

Yeni satırlar veya boşluklar nedeniyle doğrulama hatalarını önlemek için gövdeyi simge durumuna küçültülmüş bir biçimde göndermenizi öneririz. Yani, gönder

{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}

Onun yerine

{
    "resource": {
        "message": {
            "title": "Hello, world!",
            "subtitle": "I'm using WebHooks!"
        }
    }
}

Yukarıdaki iki JSON nesnesi aynı nesneyi temsil etse de, farklı SHA-1 sağlama toplamları oluşturur. Bunun nedeni SHA-1'in farklı olan dize gösteriminde hesaplanmış olmasıdır.

Ayrıca bkz.