Hızlı Başlangıç: Java daemon uygulamasından belirteç alma ve Microsoft Graph'ı çağırma
Bu hızlı başlangıçta, Bir Java uygulamasının Microsoft Graph API'sini çağırmak ve dizindeki kullanıcıların listesini görüntülemek için uygulamanın kimliğini kullanarak nasıl erişim belirteci alabileceğini gösteren bir kod örneği indirip çalıştıracaksınız. Kod örneği, katılımsız bir işin veya Windows hizmetinin kullanıcı kimliği yerine uygulama kimliğiyle nasıl çalışabileceğini gösterir.
Önkoşullar
Bu örneği çalıştırmak için şunları yapmanız gerekir:
- Java Development Kit (JDK) 8 veya üzeri
- Maven
Hızlı başlangıç uygulamanızı kaydetme ve indirme
İpucu
Bu makaledeki adımlar, başladığınız portala göre biraz değişiklik gösterebilir.
1. Adım: Uygulamayı kaydetme
Uygulamanızı kaydetmek ve uygulama kayıt bilgilerinizi çözümünüze el ile eklemek için şu adımları izleyin:
- Microsoft Entra yönetim merkezinde en azından Uygulama Geliştiricisi olarak oturum açın.
- Birden çok kiracıya erişiminiz varsa, Dizinler + abonelikler menüsünden uygulamayı kaydetmek istediğiniz kiracıya geçmek için üst menüdeki Ayarlar simgesini kullanın.
- Kimlik>Uygulamaları>Uygulama kayıtları'na göz atın.
- Yeni kayıt öğesini seçin.
- Uygulamanız için bir Ad girin, örneğin
Daemon-console
. Uygulamanızın kullanıcıları bu adı görebilir ve daha sonra değiştirebilirsiniz. - Kaydet'i seçin.
- Yönet'in altında Sertifikalar ve gizli diziler'i seçin.
- İstemci gizli dizileri'nin altında Yeni istemci gizli dizisi'ni seçin, bir ad girin ve ekle'yi seçin. Gizli dizi değerini daha sonraki bir adımda kullanmak üzere güvenli bir konuma kaydedin.
- Yönet'in altında API İzinleri>İzin ekle'yi seçin. Microsoft Graph'ı seçin.
- Uygulama izinleri'ni seçin.
- Kullanıcı düğümü altında User.Read.All öğesini ve ardından İzin ekle'yi seçin.
2. Adım: Java projesini indirme
3. Adım: Java projesini yapılandırma
- Zip dosyasını, gibi
C:\Azure-Samples
, diskin köküne yakın bir yerel klasöre ayıklayın. - Alt klasöre
msal-client-credential-secret
gidin. - ,
CLIENT_ID
ve alanlarınınAUTHORITY
değerlerini düzenleyinsrc\main\resources\application.properties
veSECRET
aşağıdaki kod parçacığıyla değiştirin:
AUTHORITY=https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/
CLIENT_ID=Enter_the_Application_Id_Here
SECRET=Enter_the_Client_Secret_Here
Where:
Enter_the_Application_Id_Here
- kaydettiğiniz uygulamanın Uygulama (istemci) Kimliği değeridir.Enter_the_Tenant_Id_Here
- bu değeri Kiracı Kimliği veya Kiracı adıyla değiştirin (örneğin, contoso.microsoft.com).Enter_the_Client_Secret_Here
- bu değeri 1. adımda oluşturulan istemci gizli dizisiyle değiştirin.
İpucu
Uygulama (istemci) kimliği, Dizin (kiracı) kimliği değerlerini bulmak için uygulamanın Genel Bakış sayfasına gidin. Yeni bir anahtar oluşturmak için Sertifikalar ve gizli diziler sayfasına gidin.
4. Adım: Yönetici onayı
Uygulamayı bu noktada çalıştırmayı denerseniz HTTP 403 - Yasak hatası alırsınız: Insufficient privileges to complete the operation
. Bu hata, yalnızca uygulama izinlerinin Yönetici onayı gerektirmesi nedeniyle oluşur: Dizininizin Genel Yöneticisi uygulamanıza onay vermelidir. Rolünüze bağlı olarak aşağıdaki seçeneklerden birini belirleyin:
Genel kiracı yöneticisi
Genel kiracı yöneticisiyseniz, Uygulama kayıtları API İzinleri sayfasına gidin ve {Kiracı Adı} için yönetici onayı ver'i seçin (Burada {Kiracı Adı} dizininizin adıdır).
Standart kullanıcı
Kiracınızın standart kullanıcısıysanız, genel yöneticiden uygulamanız için yönetici onayı vermesini istemeniz gerekir. Bunu yapmak için yöneticinize aşağıdaki URL'yi verin:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Where:
Enter_the_Tenant_Id_Here
- bu değeri Kiracı Kimliği veya Kiracı adıyla değiştirin (örneğin, contoso.microsoft.com)Enter_the_Application_Id_Here
- kaydettiğiniz uygulamanın Uygulama (istemci) Kimliği değeridir.
5. Adım: Uygulamayı çalıştırma
IDE'nizden ClientCredentialGrant.java ana yöntemini çalıştırarak örneği doğrudan test edebilirsiniz.
Kabuğunuzdan veya komut satırından:
$ mvn clean compile assembly:single
Bu işlem dizininizde /targets
bir msal-client-credential-secret-1.0.0.jar
dosya oluşturur. Aşağıdaki gibi Java yürütülebilir dosyanızı kullanarak bunu çalıştırın:
$ java -jar msal-client-credential-secret-1.0.0.jar
Çalıştırdıktan sonra, uygulamanın yapılandırılan kiracıdaki kullanıcı listesini görüntülemesi gerekir.
Önemli
Bu hızlı başlangıç uygulaması, kendisini gizli istemci olarak tanımlamak için bir gizli dizi kullanır. İstemci gizli dizisi proje dosyalarınıza düz metin olarak eklendiğinden, güvenlik nedeniyle, uygulamayı üretim uygulaması olarak değerlendirmeden önce istemci gizli dizisi yerine bir sertifika kullanmanız önerilir. Sertifika kullanma hakkında daha fazla bilgi için, bu örnek için aynı GitHub deposunda, ancak ikinci klasörde MSAL-client-credential-certificate klasörüne bu yönergelere bakın.
Daha Fazla Bilgi
MSAL Java
MSAL Java, kullanıcılarda oturum açmak ve Microsoft kimlik platformu tarafından korunan bir API'ye erişmek için kullanılan belirteçleri istemek için kullanılan kitaplıktır. Açıklandığı gibi, bu hızlı başlangıç belirteçleri temsilci izinleri yerine uygulamanın kendi kimliğini kullanarak istemektedir. Bu durumda kullanılan kimlik doğrulama akışı, istemci kimlik bilgileri oauth akışı olarak bilinir. MSAL Java'yı daemon uygulamalarıyla kullanma hakkında daha fazla bilgi için bu makaleye bakın.
Uygulamanın pom.xml (Maven) veya build.gradle (Gradle) dosyasında aşağıdaki değişiklikleri yaparak bağımlılıklarınızı yönetmek için Maven veya Gradle kullanarak uygulamanıza MSAL4J ekleyin.
pom.xml:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>msal4j</artifactId>
<version>1.0.0</version>
</dependency>
build.gradle dosyasında:
compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'
MSAL başlatma
MSAL4J kullanacağınız dosyanın en üstüne aşağıdaki kodu ekleyerek Java için MSAL başvurusu ekleyin:
import com.microsoft.aad.msal4j.*;
Sonra da şu kodu kullanarak MSAL başlatın:
IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication cca =
ConfidentialClientApplication
.builder(CLIENT_ID, credential)
.authority(AUTHORITY)
.build();
Where: | Açıklama |
---|---|
CLIENT_SECRET |
uygulama için oluşturulan istemci gizli dizisidir. |
CLIENT_ID |
Kayıtlı uygulamanın Uygulama (istemci) kimliğidir. Bu değeri uygulamanın Genel Bakış sayfasında bulabilirsiniz. |
AUTHORITY |
Kimlik doğrulaması yapılacak kullanıcı için STS uç noktası. Genellikle https://login.microsoftonline.com/{tenant} genel bulut için, burada {tenant} kiracınızın adı veya kiracı kimliğinizdir. |
Belirteç isteme
Uygulamanın kimliğini kullanarak belirteç istemek için yöntemini kullanın acquireToken
:
IAuthenticationResult result;
try {
SilentParameters silentParameters =
SilentParameters
.builder(SCOPE)
.build();
// try to acquire token silently. This call will fail since the token cache does not
// have a token for the application you are requesting an access token for
result = cca.acquireTokenSilently(silentParameters).join();
} catch (Exception ex) {
if (ex.getCause() instanceof MsalException) {
ClientCredentialParameters parameters =
ClientCredentialParameters
.builder(SCOPE)
.build();
// Try to acquire a token. If successful, you should see
// the token information printed out to console
result = cca.acquireToken(parameters).join();
} else {
// Handle other exceptions accordingly
throw ex;
}
}
return result;
Where: | Açıklama |
---|---|
SCOPE |
İstenen kapsamları içerir. Gizli istemciler için bu, istenen kapsamların uygulama nesnesinde statik olarak tanımlanan kapsamlar olduğunu belirtmek için benzer {Application ID URI}/.default bir biçim kullanmalıdır (Microsoft Graph için işaret {Application ID URI} eder https://graph.microsoft.com ). Özel web API'leri için, Uygulama kayıtları'daki API'yi kullanıma sunma bölümünde tanımlanır. {Application ID URI} |
Yardım ve destek
Yardıma ihtiyacınız varsa, bir sorunu bildirmek veya destek seçenekleriniz hakkında bilgi edinmek istiyorsanız bkz . Geliştiriciler için yardım ve destek.
Sonraki adımlar
Daemon uygulamaları hakkında daha fazla bilgi edinmek için senaryo giriş sayfasına bakın.