MSAL Node’da gizli istemci uygulamalarını başlatma

Bu makalede, MSAL Node’da ConfidentialClientApplication nesnesini nasıl başlatacağınız gösterilmektedir. Gizli bilgileri ve sertifikaları güvenli biçimde nasıl kullanacağınızı ve otoriteyi nasıl yapılandıracağınızı öğreneceksiniz.

Prerequisites

Uygulamayı başlatmadan önce, uygulamanızla Microsoft kimlik platformu arasında bir güven ilişkisi kurarak uygulamayı Microsoft Entra yönetim merkezi kaydetmeniz gerekir.

Uygulamanızı kaydettikten sonra, Microsoft Entra yönetim merkezi bulunabilecek aşağıdaki değerlerin bir kısmına veya tümüne ihtiyacınız olacaktır.

Değer Zorunlu Description
Uygulama (istemci) kimliği Zorunlu uygulamanızı Microsoft kimlik platformu içinde benzersiz olarak tanımlayan bir GUID.
Yetkili Optional Uygulamanızın kimlik sağlayıcısı URL'si ( örnek) ve oturum açma hedef kitlesi . Örnek ve oturum açma hedef kitlesi, birleştirilirken yetkiliyi oluşturur.
Dizin (kullanıcı) kimliği Optional Yalnızca kuruluşunuz için bir iş kolu uygulaması oluşturuyorsanız (genellikle tek kiracılı uygulama olarak adlandırılır) Dizin (kiracı) kimliğini belirtin.
Yeniden yönlendirme URI'si Optional Bir web uygulaması oluşturuyorsanız, redirectUri kimlik sağlayıcısının (Microsoft kimlik platformu) verilen güvenlik belirteçlerini nereye döndüreceği belirtir.

Nesneyi başlatma ConfidentialClientApplication

MSAL Düğümünü kullanmak için bir ConfidentialClient nesnesi örneği oluşturmanız gerekir.

Gizli anahtarların ve sertifikaların güvenli kullanımı

Gizli bilgiler asla doğrudan koda gömülmemelidir. Dotenv npm paketi, gizli dizilerin yanlışlıkla karşıya yüklenmesini önlemek için .gitignore dosyasına eklenmesi gereken bir .env dosyasında (projenin kök dizininde bulunur) gizli dizileri veya sertifikaları depolamak için kullanılabilir.

Sertifikalar NodeJS'nin fs modülü aracılığıyla dosyalardan da okunabilir. Ancak, bunlar hiçbir zaman projenin dizininde depolanmamalıdır. Üretim uygulamaları Azure KeyVault veya diğer güvenli anahtar kasalarından sertifika getirmelidir.

Daha fazla bilgi için lütfen sertifikalar ve gizli anahtarlar bölümüne bakın.

MSAL örneğine bakın: auth-code-with-certs

import * as msal from "@azure/msal-node";
import "dotenv/config"; // process.env now has the values defined in a .env file

const clientAssertionCallback = async (config) => {
    // network request that uses config.clientId and (optionally) config.tokenEndpoint
    const result = await Promise.resolve(
        "network request which gets assertion"
    );
    return result;
};

const clientConfig = {
    auth: {
        clientId: "your_client_id",
        authority: "your_authority",
        clientSecret: process.env.clientSecret, // OR
        clientCertificate: {
            thumbprintSha256: process.env.thumbprint,
            privateKey: process.env.privateKey,
        }, // OR
        clientAssertion: clientAssertionCallback, // or a predetermined clientAssertion string
    },
};
const cca = new msal.ConfidentialClientApplication(clientConfig);

Lütfen sertifikaları içeri aktarırken sık karşılaşılan sorunlar konusuna bakın.

Yapılandırma Temelleri

Düğüm için Yapılandırma seçeneklerinde, kimlik doğrulama akışı başına common parametre ve specific parametre bulunur.

  • clientId genel istemci uygulamasını başlatmak için zorunludur
  • authority https://login.microsoftonline.com/common/ kullanıcı yapılandırma sırasında ayarlamazsa varsayılan olarak ayarlanır
  • Gizli istemciler için İstemci kimlik bilgileri zorunludur. İstemci kimlik bilgileri şu olabilir:
    • clientSecret , uygulama kaydında oluşturulan gizli dizidir.
    • clientCertificate , uygulama kaydında ayarlanmış bir sertifikadır. thumbprintSha256, sertifikanın X.509 SHA-256 parmak izidir ve privateKey PEM ile kodlanmış özel anahtardır. x5c konu adı/veren kimlik doğrulaması senaryolarında kullanılan isteğe bağlı X.509 sertifika zinciridir.
    • clientAssertion , uygulamanın belirteç isterken kullandığı bir onay dizesini veya böyle bir onay dizesi döndüren bir geri çağırma işlevini ve ayrıca onayın türünü (urn:ietf:params:oauth:client-assertion-type:jwt-bearer) içeren bir ClientAssertion nesnesidir. MSAL'nin belirteç verenden bir belirteç alması gerektiğinde geri çağırma çağrılır. Onayların süresi dolduğundan ve yeni onayların oluşturulması gerektiğinden uygulama geliştiricileri genellikle geri çağırmayı kullanmalıdır. Uygulama geliştiricileri onay ömründen sorumludur. Bu mekanizmayı, Federe Kimlik Kimlik Bilgisi kullanarak bir alt akış API’si için belirteç almak amacıyla kullanın.

Yapılandırma hakkında daha fazla seçenek için bkz. MSAL Düğümünde Yapılandırma.

Yetkiliyi Yapılandırma

Varsayılan olarak MSAL, çok kiracılı uygulamalar ve kişisel hesaplara (B2C değil) izin veren uygulamalar için kullanılan kiracı ile common yapılandırılır.

    authority: 'https://login.microsoftonline.com/common/'

Uygulamanızın hedef kitlesi tek bir kiracıysa, aşağıdaki gibi kiracı kimliğinizi içeren bir authority belirtmelisiniz:

    authority: 'https://login.microsoftonline.com/{your_tenant_id}'

Sonraki Adımlar