Hızlı Başlangıç: Belirteç alma ve Node.js konsol uygulamasından Microsoft Graph'ı çağırma
Bu hızlı başlangıçta, Node.js konsol 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.
Bu hızlı başlangıçta , Node.js için Microsoft Kimlik Doğrulama Kitaplığı (MSAL Düğümü) ve istemci kimlik bilgileri verme kullanılır.
Önkoşullar
- Node.js
- Visual Studio Code veya başka bir kod düzenleyicisi
Örnek uygulamayı kaydetme ve indirme
Başlamak için aşağıdaki adımları izleyin.
1. Adım: Uygulamayı kaydetme
İpucu
Bu makaledeki adımlar, başladığınız portala göre biraz değişiklik gösterebilir.
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 Bir Uygulama Yöneticisi olarak oturum açın.
- Kimlik>Uygulamaları'na> göz atın Uygulama kayıtları.
- Yeni kayıt öğesini seçin.
- Uygulamanız için bir Ad girin, örneğin
msal-node-cli
. 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: Node.js örnek projesini indirme
3. Adım: Node.js örnek projesini yapılandırma
Zip dosyasını, diskin köküne yakın bir yerel klasöre (örneğin, C:/Azure-Samples) ayıklayın.
.env dosyasını düzenleyin ve ,
CLIENT_ID
veCLIENT_SECRET
alanlarınınTENANT_ID
değerlerini aşağıdaki kod parçacığıyla değiştirin:"TENANT_ID": "Enter_the_Tenant_Id_Here", "CLIENT_ID": "Enter_the_Application_Id_Here", "CLIENT_SECRET": "Enter_the_Client_Secret_Here"
Where:
Enter_the_Application_Id_Here
- daha önce kaydettiğiniz uygulamanın Uygulama (istemci) kimliğidir. Bu kimliği uygulama kaydının Genel Bakış sayfasında bulabilirsiniz.Enter_the_Tenant_Id_Here
- bu değeri Kiracı Kimliği veya Kiracı adıyla değiştirin (örneğin, contoso.microsoft.com). Bu değerleri uygulama kaydının Genel Bakış sayfasında bulabilirsiniz.Enter_the_Client_Secret_Here
- bu değeri daha önce oluşturduğunuz istemci gizli dizisiyle değiştirin. Yeni bir anahtar oluşturmak için uygulama kayıt ayarlarında Sertifikalar ve gizli diziler'i kullanın.
Kaynak kodunda düz metin gizli dizisi kullanmak, uygulamanız için daha fazla güvenlik riski oluşturur. Bu hızlı başlangıçtaki örnek düz metin istemci gizli dizisini kullansa da, yalnızca kolaylık sağlamak içindir. Özellikle üretim ortamına dağıtmak istediğiniz uygulamalar olmak üzere gizli istemci uygulamalarınızda istemci gizli dizileri yerine sertifika kimlik bilgilerini kullanmanızı öneririz.
.env dosyasını düzenleyin ve Microsoft Entra Id ve Microsoft Graph uç noktalarını aşağıdaki değerlerle değiştirin:
- Microsoft Entra uç noktası için değerini ile
https://login.microsoftonline.com
değiştirinEnter_the_Cloud_Instance_Id_Here
. - Microsoft Graph uç noktası için değerini ile
https://graph.microsoft.com/
değiştirinEnter_the_Graph_Endpoint_Here
.
- Microsoft Entra uç noktası için değerini ile
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: En azından Uygulama Yöneticisi rolü atanmış birinin uygulamanıza onay vermesi gerekir. Rolünüze bağlı olarak aşağıdaki seçeneklerden birini belirleyin:
Yöneticiler
Size en azından Uygulama Yöneticisi rolü atandıysa, Azure portalının Uygulama Kaydı'ndaki 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ılar
Kiracınızın standart kullanıcısıysanız, bulut uygulaması yöneticisinden 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
Bir komut isteminde veya konsolda örneğin kök klasörünü (burada package.json
bulunur) bulun. Örnek uygulamanızı ilk kez çalıştırmadan önce gereken bağımlılıkları yüklemeniz gerekir:
npm install
Ardından, komut istemi veya konsol aracılığıyla uygulamayı çalıştırın:
node . --op getUsers
Konsol çıkışında Microsoft Entra dizininizdeki kullanıcıların listesini temsil eden bir JSON parçası görmeniz gerekir.
Kod hakkında
Aşağıda, örnek uygulamanın önemli yönlerinden bazıları ele alınmalıdır.
MSAL Düğümü
MSAL Düğümü, kullanıcıların oturumunu 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ıçta temsilci izinleri yerine uygulama izinlerine (uygulamanın kendi kimliğini kullanarak) göre belirteçler istenir. Bu durumda kullanılan kimlik doğrulama akışı, OAuth 2.0 istemci kimlik bilgileri akışı olarak bilinir. MSAL Node'un daemon uygulamalarıyla nasıl kullanılacağı hakkında daha fazla bilgi için bkz . Senaryo: Daemon uygulaması.
Aşağıdaki npm komutunu çalıştırarak MSAL Node'u yükleyebilirsiniz.
npm install @azure/msal-node --save
MSAL başlatma
Şu kodu ekleyerek MSAL başvurusunu ekleyebilirsiniz:
const msal = require('@azure/msal-node');
Sonra da şu kodu kullanarak MSAL başlatın:
const msalConfig = {
auth: {
clientId: "Enter_the_Application_Id_Here",
authority: "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here",
clientSecret: "Enter_the_Client_Secret_Here",
}
};
const cca = new msal.ConfidentialClientApplication(msalConfig);
Where: | Açıklama |
---|---|
clientId |
Uygulama (istemci) Kimliği, Azure portalda kayıtlı uygulamadır. Bu değeri Azure portalda 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. |
clientSecret |
Azure portalında uygulama için oluşturulan istemci gizli dizisidir. |
Daha fazla bilgi için lütfen başvuru belgelerine bakın ConfidentialClientApplication
Belirteç isteme
Uygulamanın kimliğini kullanarak belirteç istemek için yöntemini kullanın acquireTokenByClientCredential
:
const tokenRequest = {
scopes: [ 'https://graph.microsoft.com/.default' ],
};
const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
Where: | Açıklama |
---|---|
tokenRequest |
İstenen kapsamları içerir. Gizli istemciler için bu, istenen kapsamların Azure portalında ayarlanan 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 öğesine {Application ID URI} işaret eder https://graph.microsoft.com ). Özel web API'leri için, {Application ID URI} Azure portalının Uygulama Kaydı'ndaki BIR API'yi kullanıma sunma bölümünde tanımlanır. |
tokenResponse |
Yanıt, istenen kapsamlar için bir erişim belirteci içerir. |
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
MSAL Node ile daemon/konsol uygulaması geliştirme hakkında daha fazla bilgi edinmek için öğreticiye bakın: