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 örnek, kullanıcıların Java için Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) kullanarak Microsoft Entra ID kiracınızda oturum açmasını sağlayan bir Java WebSphere uygulamasını gösterir.
Aşağıdaki diyagramda uygulamanın topolojisi gösterilmektedir:
Uygulamanın topolojisini gösteren diyagram.
İstemci uygulaması, kullanıcıların kendi Microsoft Entra ID kiracılarında oturum açmasını sağlamak ve Microsoft Entra ID'den bir kimlik belirteci almak için Java için MSAL'ı (MSAL4J) kullanır. Kimlik belirteci, bir kullanıcının bu kiracıyla kimliğinin doğrulandığını kanıtlar. Uygulama, kullanıcının kimlik doğrulama durumuna göre yollarını korur.
Önkoşullar
- JDK sürümü 8 veya üzeri
- Maven 3
- Microsoft Entra ID kiracısı. Daha fazla bilgi için bkz. Microsoft Entra ID kiracısı edinme.
- Yalnızca kuruluş dizininizdeki, yani tek kiracılı moddaki hesaplarla çalışmak istiyorsanız, kendi Microsoft Entra ID kiracınızdaki bir kullanıcı hesabı. Microsoft Entra Id kiracınızda bir kullanıcı hesabı oluşturmadıysanız devam etmeden önce bunu yapmanız gerekir. Daha fazla bilgi için bkz. Kullanıcı oluşturma, davet etme ve silme.
- Herhangi bir kuruluş dizinindeki (yani çok kiracılı modda) hesaplarla çalışmak istiyorsanız, herhangi bir kuruluşun Microsoft Entra ID kiracısında bir kullanıcı hesabı. Bu örneği kişisel bir Microsoft hesabıyla çalışacak şekilde değiştirmeniz gerekir. Microsoft Entra Id kiracınızda henüz bir kullanıcı hesabı oluşturmadıysanız, devam etmeden önce bunu yapmalısınız. Daha fazla bilgi için bkz. Kullanıcı oluşturma, davet etme ve silme.
- Kişisel Microsoft hesaplarıyla çalışmak istiyorsanız kişisel bir Microsoft hesabı (örneğin, Xbox, Hotmail, Live vb.).
- WebSphere
- Visual Studio Code
- Visual Studio Code için Azure Araçları
Öneriler
- Java / Jakarta Servlet’leri hakkında biraz bilgi sahibi olmak.
- 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 3-java-servlet-web-app/1-Authentication/sign-in
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.
Örnek uygulamayı Microsoft Entra ID kiracınıza kaydedin
Bu örnekte bir proje var. Bu bölüm, uygulamanın nasıl kaydedileceğini gösterir.
İlk olarak, Hızlı başlangıç: Microsoft kimlik platformu ile bir uygulama kaydetme bölümündeki yönergeleri izleyerek uygulamayı Azure portalında kaydedin.
Ardından kaydı tamamlamak için aşağıdaki adımları kullanın:
Geliştiriciler için Microsoft kimlik platformundaki Uygulama kayıtları sayfasına gidin.
Yeni kayıt öğesini seçin.
Görüntülenen Uygulamayı kaydet sayfasında aşağıdaki uygulama kayıt bilgilerini girin:
Ad bölümünde, uygulamanın kullanıcılarına gösterilecek anlamlı bir uygulama adı girin - örneğin, .
Desteklenen hesap türleri'nin altında aşağıdaki seçeneklerden birini belirleyin:
- Yalnızca kiracınızdaki kullanıcıların kullanacağı bir uygulama, yani tek kiracılı bir uygulama oluşturuyorsanız yalnızca bu kuruluş dizinindeki hesaplar seçeneğini belirleyin.
- Uygulamanızı herhangi bir Microsoft Entra ID kiracısındaki kullanıcıların kullanabilmesini istiyorsanız, yani çok kiracılı bir uygulama istiyorsanız, Herhangi bir kuruluş dizinindeki hesaplar seçeneğini belirleyin.
- En geniş müşteri kitlesi için, yani Microsoft kişisel hesaplarını da destekleyen çok kiracılı bir uygulama için Herhangi bir kuruluş dizinindeki hesaplar ve kişisel Microsoft hesapları seçeneğini belirleyin.
- Yalnızca hotmail, Live, Skype ve Xbox hesapları gibi kişisel Microsoft hesaplarının kullanıcıları tarafından kullanılmak üzere Kişisel Microsoft hesapları'nı seçin.
Yeniden Yönlendirme URI’si 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.
Uygulamanın kayıt sayfasında, gizli diziler oluşturabileceğiniz ve sertifikaları yükleyebileceğiniz sayfayı açmak için gezinti bölmesinde Certificates & secrets seçeneğini belirleyin.
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ı 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/authentication.properties dosyasını açın.
dizesini bulun. Mevcut değeri aşağıdaki değerlerden biriyle değiştirin:
- Uygulamanızı yalnızca bu kuruluş dizinindeki Hesaplar seçeneğiyle kaydettiyseniz Microsoft Entra ID kiracı kimliğiniz.
- sözcüğü, uygulamanızı herhangi bir kuruluş dizinindeki Hesaplar seçeneğiyle kaydettiyseniz.
- Uygulamanızı Herhangi bir kuruluş dizinindeki hesaplar ve kişisel Microsoft hesapları seçeneğiyle kaydettiyseniz sözcüğü.
- sözcüğü, uygulamanızı Personal Microsoft accounts seçeneğiyle kaydettiyseniz.
dizesini bulun ve mevcut değeri, Azure portalından kopyalanan uygulamasının uygulama kimliği veya değeriyle değiştirin.
dizesini bulun ve mevcut değeri Azure portalında uygulamasını oluştururken kaydettiğiniz değerle değiştirin.
Örneği oluşturma
Örneği Maven kullanarak derlemek için, örneğe ait pom.xml dosyasını içeren dizine gidin ve ardından aşağıdaki komutu çalıştırın:
mvn clean package
Bu komut, çeşitli uygulama sunucularında çalıştırabileceğiniz bir .war dosyası oluşturur.
Örneği çalıştırma
Bu yönergeler, WebSphere yüklediğinizi ve bir sunucu ayarladığınızı varsayar. Temel bir sunucu kurulumu için Azure Sanal Makinelerinde WebSphere Application Server (geleneksel) kümesini dağıtma bölümündeki yönergeleri kullanabilirsiniz.
WebSphere’e dağıtmadan önce, örneğin içinde bazı yapılandırma değişiklikleri yapmak ve ardından paketi derlemek veya yeniden derlemek için aşağıdaki adımları izleyin:
Uygulamanızın authentication.properties dosyasına gidin ve değerini, aşağıdaki örnekte gösterildiği gibi, kullanmayı planladığınız sunucu URL’si ve bağlantı noktası numarası olarak değiştirin:
# app.homePage is by default set to dev server address and app context path on the server # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net app.homePage=https://<server-url>:<port-number>/msal4j-servlet-auth/Bu dosyayı kaydettikten sonra uygulamanızı yeniden derlemek için aşağıdaki komutu kullanın:
mvn clean packageKod derledikten sonra .war dosyasını hedef sunucunuzun dosya sistemine kopyalayın.
Ayrıca Azure uygulama kaydında da aynı değişikliği yapmanız gerekir; burada Bunu Azure portalında Kimlik Doğrulaması sekmesindeki Yeniden Yönlendirme URI değeriyle ayarlayabilirsiniz.
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 /auth/redirect ekleyin; örneğin, .
Kaydet'i seçin.
WebSphere'in Tümleşik Çözümler Konsolu'nu kullanarak örneği dağıtmak için aşağıdaki adımları kullanın:
Uygulamalar sekmesinde Yeni Uygulama'yı ve ardından Yeni Kurumsal Uygulama'yı seçin.
Oluşturduğunuz .war dosyasını seçin, ardından Web modülleri için bağlam köklerini eşleme kurulum adımına gelene kadar Next seçeneğini belirleyin. Diğer varsayılan ayarlar iyi olmalıdır.
Bağlam kökünü, örnek yapılandırma/Azure uygulama kaydında ayarladığınız 'Redirect URI'de port numarasından sonra gelen değerle aynı olacak şekilde ayarlayın. Yani, yeniden yönlendirme URI’si ise bağlam kökü olmalıdır.
Bitir'i seçin.
Uygulamanın yüklenmesi tamamlandıktan sonra, Uygulamalar sekmesinin WebSphere kurumsal uygulamaları bölümüne gidin.
Uygulama listesinden yüklediğiniz .war dosyasını seçin ve ardından dağıtmak için Başlat'ı seçin.
Dağıtım tamamlandıktan sonra konumuna gidin; uygulamayı görebilmeniz gerekir.
Ö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.
- Sonraki sayfada yönergeleri izleyin ve Microsoft Entra Id kiracısında bir hesapla oturum açın.
- Onay ekranında, istenen kapsamlara dikkat edin.
- Bağlama duyarlı düğmenin artık Oturumu kapat yazdığını ve kullanıcı adınızı görüntülediğini fark edin.
- ID belirtecinin çözümlenmiş claim’lerinden bazılarını görmek için ID Token Details seçeneğini belirleyin.
- Oturumu kapatmak için köşedeki düğmeyi kullanın.
- Oturumu kapattıktan sonra, kullanıcının yetkili olmadığı durumda uygulamanın ID belirteci claim’leri yerine hatasını görüntülediğini gözlemlemek için ID Token Details seçeneğini belirleyin.
Kod hakkında
Bu örnek, kullanıcıların Microsoft Entra ID kiracınızda oturum açması için Java için MSAL'nin (MSAL4J) nasıl kullanılacağını gösterir. MSAL4J'yi kendi uygulamalarınızda kullanmak istiyorsanız Maven kullanarak projelerinize eklemeniz gerekir.
Bu örneğin davranışını çoğaltmak istiyorsanız, src/main/java/com/microsoft/azuresamples/msal4j klasöründeki pom.xml dosyasını ve yardımcı ve authservlets klasörlerinin içeriğini kopyalayabilirsiniz. Authentication.properties dosyasına da ihtiyacınız vardır. Bu sınıflar ve dosyalar, çok çeşitli uygulamalarda kullanabileceğiniz genel kodlar içerir. Örneğin geri kalanını da kopyalayabilirsiniz, ancak diğer sınıflar ve dosyalar bu örneğin amacını ele almak için özel olarak oluşturulur.
İçindekiler
Aşağıdaki tabloda örnek proje klasörünün içeriği gösterilmektedir:
| Dosya/klasör | Açıklama |
|---|---|
| src/main/java/com/microsoft/azuresamples/msal4j/authwebapp/ | Bu dizin, uygulamanın arka uç iş mantığını tanımlayan sınıfları içerir. |
| src/main/java/com/microsoft/azuresamples/msal4j/authservlets/ | Bu dizin, oturum açma ve oturumu kapatma uç noktaları için kullanılan sınıfları içerir. |
| *Servlet.java | Kullanılabilir tüm uç noktalar, adları Servletile biten Java sınıflarında tanımlanır. |
| src/main/java/com/microsoft/azuresamples/msal4j/helpers/ | Kimlik doğrulaması için yardımcı sınıflar. |
| AuthenticationFilter.java | Kimliği doğrulanmamış istekleri korumalı uç noktalara 401 sayfasına yönlendirir. |
| src/main/resources/authentication.properties | Microsoft Entra ID ve program yapılandırması. |
| src/main/webapp/ | Bu dizin kullanıcı arabirimini içerir - JSP şablonları |
| CHANGELOG.md | Örnekteki değişikliklerin listesi. |
| CONTRIBUTING.md | Örneğe katkıda bulunma yönergeleri. |
| LİSANS | Örnek için lisans. |
ConfidentialClientApplication
Aşağıdaki örnekte gösterildiği gibi, AuthHelper.java dosyasında bir örneği oluşturulur. Bu nesne, Microsoft Entra Id yetkilendirme URL'sini oluşturmaya ve ayrıca bir erişim belirteci için kimlik doğrulama belirtecinin değişimine yardımcı olur.
// getConfidentialClientInstance method
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
.builder(CLIENT_ID, secret)
.authority(AUTHORITY)
.build();
Örnek oluşturma için aşağıdaki parametreler kullanılır:
- Uygulamanın istemci kimliği.
- Gizli İstemci Uygulamaları için gerekli olan istemci sırrı.
- Microsoft Entra ID kiracı kimliğinizi içeren Microsoft Entra ID Yetkilisi.
Bu örnekte, bu değerler Config.java dosyasındaki bir özellik okuyucu kullanılarak authentication.properties dosyasından okunur.
Adım adım gözden geçirme
Aşağıdaki adımlar, uygulamanın işlevselliğine ilişkin bir kılavuz sağlar:
Oturum açma işleminin ilk adımı, Microsoft Entra ID kiracınızdaki uç noktasına bir istek göndermektir. MSAL4J örneği, bir yetkilendirme isteği URL'si oluşturmak için kullanılır. Uygulama, tarayıcıyı kullanıcının oturum açtığı bu URL'ye yönlendirir.
final ConfidentialClientApplication client = getConfidentialClientInstance(); AuthorizationRequestUrlParameters parameters = AuthorizationRequestUrlParameters.builder(Config.REDIRECT_URI, Collections.singleton(Config.SCOPES)) .responseMode(ResponseMode.QUERY).prompt(Prompt.SELECT_ACCOUNT).state(state).nonce(nonce).build(); final String authorizeUrl = client.getAuthorizationRequestUrl(parameters).toString(); contextAdapter.redirectUser(authorizeUrl);Aşağıdaki listede bu kodun özellikleri açıklanmaktadır:
: bir AuthorizationRequestUrl oluşturmak için ayarlanması gereken parametreler.
: Microsoft Entra ID'nin, kullanıcı kimlik bilgilerini aldıktan sonra tarayıcıyı yetkilendirme koduyla birlikte yönlendirdiği yer. Azure portal içindeki Microsoft Entra ID uygulama kaydındaki yeniden yönlendirme URI'si ile eşleşmelidir.
: Kapsamlar, uygulama tarafından istenen izinlerdir. Normalde, kimlik belirteci yanıtı almak için üç kapsam yeterlidir.
Uygulama tarafından istenen kapsamların tam listesini authentication.properties dosyasında bulabilirsiniz. gibi daha fazla kapsam ekleyebilirsiniz.
Kullanıcıya Microsoft Entra Id tarafından bir oturum açma istemi sunulur. Oturum açma girişimi başarılı olursa, kullanıcının tarayıcısı uygulamanın yeniden yönlendirme uç noktasına yönlendirilir. Bu uç noktaya yapılan geçerli bir istek, bir yetkilendirme kodu içerir.
örneği daha sonra bu yetkilendirme kodu karşılığında Microsoft Entra ID'den bir kimlik belirteci ve erişim belirteci alır.
// First, validate the state, then parse any error codes in response, then extract the authCode. Then: // build the auth code params: final AuthorizationCodeParameters authParams = AuthorizationCodeParameters .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES)).build(); // Get a client instance and leverage it to acquire the token: final ConfidentialClientApplication client = AuthHelper.getConfidentialClientInstance(); final IAuthenticationResult result = client.acquireToken(authParams).get();Aşağıdaki listede bu kodun özellikleri açıklanmaktadır:
- : Kimlik belirteci ve/veya erişim belirteci almak için Yetkilendirme Kodunu kullanmak üzere ayarlanması gereken parametreler.
- : Yeniden yönlendirme uç noktasında alınan yetkilendirme kodu.
- : Önceki adımda kullanılan yönlendirme URI’si yeniden iletilmelidir.
- : Önceki adımda kullanılan kapsamlar tekrar iletilmelidir.
başarılı olursa, belirteç talepleri ayıklanır. Nonce denetimi başarılı olursa, sonuçlar örneği olan içine yerleştirilir ve oturuma kaydedilir. Uygulama daha sonra, aşağıdaki kodda gösterildiği gibi, ne zaman erişmesi gerekirse örneği aracılığıyla oturumdan örneğini oluşturabilir.
// parse IdToken claims from the IAuthenticationResult: // (the next step - validateNonce - requires parsed claims) context.setIdTokenClaims(result.idToken()); // if nonce is invalid, stop immediately! this could be a token replay! // if validation fails, throws exception and cancels auth: validateNonce(context); // set user to authenticated: context.setAuthResult(result, client.tokenCache().serialize());
Yolları koruma
Örnek uygulamanın yollara erişimi nasıl filtrelediğini öğrenmek için bkz . AuthenticationFilter.java. authentication.properties dosyasında, özelliği, aşağıdaki örnekte gösterildiği gibi, yalnızca kimliği doğrulanmış kullanıcıların erişebileceği virgülle ayrılmış yolları içerir:
# for example, /token_details requires any user to be signed in and does not require special roles claim(s)
app.protect.authenticated=/token_details
Kapsamlar
Kapsamlar, Microsoft Entra ID'ye uygulamanın istediği erişim düzeyini belirtir.
İstenen kapsamlara bağlı olarak Microsoft Entra Id, oturum açma sırasında kullanıcıya bir onay iletişim kutusu sunar. Kullanıcı bir veya daha fazla izin kapsamına onay verip bir belirteç alırsa, onay verilen izin kapsamları elde edilen içine kodlanır.
Uygulama tarafından istenen kapsamlar için bkz . authentication.properties. Bu üç kapsam MSAL tarafından istenir ve varsayılan olarak Microsoft Entra Id tarafından verilir.
Daha Fazla Bilgi
- Java için Microsoft Kimlik Doğrulama Kitaplığı (MSAL)
- MSAL Java Başvuru Dokümantasyonu
- Microsoft kimlik platformu (geliştiriciler için Microsoft Entra ID)
- Hızlı başlangıç: Microsoft kimlik platformunda bir uygulama kaydetme
- Microsoft Entra ID uygulama onay deneyimini anlama
- Kullanıcı ve yönetici onayını anlayın
- MSAL kod örnekleri
Sonraki adım
Java WebSphere uygulamalarını Azure Sanal Makineleri üzerindeki Geleneksel WebSphere'e dağıtın