Öğretici: Azure Spring Apps'te Spring Cloud Gateway ile istemcinin kimliğini doğrulama
Not
Temel, Standart ve Kurumsal planları, 3 yıllık kullanımdan kaldırma süresiyle Mart 2025 ortasından itibaren kullanımdan kaldırılacaktır. Azure Container Apps'e geçiş yapmanızı öneririz. Daha fazla bilgi için bkz . Azure Spring Apps kullanımdan kaldırma duyurusu.
Standart tüketim ve ayrılmış plan, altı ay sonra tamamen kapatılarak 30 Eylül 2024'den itibaren kullanımdan kaldırılacaktır. Azure Container Apps'e geçiş yapmanızı öneririz. Daha fazla bilgi için bkz . Azure Spring Apps Standart tüketimini ve ayrılmış planı Azure Container Apps'e geçirme.
Bu makale şunlar için geçerlidir:✅ Standart tüketim ve ayrılmış (Önizleme)
Bu hızlı başlangıçta, Azure Spring Apps'te barındırılan ve Spring Cloud Gateway uygulamasıyla korunan bir istemci uygulaması ile mikro hizmet uygulaması arasındaki iletişimin güvenliğini sağlama adımları gösterilmektedir. İstemci uygulaması, Spring Cloud Gateway ile oluşturulan uygulamayı kullanarak Azure Spring Apps'te dağıtılan mikro hizmetle iletişim başlatmak için güvenlik sorumlusu olarak doğrulanır. Bu yöntem, OAuth 2.0 istemci kimlik bilgileri akışının yürütülmesiyle gerçekleştirilen kimlik doğrulama ve yetkilendirme işlemleri için Spring Cloud Gateway'in Belirteç Geçişi ve Spring Security'nin Kaynak Sunucusu özelliklerini kullanır.
Aşağıdaki listede örnek projenin bileşimi gösterilmektedir:
- Kitaplar SPA: Yerel olarak barındırılan bu Tek Sayfalı Uygulama (SPA), kitap eklemek veya kitap aramak için Kitaplar mikro hizmetiyle etkileşim kurar.
- Kitaplar mikro hizmeti:
- Azure Spring Apps'te barındırılan bir Spring Cloud Gateway uygulaması. Bu uygulama, Kitaplar RESTful API'leri için bir ağ geçidi olarak çalışır.
- Azure Spring Apps'te barındırılan spring boot RESTful API uygulaması. Bu uygulama, kitap bilgilerini bir H2 veritabanında depolar. Kitaplar hizmeti, kitap yazmak ve okumak için iki REST uç noktasını kullanıma sunar.
1. Önkoşullar
- Azure aboneliği. Aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Git.
- Java Development Kit (JDK), sürüm 17.
- Microsoft Entra kiracısı. Microsoft Entra kiracısı oluşturma hakkında daha fazla bilgi için bkz . Hızlı Başlangıç: Microsoft Entra Id'de yeni kiracı oluşturma.
- Azure CLI sürüm 2.45.0 veya üzeri.
- Node.js’yi yükleyin.
2. Spring projesini hazırlama
Uygulamayı yerel olarak kopyalamak ve çalıştırmak için aşağıdaki adımları kullanın:
GitHub'dan örnek projeyi kopyalamak için aşağıdaki komutu kullanın:
git clone https://github.com/Azure-Samples/azure-spring-apps-sso-client-credential.git -b consumption-plan
Kitaplar arka uç hizmetlerini oluşturmak için aşağıdaki komutu kullanın:
cd azure-spring-apps-sso-client-credential ./mvnw clean package
SPA proje dizinini girin ve bağımlılıkları yüklemek için aşağıdaki komutu kullanın:
npm install @azure/msal-node
3. Bulut ortamını hazırlama
Bu örneği çalıştırmak için gereken ana kaynaklar bir Azure Spring Apps örneği ve bir PostgreSQL için Azure Veritabanı örneğidir. Bu bölümde, bu kaynakları oluşturma adımları sağlanır.
3.1. Azure portalda oturum açma
Web tarayıcınızı açın ve Azure portalına gidin. Azure portalında oturum açmak için kimlik bilgilerinizi girin. Varsayılan görünüm hizmet panonuzu içerir.
3.2. Azure Spring Apps örneği oluşturma
Hizmet örneği oluşturmak için aşağıdaki adımları kullanın:
Azure portalının köşesinde kaynak oluştur'u seçin.
İşlem>Azure Spring Apps'i seçin.
Temel bilgiler formunu aşağıdaki bilgilerle doldurun:
Ayar Önerilen değer Açıklama Abonelik Abonelik adınız Sunucunuz için kullanmak istediğiniz Azure aboneliği. Birden çok aboneliğiniz varsa kaynak için faturalandırılacak aboneliği seçin. Kaynak grubu myresourcegroup Yeni bir kaynak grubu adı veya aboneliğinizde var olan bir kaynak grubu. Veri Akışı Adı myasa Azure Spring Apps hizmetinizi tanımlayan benzersiz bir ad. Ad 4 ile 32 karakter uzunluğunda olmalıdır ve yalnızca küçük harf, sayı ve kısa çizgi içerebilir. Hizmet adının ilk karakteri bir harf, son karakter ise harf veya sayı olmalıdır. Planlama Standart tüketim ve ayrılmış (önizleme) Fiyatlandırma planı, örneğinizle ilişkili kaynakları ve maliyeti belirler. Bölge Kullanıcılarınıza en yakın bölge Kullanıcılarınız için en yakın olan konum. Container Apps Ortamı myacaenv Aynı sanal ağı diğer hizmetler ve kaynaklarla paylaşmak için hangi Container Apps ortam örneğini seçin. Container Apps Ortamı oluşturmak için aşağıdaki tabloyu kılavuz olarak kullanın:
Ayar Önerilen değer Açıklama Ortam adı myacaenv Azure Container Apps Ortam hizmetinizi tanımlayan benzersiz bir ad. Planlama Tüketim Fiyatlandırma planı, örneğinizle ilişkili kaynakları ve maliyeti belirler. Bölge Yedekli Devre dışı Container Apps Ortam hizmetinizi bir Azure kullanılabilirlik alanında oluşturup oluşturmayacağınız. Önemli
Tüketim iş yükü profili, başlangıç maliyeti olmadan kullandıkça öde faturalama modeline sahiptir. Sağlanan kaynaklara göre ayrılmış iş yükü profili için faturalandırılırsınız. Daha fazla bilgi için bkz . Azure Container Apps'te Tüketim + Ayrılmış plan yapısı ortamlarındaki iş yükü profilleri (önizleme) ve Azure Spring Apps fiyatlandırması.
Seçimlerinizi gözden geçirmek için Gözden Geçir ve Oluştur'u seçin. Azure Spring Apps örneğini sağlamak için Oluştur'u seçin.
Araç çubuğunda, dağıtım sürecini izlemek için Bildirimler simgesini (zil) seçin. Dağıtım tamamlandıktan sonra Panoya sabitle'yi seçerek Azure portalı panonuzda hizmetin Genel Bakış sayfasının kısayolu olarak bu hizmet için bir kutucuk oluşturabilirsiniz. Hizmetin Genel Bakış sayfasını açmak için Kaynağa git'i seçin.
Eureka sunucusunu etkinleştirmek için aşağıdaki komutu kullanın. Yer tutucuları önceki adımda oluşturduğunuz kendi değerlerinizle değiştirdiğinizden emin olun.
az spring eureka-server enable \ --resource-group <resource-group-name> \ --name <Azure-Spring-Apps-instance-name>
3.3. Kitaplar uygulamasını kaydetme
Bu bölümde, Azure Spring Apps'te RESTful API'lerini korumak için kullanılan Microsoft Entra Id'ye uygulama rolleri eklemek için bir uygulamayı kaydetme adımları sağlanır.
Azure portalı giriş sayfasına gidin.
Birden çok kiracıya erişiminiz varsa, bir uygulamayı kaydetmek istediğiniz kiracıyı seçmek için Dizin + abonelik filtresini ( ) kullanın.
Microsoft Entra ID öğesini arayıp seçin.
Yönet'in altında Uygulama kayıtları> Yeni kayıt'ı seçin.
Ad alanına uygulamanız için kitaplar gibi bir ad girin. Uygulamanızın kullanıcıları bu adı görebilir ve daha sonra değiştirebilirsiniz.
Desteklenen hesap türleri için Yalnızca bu kuruluş dizinindeki Hesaplar'ı seçin.
Uygulamayı kaydetmek için Kaydet'i seçin.
Uygulamaya Genel Bakış sayfasında Uygulama (istemci) kimliği değerini bulun ve daha sonra kullanmak üzere kaydedin. Bu proje için YAML yapılandırma dosyasını yapılandırmak için bu dosyaya ihtiyacınız vardır.
Yönet'in altında Api'yi kullanıma sunma'yı seçin, sayfanın başında Uygulama Kimliği URI'sini bulun ve Ekle'yi seçin.
Uygulama kimliği URI'sini düzenle sayfasında, önerilen Uygulama Kimliği URI'sini (
api://{client ID}
) kabul edin veya gibiapi://books
istemci kimliği yerine anlamlı bir ad kullanın ve kaydet'i seçin.Yönet'in altında Uygulama rolleri>Uygulama rolü oluştur'u seçin ve aşağıdaki bilgileri girin:
- Görünen ad için Yazma yazın.
- İzin verilen üye türleri için Uygulamalar'ı seçin.
- Değer alanına Books.Write yazın.
- Açıklama alanına Kitap ekleme yazın.
Başka bir uygulama rolü eklemek için önceki adımı yineleyin:
Books.Read
.
3.4. SPA uygulamasını kaydetme
Books RESTful API uygulaması, Microsoft Entra Id ile korunan bir kaynak sunucusu işlevi görür. Erişim belirtecini almadan önce, başka bir uygulamayı Microsoft Entra Id'ye kaydetmeniz ve adlı SPA
istemci uygulamasına izinler vermeniz gerekir.
Microsoft Entra Id'de kiracınıza geri dönün.
Yönet'in altında Uygulama kayıtları> Yeni kayıt'ı seçin.
Ad alanına uygulamanız için bir ad girin, örneğin
SPA
.Desteklenen hesap türleri için yalnızca bu kuruluş dizinindeki varsayılan Hesapları kullanın.
Uygulamayı kaydetmek için Kaydet'i seçin.
Uygulamaya Genel Bakış sayfasında Uygulama (istemci) kimliği değerini bulun ve daha sonra kullanmak üzere kaydedin. Erişim belirteci almak için buna ihtiyacınız vardır.
API izinleri Kuruluşumun kullandığı izin>API'leri>ekle'yi seçin.
Books
Daha önce kaydettiğiniz uygulamayı seçin, Books.Read and Books.Write izinlerini seçin ve ardından İzin ekle'yi seçin.Eklediğiniz izinler için yönetici onayı vermek için Kiracı-adınız> için <yönetici onayı ver'i seçin.
Sertifikalar ve gizli diziler'e gidin ve Yeni istemci gizli dizisi'ni seçin.
İstemci gizli dizisi ekle sayfasında gizli dizi için bir açıklama girin, bir son kullanma tarihi seçin ve ardından Ekle'yi seçin.
Gizli anahtarın Değerini arayın ve daha sonra kullanmak üzere kaydedin. Erişim belirteci almak için buna ihtiyacınız vardır.
3.5. Kitaplar Hizmeti uygulamasının yapılandırmasını güncelleştirme
Uygulama için books-service
books-service/src/main/resources/application.yml dosyasını bulun. bölümündeki yapılandırmayı spring.cloud.azure.active-directory
aşağıdaki örnekle eşleşecek şekilde güncelleştirin. Yer tutucuları daha önce oluşturduğunuz değerlerle değiştirdiğinizden emin olun.
spring:
cloud:
azure:
active-directory:
credential:
client-id: <your-application-ID-of-Books>
app-id-uri: <your-application-ID-URI-of-Books>
Örnek projeyi yeniden derlemek için aşağıdaki komutu kullanın:
./mvnw clean package
4. Uygulamaları Azure Spring Apps'e dağıtma
Aşağıdaki adımlarda, uygulamaların Azure'a nasıl dağıtılacağı gösterilmektedir.
4.1. Mikro hizmet uygulamalarını Azure Spring Apps'e dağıtma
Azure Spring Apps için Maven eklentisini kullanarak uygulamaları Azure Spring Apps'e dağıtmak için aşağıdaki adımları kullanın:
Örnek proje dizinine gidin ve uygulamayı Azure Spring Apps'te yapılandırmak için aşağıdaki komutu kullanın:
./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.18.0:config
Aşağıdaki listede komut etkileşimleri açıklanmaktadır:
- Yapılandıracak alt modülleri seçin (virgülle ayrılmış giriş numaraları, örneğin: [1-2,4,6], TÜMÜNÜ seçmek için ENTER): Tümünü seçmek için Enter tuşuna basın.
- OAuth2 oturum açma: OAuth2 protokolüne göre Azure'da oturum açma yetkisi verme.
- Aboneliği seçin: Oluşturduğunuz Azure Spring Apps örneğinin abonelik listesi numarasını seçin ve varsayılan olarak listedeki ilk aboneliği seçin. Varsayılan sayıyı kullanıyorsanız doğrudan Enter tuşuna basın.
- Dağıtım için Azure Spring Apps'i seçin: Oluşturduğunuz Azure Spring Apps örneğinin liste numarasını seçin. Varsayılan sayıyı kullanıyorsanız doğrudan Enter tuşuna basın.
- Genel erişimi göstermek için uygulamaları seçin: (virgülle ayrılmış giriş numaraları, örneğin: [1-2,4,6], YOK'u seçmek için ENTER): için
gateway-service
1 girin. - Yukarıdaki tüm yapılandırmaları (Y/n) kaydetmeyi onaylayın: y girin. n girerseniz, yapılandırma POM dosyalarına kaydedilmez.
Uygulamayı dağıtmak için aşağıdaki komutu kullanın:
./mvnw azure-spring-apps:deploy
Aşağıdaki listede komut etkileşimi açıklanmaktadır:
- OAuth2 oturum açma: OAuth2 protokolüne göre Azure'da oturum açma yetkisi vermeniz gerekir.
Komut yürütüldükten sonra, dağıtımın başarılı olduğunu gösteren aşağıdaki günlük iletilerini görebilirsiniz.
[INFO] Getting public url of app(gateway-service)... [INFO] Application url: https://gateway-service.xxxxxxxxxxxxxx-xxxxxxxx.eastasia.azurecontainerapps.io ... [INFO] Artifact(books-service-0.0.1-SNAPSHOT.jar) is uploaded and deployment(default) is successfully updated. ...
Çıktı Uygulama URL'si , ToDo RESTful API uygulamasına erişmek için temel uç noktadır.
4.2. SPA uygulamasını yerel olarak çalıştırma
Spa/server.js uygulama betik dosyasındaki SPA
yapılandırmayı aşağıdaki örnekle eşleşecek şekilde güncelleştirin. Yer tutucuları önceki adımda oluşturduğunuz kendi değerlerinizle değiştirdiğinizden emin olun.
const SpringCloudGatewayURL = "<URL exposed by app gateway-service>"
const msalConfig = {
auth: {
clientId: "< SPA App Registration ClientId>",
authority: "https://login.microsoftonline.com/< TenantId >/",
clientSecret: "<SPA App Registration ClientSecret>",
},
};
const tokenRequest = {
scopes: ["<Application ID URI of Books>/.default"]
};
SPA proje dizininde, yerel olarak çalıştırmak için aşağıdaki komutu kullanın:
node server.js
Not
SPA uygulaması, herhangi bir web sunucusuna dağıtılabilen statik bir web uygulamasıdır.
5. Uygulamayı doğrulama
Kitaplar RESTful API'leri ile iletişim kuran Kitaplar SPA uygulamasına gateway-service
uygulama üzerinden erişebilirsiniz.
Uygulamaya erişmek için
http://localhost:3000
tarayıcınızda adresine gidin.Yazar ve Başlık değerlerini girin ve Kitap Ekle'yi seçin. Aşağıdaki örneğe benzer bir yanıt görürsünüz:
Book added successfully: {"id":1,"author":"Jeff Black","title":"Spring In Action"}
6. Kaynakları temizleme
Kaynak grubundaki tüm kaynakları içeren Azure kaynak grubunu silebilirsiniz. Yeni oluşturulan hizmet de dahil olmak üzere kaynak grubunun tamamını silmek için aşağıdaki adımları kullanın:
Azure portalında kaynak grubunuzu bulun.
Kaynak grupları'nı seçin ve ardından kaynak grubunuzun adını (örneğin, myresourcegroup) seçin.
Kaynak grubunuzun sayfasında Sil’i seçin. Silme işlemini onaylamak için metin kutusuna kaynak grubunuzun adını girin.
Sil'i seçin.
7. Sonraki adımlar
Daha fazla bilgi için aşağıdaki makaleleri inceleyin: