Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, Java için Azure AD B2C Spring Boot Starter istemci kitaplığını kullanarak Azure Active Directory B2C kiracınızda kullanıcıların oturum açmasını sağlayan bir Java Spring Boot web uygulamasını göstermektedir. OpenID Connect protokolunu kullanır.
Not
1 Mayıs 2025 itibarıyla Azure Active Directory B2C artık yeni müşteriler için satın alınamaz. Mevcut müşteriler, en az Mayıs 2030'a kadar sağlanan destekle Azure AD B2C'yi kullanmaya devam edebilir. Yeni müşteri kimliği ve erişim yönetimi (CIAM) projeleri için bunun yerine Microsoft Entra Dış Kimlik kullanın.
Aşağıdaki diyagramda uygulamanın topolojisi gösterilmektedir:
Uygulamanın topolojisini gösteren diyagram.
İstemci uygulaması, bir kullanıcıda oturum açmak ve Azure AD B2C'den kimlik belirteci almak için Java için Azure AD B2C Spring Boot Starter istemci kitaplığını kullanır. Kimlik belirteci, kullanıcının Azure AD B2C ile kimliğinin doğrulandığını kanıtlar ve kullanıcının korumalı yollara erişmesini sağlar.
Önkoşullar
- JDK 15 sürümü. Bu örnek Java 15 yüklü bir sistemde geliştirilmiştir, ancak diğer sürümlerle uyumlu olabilir.
- Maven 3
- Visual Studio Code için Java Uzantı Paketi, bu örneği Visual Studio Code'da çalıştırmak için önerilir.
- Azure AD B2C kiracısı. Daha fazla bilgi için bkz: Öğretici: Azure Active Directory B2C kiracısı oluşturma
- Visual Studio Code
- Visual Studio Code için Azure Araçları
Öneriler
- Spring Framework hakkında biraz aşinalık.
- Linux/OSX terminali hakkında biraz bilgi.
- Belirteçlerinizi incelemek için jwt.ms.
- Ağ etkinliğinizi izlemek ve sorun gidermek için Fiddler.
- En son gelişmelerden haberdar olmak için Microsoft Entra Blogu'nu takip edin.
Örneği kurun
Aşağıdaki bölümlerde örnek uygulamanın nasıl ayarlanacağı gösterilmektedir.
Örnek depoyu kopyalama veya indirme
Örneği kopyalamak için bir Bash penceresi açın ve aşağıdaki komutu kullanın:
git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 4-spring-web-app/1-Authentication/sign-in-b2c
Alternatif olarak, ms-identity-msal-java-samples deposuna gidin, ardından .zip dosyası olarak indirin ve sabit sürücünüze ayıklayın.
Önemli
Windows'ta dosya yolu uzunluğu sınırlamalarını önlemek için depoyu sabit sürücünüzün köküne yakın bir dizine kopyalayın veya ayıklayın.
Bu örnek, tanıtım amacıyla önceden kayıtlı bir uygulamayla birlikte gelir. Kendi Azure AD B2C kiracınızı ve uygulamanızı kullanmak istiyorsanız uygulamayı Azure portalında kaydedin ve yapılandırın. Daha fazla bilgi için Uygulamayı kaydetme bölümüne bakın. Aksi takdirde, Örneği çalıştırma bölümündeki adımları izleyin.
Uygulamalarınızı oluşturmak istediğiniz Azure AD B2C kiracısını seçin
Kiracınızı seçmek için aşağıdaki adımları kullanın:
Azure Portal’ında oturum açın.
Hesabınız birden fazla Azure AD B2C kiracısında mevcutsa, Azure portalının köşesinde profilinizi seçin ve ardından Dizini değiştir'i seçerek oturumunuzu istediğiniz Azure AD B2C kiracısına değiştirin.
Kullanıcı akışları ve özel ilkeler oluşturma
Kayıt olma, oturum açma, profil düzenleme ve parola sıfırlama gibi yaygın kullanıcı akışları oluşturmak için bkz. Öğretici: Azure Active Directory B2C'de kullanıcı akışları oluşturma.
Azure Active Directory B2C'de de özel ilkeler oluşturmayı düşünmelisiniz. Ancak, bu görev bu öğreticinin kapsamının dışındadır. Daha fazla bilgi için bkz. Azure AD B2C özel ilkesine genel bakış.
Dış kimlik sağlayıcıları ekleme
Bkz. Öğretici: Azure Active Directory B2C'de uygulamalarınıza kimlik sağlayıcıları ekleme.
Uygulamayı kaydedin (java-spring-webapp-auth-b2c)
Uygulamayı kaydetmek için aşağıdaki adımları kullanın:
Gezinti bölmesinde Uygulama Kayıtları'nı ve ardından Yeni kayıt'ı seçin.
Görüntülenen Uygulamayı kaydet sayfasında aşağıdaki uygulama kayıt bilgilerini girin:
- Name bölümünde, uygulama kullanıcılarına görüntülenecek anlamlı bir uygulama adı girin - örneğin, .
- Desteklenen hesap türleri altında, herhangi bir kimlik sağlayıcısı veya kuruluş dizinindeki hesaplar (Kullanıcı akışı olan kullanıcıların kimliklerini doğrulamak için) seçeneğini belirleyin.
- Yeniden Yönlendirme URI’si (isteğe bağlı) bölümünde, açılır kutudan Web seçeneğini belirleyin ve aşağıdaki yeniden yönlendirme URI’sini girin: .
Uygulamayı kaydetmek için Kaydet'i seçin.
Uygulamanın kayıt sayfasında, daha sonra kullanmak üzere Uygulama (istemci) kimliği değerini bulun ve kopyalayın. Bu değeri uygulamanızın yapılandırma dosyasında veya dosyalarında kullanırsınız.
Yaptığınız değişiklikleri kaydetmek için Kaydet'i seçin.
Uygulamanın kayıt sayfasında, gizli diziler oluşturabileceğiniz ve sertifikaları karşıya yükleyebileceğiniz sayfayı açmak için gezinti bölmesinde Sertifikalar ve gizli diziler bölmesini seçin.
Gizli anahtarlar bölümünün altında, Yeni gizli anahtar'ı seçin.
Bir açıklama yazın - örneğin, app secret.
Sır için bir son kullanma tarihi seçin veya özel bir geçerlilik süresi belirtin. İstemci gizli anahtarları en fazla 24 aylık bir geçerlilik süresiyle sınırlıdır ve Microsoft, 12 aydan kısa bir sona erme süresi önerir. Üretim uygulamaları için istemci parolası yerine sertifika veya federe kimlik bilgisi tercih edin.
Ekle'yi seçin. Oluşturulan değer görüntülenir.
Oluşturulan değeri kopyalayıp sonraki adımlarda kullanmak üzere kaydedin. Kodunuzun yapılandırma dosyaları için bu değere ihtiyacınız vardır. Bu değer yeniden görüntülenmez ve başka bir yolla alamazsınız. Bu nedenle, başka bir ekrana veya bölmeye gitmeden önce Azure portalından kaydettiğinizden emin olun.
Uygulamayı (java-spring-webapp-auth-b2c) uygulama kaydınızı kullanacak şekilde yapılandırma
Uygulamayı yapılandırmak için aşağıdaki adımları kullanın:
Not
Aşağıdaki adımlarda, , veya ile aynıdır.
Projeyi IDE'nizde açın.
src/main/resources/application.yml dosyasını açın.
özelliğini bulun ve mevcut değeri, Azure portalındaki uygulamasının uygulama kimliği veya değeriyle değiştirin.
özelliğini bulun ve mevcut değeri, Azure portalında uygulamasını oluştururken kaydettiğiniz değerle değiştirin.
özelliğini bulun ve değerinin geçtiği iki yeri, Azure portalında uygulamasını oluşturduğunuz Azure AD B2C kiracısının adıyla değiştirin.
özelliğini bulun ve bunu, Azure portalında uygulamasını oluşturduğunuz Azure AD B2C kiracısında oluşturduğunuz kaydolma/oturum açma kullanıcı akışı ilkesinin adıyla değiştirin.
özelliğini bulun ve bunu, Azure portalında uygulamasını oluşturduğunuz Azure AD B2C kiracısında oluşturduğunuz parola sıfırlama kullanıcı akışı ilkesinin adıyla değiştirin.
özelliğini bulun ve Azure portalında uygulamasını oluşturduğunuz Azure AD B2C kiracısında oluşturduğunuz profil düzenleme kullanıcı akışı ilkesinin adıyla değiştirin.
src/main/resources/templates/navbar.html dosyasını açın.
ve akışlarına yapılan başvuruları bulun ve bunları ile kullanıcı akışlarınızla değiştirin.
Örneği çalıştırma
- Azure Container Apps’e Dağıtma
- Yerel olarak çalıştır
Aşağıdaki bölümlerde, örneğin Azure Container Apps'e nasıl dağıtılacağı gösterilmektedir.
Önkoşullar
- Azure hesabı. Henüz bir hesabınız yoksa, ücretsiz bir hesap oluşturun. Devam etmek için Azure aboneliğinde
ContributorveyaOwneriznine ihtiyacınız vardır. Daha fazla bilgi için Azure rollerini Azure portalını kullanarak atama bölümüne bakın. - Azure CLI.
- Azure Container Apps CLI uzantısı, veya sonraki bir sürüm. En son sürümü yüklemek için komutunu kullanın.
- Java Development Kit, 17 veya üzeri sürüm.
- Maven.
Spring projesini hazırlama
Projeyi hazırlamak için aşağıdaki adımları kullanın:
Projeyi derlemek için aşağıdaki Maven komutunu kullanın:
mvn clean verifyAşağıdaki komutu kullanarak örnek projeyi yerel olarak çalıştırın:
mvn spring-boot:run
Ayarlama
CLI'dan Azure'da oturum açmak için aşağıdaki komutu çalıştırın ve istemleri izleyerek kimlik doğrulama işlemini tamamlayın.
az login
CLI'nın en son sürümünü çalıştırdığınızdan emin olmak için yükseltme komutunu çalıştırın.
az upgrade
Ardından CLI için Azure Container Apps uzantısını yükleyin veya güncelleştirin.
Azure CLI'da komutlarını çalıştırdığınızda eksik parametre hataları alırsanız, Azure Container Apps uzantısının en son sürümünün yüklü olduğundan emin olun.
az extension add --name containerapp --upgrade
Not
Mayıs 2024'den itibaren Azure CLI uzantıları artık önizleme özelliklerini varsayılan olarak etkinleştirmez. Container Apps önizleme özelliklerine erişmek için ile Container Apps uzantısını yükleyin.
az extension add --name containerapp --upgrade --allow-preview true
Artık mevcut uzantı veya modül yüklendiğine göre, ve ad alanlarını kaydedin.
Not
Azure Container Apps kaynakları, ad alanından ad alanına taşınmıştır. Daha fazla ayrıntı için Mart 2022'de Microsoft.Web'den Microsoft.App'e ad alanı geçişi bölümüne bakın.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Azure Container Apps ortamını oluşturma
Azure CLI kurulumunuz tamamlandıktan sonra bu makalenin tamamında kullanılan ortam değişkenlerini tanımlayabilirsiniz.
Bash kabuğunuzda aşağıdaki değişkenleri tanımlayın.
export RESOURCE_GROUP="ms-identity-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-ms-identity-containerapps"
export API_NAME="ms-identity-api"
export JAR_FILE_PATH_AND_NAME="./target/ms-identity-spring-boot-webapp-0.0.1-SNAPSHOT.jar"
Kaynak grubu oluşturun.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION \
Otomatik olarak oluşturulan log analytics çalışma alanıyla bir ortam oluşturun.
az containerapp env create \
--name $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location $LOCATION
Kapsayıcı uygulaması ortamının varsayılan etki alanını gösterin. Sonraki bölümlerde kullanmak için bu etki alanını not edin.
az containerapp env show \
--name $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--query properties.defaultDomain
Uygulamayı dağıtım için hazırlama
Uygulamanızı Azure Container Apps'e dağıttığınızda, yeniden yönlendirme URL'niz Azure Container Apps'te dağıtılan uygulama örneğinizin yeniden yönlendirme URL'sine dönüşür. application.yml dosyanızdaki bu ayarları değiştirmek için aşağıdaki adımları kullanın:
Aşağıdaki örnekte gösterildiği gibi, uygulamanızın src\main\resources\application.yml dosyasına gidin ve değerini dağıtılan uygulamanızın etki alanı adıyla değiştirin. ve öğelerini gerçek değerlerinizle değiştirdiğinizden emin olun. Örneğin, önceki adımdaki Azure Container App ortamınız için varsayılan etki alanı ve uygulama adınız için ile, değeri olarak kullanırsınız.
post-logout-redirect-uri: https://<API_NAME>.<default-domain-of-container-app-environment>Bu dosyayı kaydettikten sonra uygulamanızı yeniden derlemek için aşağıdaki komutu kullanın:
mvn clean package
Önemli
Uygulamanın application.yml dosyası şu anda istemci sırrınızın değerini parametresinde içeriyor. Bu değeri bu dosyada tutmak iyi bir uygulama değildir. Dosyayı bir Git deposuna işlerseniz de risk alıyor olabilirsiniz. Önerilen yaklaşım için bkz. Azure Container Apps'te gizli bilgileri yönetme.
Microsoft Entra ID uygulama kaydınızı güncelleştirme
Azure Container Apps'te yeniden yönlendirme URI'si dağıtılan uygulamanızda değiştiğinden, Microsoft Entra Id uygulama kaydınızda yeniden yönlendirme URI'sini de değiştirmeniz gerekir. Bu değişikliği yapmak için aşağıdaki adımları kullanın:
Geliştiriciler için Microsoft kimlik platformundaki Uygulama kayıtları sayfasına gidin.
Uygulama kaydınızı aramak için arama kutusunu kullanın - örneğin, .
Adını seçerek uygulama kaydınızı açın.
Menüden Kimlik Doğrulaması'nı seçin.
WebYeniden Yönlendirme URI'leri bölümünde URI Ekle seçeneğini belirleyin.
Uygulamanızın URI’sini girin ve sonuna ekleyin; örneğin, .
Kaydet'i seçin.
Uygulamayı yayınla
JAR paketini Azure Container Apps'e dağıtın.
Not
Gerekirse Java derleme ortamı değişkenlerinde JDK sürümünü belirtebilirsiniz. Daha fazla bilgi için bkz. Azure Container Apps'te Java için oluşturma ortamı değişkenleri.
Artık WAR dosyanızın dağıtımını CLI komutuyla yapabilirsiniz.
az containerapp up \
--name $API_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--environment $ENVIRONMENT \
--artifact <JAR_FILE_PATH_AND_NAME> \
--ingress external \
--target-port 8080 \
--query properties.configuration.ingress.fqdn
Not
Varsayılan JDK sürümü 17'dir. Uygulamanızla uyumluluk sağlamak için JDK sürümünü değiştirmeniz gerekiyorsa, sürüm numarasını ayarlamak üzere argümanını kullanabilirsiniz.
Daha fazla derleme ortamı değişkeni için bkz. Azure Container Apps'te Java için derleme ortamı değişkenleri.
Uygulamayı doğrulama
Bu örnekte, komutu, uygulamanın URL’si olarak da bilinen tam etki alanı adını (FQDN) döndüren bağımsız değişkenini içerir. Herhangi bir dağıtım sorununu araştırmak üzere uygulamanın günlüklerini denetlemek için aşağıdaki adımları kullanın:
Dağıtım bölümünün Çıkışlar sayfasından çıkış uygulaması URL'sine erişin.
Azure Container Apps örneğinin Genel Bakış sayfasındaki gezinti bölmesinden, uygulamanın günlüklerini kontrol etmek için Günlükler'i seçin.
Örneği keşfedin
Örneği keşfetmek için aşağıdaki adımları kullanın:
- Ekranın ortasında oturum açma veya oturum kapatma durumunun görüntülendiğine dikkat edin.
- Köşedeki bağlama duyarlı düğmeyi seçin. Bu düğmenin üzerinde, uygulamayı ilk kez çalıştırdığınızda Oturum Aç yazar. Alternatif olarak, belirteç ayrıntıları bağlantısını seçin. Bu sayfa korumalı olduğundan ve kimlik doğrulaması gerektirdiğinden, otomatik olarak oturum açma sayfasına yönlendirilirsiniz.
- Sonraki sayfada yönergeleri izleyin ve seçtiğiniz kimlik sağlayıcısının bir hesabıyla oturum açın. E-posta adresi kullanarak B2C kiracısında yerel bir hesaba kaydolmayı veya oturum açmayı da seçebilirsiniz.
- Oturum açma akışını başarıyla tamamladıktan sonra, oturum açma akışınızı tetikleyen düğmeye bağlı olarak oturum açma durumunu gösteren giriş sayfasına veya belirteç ayrıntıları sayfasına yönlendirilmelisiniz.
- Bağlama duyarlı düğmenin artık Oturumu kapat yazdığını ve kullanıcı adınızı görüntülediğini fark edin.
- Ana sayfadaysanız, kimlik belirtecinin çözümlenmiş istemlerinden bazılarını görmek için Kimlik Belirteci Ayrıntıları'nı seçin.
- Profilinizi düzenleyin. Görünen adınız, ikamet yeriniz ve mesleğiniz gibi ayrıntıları değiştirmek için profili düzenle'yi seçin.
- Oturumu kapatmak için köşedeki düğmeyi kullanın. Durum sayfası yeni durumu yansıtır.
Kod hakkında
Bu örnek, kullanıcıların Azure AD B2C kiracınızda oturum açmasını sağlamak için Java için Azure AD B2C Spring Boot Starter istemci kitaplığının nasıl kullanılacağını gösterir. Örnek ayrıca Spring Oauth2 İstemcisi ve Spring Web önyükleme başlatıcılarını da kullanır. Örnek, oturum açmış kullanıcının ayrıntılarını görüntülemek için Azure AD B2C'den alınan kimlik belirtecinden gelen talepleri kullanır.
İçindekiler
Aşağıdaki tabloda örnek proje klasörünün içeriği gösterilmektedir:
| Dosya/klasör | Açıklama |
|---|---|
| pom.xml | Uygulama bağımlılıkları. |
| src/main/resources/templates/ | Kullanıcı Arayüzü için Thymeleaf Şablonları. |
| src/main/resources/application.yml | Uygulama ve Microsoft Entra Boot Starter kitaplık yapılandırması. |
| src/main/java/com/microsoft/azuresamples/msal4j/msidentityspringbootwebapp/ | Bu dizin ana uygulama giriş noktasını, denetleyiciyi ve yapılandırma sınıflarını içerir. |
| .../MsIdentitySpringBootWebappApplication.java | Ana sınıf. |
| .../SampleController.java | Uç nokta eşlemeleri olan denetleyici. |
| .../SecurityConfig.java | Güvenlik yapılandırması - örneğin, hangi yolların kimlik doğrulaması gerektirdiği. |
| .../Utilities.java | Yardımcı sınıf - örneğin, kimlik belirteci claim'lerini filtrelemek için. |
| CHANGELOG.md | Örnekteki değişikliklerin listesi. |
| CONTRIBUTING.md | Örneğe katkıda bulunma yönergeleri. |
| LİSANS | Örnek için lisans. |
Kimlik belirteci iddiaları
Belirteç ayrıntılarını ayıklamak için uygulama, aşağıdaki örnekte gösterildiği gibi, aşağıdaki örnekte gösterildiği gibi bir istek eşlemesinde Spring Security'nin ve nesnelerini kullanır. Örnek Denetleyici'ne, bu uygulamanın ID belirteci claim’lerini nasıl kullandığına ilişkin tüm ayrıntılar için bakın.
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
//...
@GetMapping(path = "/some_path")
public String tokenDetails(@AuthenticationPrincipal OidcUser principal) {
Map<String, Object> claims = principal.getIdToken().getClaims();
}
Oturum açma ve oturum kapatma bağlantıları
Oturum açmak için uygulama, aşağıdaki örnekte gösterildiği gibi Java için Azure AD B2C Spring Boot Starter istemci kitaplığı tarafından otomatik olarak yapılandırılan Azure AD B2C oturum açma uç noktasına bir istekte bulunur:
<a class="btn btn-success" href="/oauth2/authorization/{your-sign-up-sign-in-user-flow}">Sign In</a>
Oturumu kapatmak için uygulama, aşağıdaki örnekte gösterildiği gibi uç noktasına bir POST isteği gönderir:
<form action="#" th:action="@{/logout}" method="post">
<input class="btn btn-warning" type="submit" value="Sign Out" />
</form>
Kimlik doğrulamasına bağımlı kullanıcı arabirimi öğeleri
Uygulamanın kullanıcı arabirimi şablonu sayfalarında, Spring Security Thymeleaf etiketlerini kullanan aşağıdaki örnekte gösterildiği gibi, kullanıcının kimliğinin doğrulanıp doğrulanmadığına göre görüntülenecek içeriği belirlemek için bazı basit mantık vardır:
<div sec:authorize="isAuthenticated()">
this content only shows to authenticated users
</div>
<div sec:authorize="isAnonymous()">
this content only shows to not-authenticated users
</div>
WebSecurityConfigurerAdapter ile yolları koruma
Varsayılan olarak, uygulama kimlik belirteci ayrıntıları sayfasını yalnızca oturum açmış kullanıcıların erişebilmesi için korur. Uygulama, bu rotaları application.yml dosyasındaki özelliğinden yapılandırır. Uygulamanızın özel gereksinimlerini yapılandırmak için, sınıflarınızdan birinde sınıfını devralabilirsiniz. Örnek olarak, aşağıdaki kodda gösterilen bu uygulamanın SecurityConfig sınıfına bakın:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Value("${app.protect.authenticated}")
private String[] protectedRoutes;
private final AADB2COidcLoginConfigurer configurer;
public SecurityConfig(AADB2COidcLoginConfigurer configurer) {
this.configurer = configurer;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http.authorizeRequests()
.antMatchers(protectedRoutes).authenticated() // limit these pages to authenticated users (default: /token_details)
.antMatchers("/**").permitAll() // allow all other routes.
.and()
.apply(configurer)
;
// @formatter:off
}
}
Daha Fazla Bilgi
- Microsoft kimlik platformu (geliştiriciler için Microsoft Entra ID)
- Microsoft Authentication Library (MSAL) genel bakış
- Hızlı başlangıç: Microsoft kimlik platformunda bir uygulama kaydetme
- Hızlı başlangıç: Web API'lerine erişmek için bir istemci uygulamasını yapılandırma
- Microsoft Entra ID uygulama onay deneyimini anlama
- Kullanıcı ve yönetici onayını anlayın
- Microsoft Entra ID'de uygulama ve hizmet sorumlusu nesneleri
- Ulusal Bulutlar
- MSAL kod örnekleri
- Java için Microsoft Entra ID Spring Boot Starter istemci kitaplığı
- Java için Azure Active Directory B2C Spring Boot Starter istemci kitaplığı
- Java için Microsoft Kimlik Doğrulama Kitaplığı (MSAL4J)
- MSAL4J Vikisi
- Kimlik belirteçleri
- Microsoft kimlik platformundaki erişim belirteçleri
OAuth 2.0 protokollerinin bu senaryoda ve diğer senaryolarda nasıl çalıştığı hakkında daha fazla bilgi için bkz. Microsoft Entra ID için Kimlik Doğrulama Senaryoları.