OAuth 2.0 yetkilendirmesini kullanarak Azure API Management web API'si arka ucu koruma Azure Active Directory

Bu makalede, OAuth 2.0 protokolünü API Management (Azure AD) ile kullanarak bir API'yi korumak için Azure Azure Active Directory örneğinizi yapılandırmayı öğrenirsiniz.

Diğer OAuth 2.0 sağlayıcılarını kullanarak geliştirici hesapları için yetkilendirmeyi yapılandırabilirsiniz. Daha fazla bilgi için bkz. Azure'da OAuth 2.0kullanarak geliştirici hesaplarını yetkilendirme API Management.

Not

Bu özellik Geliştirici, Temel, Standart ve Premium katmanlarında API Management.

Geliştirici portalında API'yi çağırma dışında Tüketim katmanında aşağıdaki her adımı takip edebilirsiniz.

Önkoşullar

Bu makaledeki adımları takip etmek için önce şunların olması gerekir:

  • Bir API Management örneği
  • API Management örneğini kullanan yayımlanmış BIR API
  • Azure AD kiracısı

Genel Bakış

Aşağıdaki akışı görsel olarak kavramsallaştırmaya ilişkin genel bakış grafiği.

  1. API'yi temsil etmek için Azure AD'de bir uygulama (arka uç uygulaması) kaydetme.

  2. API'yi çağıran bir istemci uygulamasını temsil etmek için Azure AD'ye başka bir uygulama (client-app) kaydetme.

  3. Azure AD'de, istemci uygulamasının arka uç uygulamasını çağırsına izin vermek için izin verin.

  4. OAuth 2.0 kullanıcı yetkilendirmesini kullanarak API'yi çağırarak geliştirici portalında geliştirici konsolunu yapılandırma.

  5. Gelen her istek için OAuth belirteci doğrulamak için validate-jwt ilkesi ekleyin.

1. API'yi temsil etmek için Azure AD'ye uygulama kaydetme

Api'Azure portal kullanarak, API'yi Azure AD'de temsil eden bir uygulamayı kaydederek Bir API'yi Azure AD ile koruyun.

Uygulama kaydı hakkında ayrıntılı bilgi için bkz. Hızlı Başlangıç: Bir uygulamayı web API'sini ortaya çıkarmak için yapılandırma.

  1. içinde Azure portalöğesini seçin ve öğesini Uygulama kayıtları.

  2. Yeni kayıt'ı seçin.

  3. Uygulama kaydet sayfası göründüğünde uygulamanızın kayıt bilgilerini girin:

    • Ad bölümünde, arka uç uygulaması gibi uygulama kullanıcılarına görüntülenecek anlamlı bir uygulama adı girin.
    • Desteklenen hesap türleri bölümünde senaryoya uygun bir seçenek belirleyin.
  4. Yeniden Yönlendirme URI'sini boş bırakın.

  5. Uygulamayı kaydetmek için Kaydet'i seçin.

  6. Uygulamaya Genel Bakış sayfasında Uygulama (istemci) kimliği değerini bulun ve daha sonra kaydetmek için kullanın.

  7. Kenar menüsünün Yönet bölümünde Api'yi açığa çıkar'ı seçin ve Uygulama Kimliği URI'sini varsayılan değerle ayarlayın. Bu değeri daha sonra için kaydedebilirsiniz.

  8. Kapsam ekle düğmesini seçerek Kapsam ekle sayfasını görüntüleyebilirsiniz:

    1. Yeni bir Kapsam adı, Yönetici onayı görünen adı ve Yönetici onayı açıklaması girin.
    2. Etkin kapsam durumunun seçili olduğundan emin olun.
  9. Kapsamı oluşturmak için Kapsam ekle düğmesini seçin.

  10. API'niz tarafından desteklenen tüm kapsamları eklemek için 8. ve 9. adımları tekrarlayın.

  11. Kapsamlar oluşturulduktan sonra, sonraki bir adımda kullanmak üzere bunları not edin.

2. İstemci uygulamasını temsil etmek için Azure AD'de başka bir uygulama kaydetme

API'yi çağıran her istemci uygulamasını Azure AD'de bir uygulama olarak kaydetme. Bu örnekte, istemci uygulaması geliştirici portalında geliştirici API Management konsolu olur.

Geliştirici Konsolunu temsil edecek şekilde Azure AD'de başka bir uygulama kaydetmek için:

  1. içinde Azure portalöğesini seçin ve öğesini Uygulama kayıtları.

  2. Yeni kayıt'ı seçin.

  3. Uygulama kaydet sayfası göründüğünde uygulamanızın kayıt bilgilerini girin:

    • Ad bölümünde, uygulama kullanıcılarına görüntülenecek olan client-app gibi anlamlı bir uygulama adı girin.
    • Desteklenen hesap türleri bölümünde Herhangi bir kuruluş dizininde (Herhangi bir Azure AD dizini - Çok Kullanıcılı) Hesaplar'ı seçin.
  4. Yeniden Yönlendirme URI'si bölümünde Web URL alanını seçin ve şimdilik boş bırakın.

  5. Uygulamayı kaydetmek için Kaydet'i seçin.

  6. Uygulamaya Genel Bakış sayfasında Uygulama (istemci) kimliği değerini bulun ve daha sonra kaydetmek için kullanın.

  7. Bu uygulamanın sonraki bir adımda kullanmak üzere bir istemci gizlisi oluşturun.

    1. Kenar menüsünün Yönet bölümünde Sertifikalar ve gizli diziler'& seçin.
    2. İstemci gizli dizileri bölümünde Yeni istemci gizli dizisi'ni seçin.
    3. İstemci gizli anahtarı ekle altında bir Açıklama girin ve anahtarın süresinin ne zaman dolması gerektiğini seçin.
    4. Add (Ekle) seçeneğini belirleyin.

Gizli anahtar oluşturulduğunda, sonraki adımda kullanmak üzere anahtar değerini not edin.

3. Azure AD'de izinler verin

API'yi ve Geliştirici Konsolu'nu temsil etmek için iki uygulama kaydettiniz, istemci-uygulamanın arka uç uygulamasını çağırsına izin vermek için izin verin.

  1. içinde Azure portalöğesini seçin ve öğesini Uygulama kayıtları.

  2. İstemci uygulamanızı seçin. Ardından uygulamanın sayfa listesinde API izinleri'ne tıklayın.

  3. İzin Ekle'yi seçin.

  4. Bir API seçin altında API'lerim'i seçin ve ardından arka uç-uygulamanızı bulup seçin.

  5. Temsilci İzinleri'ne ve ardından arka uç uygulamanıza uygun izinleri seçin.

  6. İzin ekle'yi seçin.

İsteğe bağlı olarak:

  1. İstemci uygulamanın API izinleri sayfasına gidin.

  2. Bu dizinde <your-tenant-name> tüm kullanıcılar adına onay vermek için Yönetici onayı ver'i seçin.

4. Geliştirici Konsolunda OAuth 2.0 kullanıcı yetkilendirmeyi etkinleştirme

Bu noktada, Azure AD'de uygulamalarınızı oluşturdunız ve istemci uygulamasının arka uç uygulamasını çağırsına izin vermek için uygun izinleri verdiniz.

Bu örnekte, geliştirici konsolunda (istemci uygulaması) OAuth 2.0 kullanıcı yetkilendirmesini etkinleştirirsiniz.

  1. Aşağıdaki Azure portal Uç nokta yetkilendirme URL'sini ve Belirteç uç noktası URL'sini bulun ve bunları daha sonra için kaydedin.

    1. Uygulama kayıtları açın.
    2. Noktalar'ı seçin.
    3. OAuth 2.0 Yetkilendirme Uç Noktasını ve OAuth 2.0 Belirteç Uç Noktasını kopyalayın.
  2. Uygulama örneğinize API Management göz atma.

  3. Yan menüde Geliştirici portalı bölümünün altında OAuth 2.0 + OpenID seçeneğini Bağlan.

  4. OAuth 2.0 sekmesinin altında Ekle'yi seçin.

  5. Görünen ad ve Açıklama girin.

  6. İstemci kayıt sayfası URL'si için gibi bir yer tutucu değeri http://localhost girin.

    • İstemci kayıt sayfası URL'si, kullanıcıların OAuth 2.0 sağlayıcıları tarafından desteklenen kendi hesaplarını oluşturdukları ve yapılandır yaptıkları bir sayfaya başvurur.
    • Bu örnekte kullanıcılar kendi hesaplarını oluşturmaz ve yapılandırmaz.
  7. Yetkilendirme izni türleri için Yetkilendirme kodu'ni seçin.

  8. Daha önce kaydettiniz Yetkilendirme uç noktası URL'sini ve Belirteç uç noktası URL'sini belirtin:

    1. OAuth 2.0 Yetkilendirme Uç Noktasını kopyalayıp Yetkilendirme uç noktası URL'si metin kutusuna yapıştırın.
    2. Yetkilendirme isteği yöntemi'nin altında POST'yi seçin.
    3. OAuth 2.0 Belirteç Uç Noktası girin ve Bunu Belirteç uç noktası URL'si metin kutusuna yapıştırın.
      • v1 uç noktasını kullanıyorsanız:
        • resource adlı bir gövde parametresi ekleyin.
        • Değerin arka uç uygulaması Uygulama Kimliğini girin.
      • v2 uç noktasını kullanıyorsanız:

    Önemli

    v1 veya v2noktalarını kullanabilirsiniz, ancak v2 uç noktalarının kullanılması önerilir.

  9. İstemci uygulaması kimlik bilgilerini belirtin:

    • İstemci Kimliği için, client-app'in Uygulama Kimliğini kullanın.
    • Gizli anahtar için, daha önce client-app için oluşturduğunuz anahtarı kullanın.
  10. Yetkilendirme kodu izin türü için Yeniden Yönlendirme URI'sini not etmek.

  11. Oluştur’u seçin.

  12. İstemci uygulaması kaydına geri dönün.

  13. Yönet altında kimlik doğrulaması' nı seçin.

  14. Platform yapılandırması altında:

    • Platform Ekle' ye tıklayın.
    • Türü Web olarak seçin.
    • Daha önce yeniden yönlendirme URI 'lerinde kaydettiğiniz YENIDEN yönlendirme URI 'sini yapıştırın.
    • Kaydetmek için Yapılandır düğmesine tıklayın.

    Artık Geliştirici Konsolu, OAuth 2,0 yetkilendirme sunucunuz aracılığıyla Azure AD 'den erişim belirteçleri elde edebilir, API 'niz için OAuth 2,0 Kullanıcı yetkilendirmesini etkinleştirin. Bu, API 'nize çağrı yapmadan önce geliştirici konsolunun Kullanıcı adına bir erişim belirteci alması gerektiğini bilmesini sağlar.

  15. API Management örneğinizi inceleyin ve API'lere gidin.

  16. Korumak istediğiniz API 'YI seçin. Örneğin, Echo API.

  17. Ayarlar gidin.

  18. Güvenlik altında:

    1. OAuth 2,0' ı seçin.
    2. Daha önce yapılandırdığınız OAuth 2,0 sunucusunu seçin.
  19. Kaydet’i seçin.

5. geliştirici portalından API 'yi başarıyla çağırma

Not

Bu bölüm, geliştirici portalını desteklemediği için Tüketim katmanına uygulanmaz.

OAuth 2,0 yetkilendirme sunucunuzu yapılandırdıktan ve API 'nizi bu sunucuyu kullanacak şekilde yapılandırdıktan sonra, geliştirici Portalına gidip bir API 'yi çağırarak test edebilirsiniz.

  1. Azure API Management örneğine genel bakış sayfasından en üstteki menüde Geliştirici Portalı ' nı seçin.

  2. Geliştirici portalındaki API altında herhangi bir işleme gidin.

  3. Bunu, geliştirici konsoluna getirmek için deneyin ' i seçin.

  4. Yeni eklediğiniz yetkilendirme sunucusuna karşılık gelen Yetkilendirme bölümünde yeni bir öğe olduğunu aklınızda edin.

  5. Yetkilendirme açılan listesinden yetkilendirme kodu ' nu seçin.

    Yetkilendirme kodu yetkilendirmesi seçin

  6. İstendiğinde, Azure AD kiracısında oturum açın.

    • Zaten hesapta oturum açtıysanız, istenmeyebilir.
  7. Başarılı oturum açma işleminden sonra, Authorization Azure AD 'den bir erişim belirteciyle isteğe bir üst bilgi eklenir. Aşağıda kısaltılmış bir örnek belirteç (Base64 kodlamalı) verilmiştir:

    Authorization: Bearer eyJ0eXAiOi[...]3pkCfvEOyA
    
  8. API 'YI başarıyla çağırmak için Gönder ' i seçin.

6. istekleri önceden yetkilendirmek için bir JWT doğrulama ilkesi yapılandırın

Şu ana kadar:

  • Geliştirici konsolundan bir çağrı yapmaya çalıştınız.
  • Sizden istenir ve Azure AD kiracısında oturum açtınız.
  • Geliştirici Konsolu sizin adınıza bir erişim belirteci edinir ve API 'ye yapılan istekteki belirteci içerir.

Ancak, API 'nizi belirteç olmadan veya geçersiz bir belirteçle çağırırsa ne olacak? Örneğin, üst bilgisi olmadan API 'yi çağırırsanız, Authorization API Management erişim belirtecini doğrulamadığından çağrı devam eder. Yalnızca Authorization üstbilgiyi arka uç API 'sine geçirir.

Her gelen isteğin erişim belirteçlerini doğrulayarak, isteği JWT Ilkesini doğrulama ile API Management ön Yetkilendir. Bir istekte geçerli bir belirteç yoksa API Management engeller.

Aşağıdaki örnek ilke, <inbound> ilke bölümüne eklendiğinde, Azure AD 'den alınan bir erişim belirtecindeki hedef kitle talebinin değerini denetler ve belirteç geçerli değilse bir hata mesajı döndürür.

<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
    <openid-config url="https://login.microsoftonline.com/{aad-tenant}/v2.0/.well-known/openid-configuration" />
    <required-claims>
        <claim name="aud">
            <value>{backend-api-application-client-id}</value>
        </claim>
    </required-claims>
</validate-jwt>

Not

Yukarıdaki openid-config URL v2 uç noktasına karşılık gelir. V1 openid-config uç noktası için kullanın https://login.microsoftonline.com/{aad-tenant}/.well-known/openid-configuration .

İpucu

{AAD-Tenant} değerini Azure Portal Azure AD kiracı kimliğiniz olarak bulun, her iki durumda:

  • Azure AD kaynağınızın genel bakış sayfası veya
  • Azure AD kaynağınızın yönetme > özellikleri sayfası.

İlkeleri yapılandırma hakkında daha fazla bilgi için bkz. Ilkeleri ayarlama veya düzenleme.

API 'YI çağırmak için bir uygulama oluşturma

Bu kılavuzda, Echo API OAuth 2,0 tarafından korunan örneği çağırmak için örnek istemci uygulaması olarak API Management geliştirici konsolunu kullandınız. Uygulama oluşturma ve OAuth 2,0 uygulama hakkında daha fazla bilgi edinmek için bkz. Azure AD kod örnekleri.

Sonraki adımlar