Aracılığıyla paylaş


Microsoft Entra kimlik doğrulamayı kullanarak bağlanma

JDBC sürücüsünü indirin

Bu makalede, SQL Server için Microsoft JDBC Sürücüsü ile Microsoft Entra kimlik doğrulama özelliğini kullanan Java uygulamaları geliştirme hakkında bilgi sağlanır.

Microsoft Entra ID kimliklerini kullanarak Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Azure Synapse Analytics'e bağlanma mekanizması olarak Microsoft Entra kimlik doğrulamasını kullanabilirsiniz. Veritabanı kullanıcılarının kimliklerini merkezi olarak yönetmek ve SQL Server kimlik doğrulamasına alternatif olarak Microsoft Entra kimlik doğrulamasını kullanın. JDBC sürücüsü, Azure SQL'e bağlanmak için JDBC bağlantı dizesinde Microsoft Entra kimlik bilgilerinizi belirtmenize olanak tanır. Microsoft Entra kimlik doğrulamasını yapılandırma hakkında bilgi için Microsoft Entra kimlik doğrulamasını kullanarak Azure SQL'e bağlanmaadresini ziyaret edin.

SQL Server için Microsoft JDBC Sürücüsünde Microsoft Entra kimlik doğrulamasını destekleyecek bağlantı özellikleri şunlardır:

  • kimlik doğrulaması : Bağlantı için hangi SQL kimlik doğrulama yönteminin kullanılacağını belirtmek için bu özelliği kullanın. Olası değerler şunlardır:
    • ActiveDirectoryManagedIdentity

      • Sürücü sürümü 8.3.1'den bu yana, "Kimlik" desteği etkinleştirilmiş bir Azure Kaynağından Azure SQL Veritabanı/Synapse Analytics'e bağlanmak için authentication=ActiveDirectoryMSI kullanılabilir. İsteğe bağlı olarak, msiClientId bu kimlik doğrulama moduyla birlikte Connection/DataSource özelliklerinde belirtilebilir. msiClientId, bağlantı kurmak için accessToken almak üzere kullanılacak Yönetilen Kimliğin Müşteri Kimliğini içermelidir. Sürücü sürümü v12.2 olduğundan authentication=ActiveDirectoryManagedIdentity, "Kimlik" desteği etkinleştirilmiş bir Azure Kaynağından Azure SQL Veritabanı/Synapse Analytics'e bağlanmak için de kullanılabilir. İsteğe bağlı olarak, Yönetilen Kimliğin İstemci Kimliği artık user özelliğinde de ayarlanabilir. Daha fazla bilgi için bkz: ActiveDirectoryManagedIdentity kimlik doğrulama modunu kullanarak bağlan.
    • ActiveDirectoryDefault

    • Active Directory ile Entegre

      • Sürücü sürümü 6.0'dan bu yana, tümleşik kimlik doğrulaması aracılığıyla Azure SQL/Synapse Analytics'e bağlanmak için authentication=ActiveDirectoryIntegrated kullanılabilir. Bu kimlik doğrulama modunu kullanmak için şirket içi Active Directory Federasyon Hizmetleri'ni (ADFS) bulutta Microsoft Entra Kimliği ile federasyon gerekir. Bunu ayarladıktan sonra, ya yerel kütüphane mssql-jdbc_auth-<version>-<arch>.dll'ı Windows'ta uygulamanın sınıf yoluna ekleyerek ya da platformlar arası kimlik doğrulaması desteği için bir Kerberos bileti ayarlayarak bağlanabilirsiniz. Etki alanına katılmış bir makinede oturum açtığınızda kimlik bilgileri istenmeden Azure SQL/Azure Synapse Analytics'e erişebilirsiniz. Daha fazla bilgi için, ActiveDirectoryIntegrated kimlik doğrulama modunu kullanarak bağlanma hakkında 'e bakın.
    • ActiveDirectoryPassword

    • ActiveDirectoryInteractive

      • Sürücü sürümü 9.2'den bu yana authentication=ActiveDirectoryInteractive etkileşimli kimlik doğrulama akışı (çok faktörlü kimlik doğrulaması) aracılığıyla bir Azure SQL/Synapse Analytics'e bağlanmak için kullanılabilir. Daha fazla bilgi için, ActiveDirectoryInteractive kimlik doğrulama modunu kullanarak bağlanma hakkında bkz. .
    • ActiveDirectoryServicePrincipal

      • Sürücü sürümü 9.2'den bu yana, userName özelliğinde uygulama/istemci kimliğini ve parola özelliğinde bir hizmet sorumlusu kimliğinin gizlisini belirterek authentication=ActiveDirectoryServicePrincipal, Azure SQL/Synapse Analytics'e bağlanmak için kullanılabilir. Daha fazla bilgi için, ActiveDirectoryServicePrincipal kimlik doğrulama modunu kullanarak bağlanmaya bakın.
    • ActiveDirectoryServicePrincipalCertificate

    • SqlPassword

      • userName/user ve parola özelliklerini kullanarak SQL Server'a bağlanmak için authentication=SqlPassword kullanın.
    • Belirtilmemiş

      • authentication=NotSpecified kullanın veya bu kimlik doğrulama yöntemlerinden hiçbiri gerekli olmadığında varsayılan olarak bırakın.
    • accessToken : Erişim belirteci ile bir SQL Veritabanına bağlanmak için bu bağlantı özelliğini kullanın. accessToken yalnızca DriverManager sınıfındaki getConnection() yönteminin Properties parametresi kullanılarak ayarlanabilir. Bağlantı URL'sinde kullanılamaz.

Daha fazla bilgi için Bağlantı Özelliklerini Ayarlama sayfasındaki kimlik doğrulama özelliğine bakın.

İstemci kurulum gereksinimleri

Temel sürücü sistem gereksinimlerineek olarak, aşağıdaki kimlik doğrulama modlarının daha fazla gereksinimi vardır.

Aşağıdaki tabloda her kimlik doğrulama modu ve sürücü sürümü için gerekli kitaplık bağımlılıkları listeleniyor. Bağımlılıkların bağımlılıkları da gereklidir.

Not

Bir ana sürüme yönelik düzeltmenin ana sürümünden farklı bir bağımlılık sürümüne sahip olduğu durumlarda, düzeltme de listelenir.

Kimlik doğrulama seçeneği Sürücü sürümleri Kitaplık bağımlılıkları
ActiveDirectoryPassword
ActiveDirectoryIntegrated
6,0 Adal4j 1.3.0
ActiveDirectoryPassword
ActiveDirectoryIntegrated
6.2.2 - 6.4 Adal4j 1.4.0
ActiveDirectoryPassword
ActiveDirectoryIntegrated
7.0 Adal4j 1.6.0
ActiveDirectoryPassword
ActiveDirectoryIntegrated
7.2 Adal4j 1.6.3
Client-Runtime-for-AutoRest 1.6.5
ActiveDirectoryPassword
ActiveDirectoryIntegrated
7.4 - 8.2 Adal4j 1.6.4
Client-Runtime-for-AutoRest 1.7.0
ActiveDirectoryPassword
ActiveDirectoryIntegrated
8.4 Adal4j 1.6.5
Client-Runtime-for-AutoRest 1.7.4
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
9.2 msal4j 1.7.1
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
9.4 msal4j 1.10.1
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
10,2 msal4j 1.11.0
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
11.2 msal4j 1.11.3
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
11.2.3 msal4j 1.13.0
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
12.2 msal4j 1.13.3
ActiveDirectoryManagedIdentity
ActiveDirectoryMSI
ActiveDirectoryDefault
12.2 azure-identity 1.7.0
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
ActiveDirectoryServicePrincipalCertificate
12,4 msal4j 1.13.8
ActiveDirectoryManagedIdentity
ActiveDirectoryMSI
ActiveDirectoryDefault
12,4 azure-identity 1.9.0
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
ActiveDirectoryServicePrincipalCertificate
12.6 msal4j 1.14.1
ActiveDirectoryManagedIdentity
ActiveDirectoryMSI
ActiveDirectoryDefault
12.6 azure-identity 1.11.1
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
ActiveDirectoryServicePrincipalCertificate
12.6.3 msal4j 1.15.1
ActiveDirectoryManagedIdentity
ActiveDirectoryMSI
ActiveDirectoryDefault
12.6.3 azure-identity 1.12.2
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
ActiveDirectoryServicePrincipalCertificate
12.6.4 msal4j 1.15.1
ActiveDirectoryManagedIdentity
ActiveDirectoryMSI
ActiveDirectoryDefault
12.6.4 azure-identity 1.12.2
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
ActiveDirectoryServicePrincipalCertificate
12.8 msal4j 1.15.1
ActiveDirectoryManagedIdentity
ActiveDirectoryMSI
ActiveDirectoryDefault
12.8 azure-identity 1.12.2
ActiveDirectoryPassword
ActiveDirectoryIntegrated
ActiveDirectoryInteractive
ActiveDirectoryServicePrincipal
ActiveDirectoryServicePrincipalCertificate
ActiveDirectoryManagedIdentity
ActiveDirectoryMSI
ActiveDirectoryDefault
12.10 azure-identity 1.15.3

ActiveDirectoryManagedIdentity kimlik doğrulama modunu kullanarak bağlanma

Bu kimlik doğrulama modu sürüm 7.2'den itibaren desteklenir. Kullanmak için authentication=ActiveDirectoryMSIbelirtin. Sürüm 12.2'den başlayarak authentication=ActiveDirectoryManagedIdentity de belirtilebilir.

İstemci kurulum gereksinimlerilistelenen kitaplık bağımlılığı gereksinimlerine ek olarak, bu özellik aşağıdaki gereksinimlere sahiptir:

  • Hedef veritabanının, CONNECT iznine sahip bir bağımsız veritabanı kullanıcısı olmalıdır. Kapsanan kullanıcı, Azure Kaynağınızın Sistem Tarafından Atanan Yönetilen Kimliği'ni veya Kullanıcı Tarafından Atanan Yönetilen Kimlik'i ya da Yönetilen Kimliğinizin ait olduğu gruplardan birini temsil etmelidir.

  • İstemci ortamı bir Azure Kaynağı olmalı ve "Kimlik" özelliği desteği etkin olmalıdır. Aşağıdaki tabloda her JDBC sürücü sürümü tarafından desteklenen Azure hizmetleri listelenmektedir:

    Sürücü sürümü Gerekli bağımlılıklar Desteklenen Azure hizmetleri
    7.2 - 11.2 Hiç kimse Azure App Service ve Azure İşlevleri
    Azure Sanal Makineler
    12.2
    12,4
    12.6
    12.8
    12.10
    azure-identity 1.7.0
    azure-identity 1.9.0
    azure-identity 1.11.1
    azure-identity 1.12.2
    azure-identity 1.15.3
    Azure App Service ve Azure İşlevleri
    Azure Arc
    Azure Cloud Shell
    Azure Kubernetes Service
    Azure Service Fabric
    Azure Sanal Makineler
    Azure Sanal Makineler Ölçek Kümeleri

Aşağıdaki örnekte authentication=ActiveDirectoryManagedIdentity modunun nasıl kullanılacağı gösterilmektedir. Bu örneği Yönetilen Kimlik için yapılandırılmış bir Azure Kaynağının içinden çalıştırın.

Örneği çalıştırmak için sunucu/veritabanı adını aşağıdaki satırlarda sunucu/veritabanı adınızla değiştirin:

ds.setServerName("msentra-managed-demo.database.windows.net"); // replace 'msentra-managed-demo' with your server name
ds.setDatabaseName("demo"); // replace with your database name
//Optional
ds.setMSIClientId("<managed_identity_client>"); // Replace with Client ID of user-assigned managed identity to be used

ActiveDirectoryMSI kimlik doğrulama modunu kullanma örneği:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

public class MsEntraMSI {
    public static void main(String[] args) throws Exception {

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setServerName("msentra-managed-demo.database.windows.net"); // Replace with your server name
        ds.setDatabaseName("demo"); // Replace with your database name
        ds.setAuthentication("ActiveDirectoryMSI");
        // Optional
        ds.setMSIClientId("<managed_identity_client_guid>"); // Replace with Client ID of user-assigned managed identity to be used

        try (Connection connection = ds.getConnection();
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
            if (rs.next()) {
                System.out.println("You have successfully logged on as: " + rs.getString(1));
            }
        }
    }
}

Aşağıdaki örnekte authentication=ActiveDirectoryManagedIdentity modunun nasıl kullanılacağı gösterilmektedir.

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

public class MSEntraManagedIdentity {
    public static void main(String[] args) throws Exception {

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setServerName("msentra-managed-demo.database.windows.net"); // Replace with your server name
        ds.setDatabaseName("demo"); // Replace with your database name
        ds.setAuthentication("ActiveDirectoryManagedIdentity"); // ActiveDirectoryManagedIdentity for JDBC driver version v12.2.0+
        // Optional
        ds.setUser("<managed_identity_client>"); // Replace with Client ID of User-Assigned Managed Identity to be used

        try (Connection connection = ds.getConnection();
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
            if (rs.next()) {
                System.out.println("You have successfully logged on as: " + rs.getString(1));
            }
        }
    }
}

Azure Sanal Makinesindeki bu örnekler, Sistem Tarafından Atanan Yönetilen Kimlik veya Kullanıcı Tarafından Atanan Yönetilen Kimlik (yönetilen kimliğin İstemci Kimliği msiClientId veya user olarak belirtilmişse) ile bir erişim belirteci alır ve alınan erişim belirteci kullanılarak bir bağlantı kurar. Bir bağlantı kurulursa aşağıdaki iletiyi görmeniz gerekir:

You have successfully logged on as: <your Managed Identity username>

ActiveDirectoryDefault kimlik doğrulama modunu kullanarak bağlanma

ActiveDirectoryDefault kimlik doğrulaması seçeneği, Azure Identity istemci kitaplığının DefaultAzureCredential zincirlenmiş TokenCredential uygulamasını kullanır. Kimlik bilgisi, sık kullanılan kimlik doğrulama yöntemlerini birbirine zincirlenmiş olarak birleştirir.

ActiveDirectoryDefault kimlik doğrulaması, Yönetilen Kimlik için Azure Identity istemci kitaplığına ihtiyaç duyan bir çalışma zamanı bağımlılığı gerektirir. Kütüphane sürümü ayrıntıları için bkz. İstemci kurulum gereksinimleri.

Aşağıdaki tabloda, her JDBC sürücüsü sürümü için DefaultAzureCredential kimlik bilgisi zinciri listelenir.

Sürücü sürümü azure-identity sürümü DefaultAzureCredential zinciri
12.2 azure-identity 1.7.0 Çevre
Yönetilen Kimlik
IntelliJ
Azure Komut Satırı Arayüzü (Azure CLI)
Azure PowerShell
12,4 azure-identity 1.9.0 Çevre
İş Yükü Kimliği
Yönetilen Kimlik
Azure Geliştirici CLI'sı
IntelliJ
Azure Komut Satırı Arayüzü (Azure CLI)
Azure PowerShell
12.6 azure-identity 1.11.1 Çevre
İş Yükü Kimliği
Yönetilen Kimlik
Azure Geliştirici CLI'sı
IntelliJ
Azure Komut Satırı Arayüzü (Azure CLI)
Azure PowerShell
12.8 azure-identity 1.12.2 Çevre
İş Yükü Kimliği
Yönetilen Kimlik
Azure Geliştirici CLI'sı
IntelliJ
Azure Komut Satırı Arayüzü (Azure CLI)
Azure PowerShell
12.10 azure-identity 1.15.3 Çevre
İş Yükü Kimliği
Yönetilen Kimlik
Azure Geliştirici CLI'sı
IntelliJ
Azure Komut Satırı Arayüzü (Azure CLI)
Azure PowerShell

Environment kimlik bilgilerini yapılandırmak için ayarlanabilen birçok değişken vardır. DefaultAzureCredential kimlik bilgileri dahil olmak üzere Environment zincirini yapılandırmayla ilgili ayrıntılar için önceki tabloda bağlantılı azure-identity belgelerinin ilgili sürümüne bakın.

Windows'da IntellijCredential kullanmak için INTELLIJ_KEEPASS_PATH ortam değişkenini keepass dosyanızın konumuna ayarlayın. Örneğin, INTELLIJ_KEEPASS_PATH=C:\user\your\path\to\the\keepass\file.

DefaultAzureCredentialdaha fazla kiracı sağlamak için ADDITIONALLY_ALLOWED_TENANTS ortam değişkenini kullanın. Bu değişken virgülle ayrılmış bir liste alır. Örneğin, ADDITIONALLY_ALLOWED_TENANTS=<your-tenant-id-0>,<your-tenant-id-1>,<your-tenant-id-2>,...

Aşağıdaki örnekte, authentication=ActiveDirectoryDefaultiçinde AzureCliCredential ile DefaultAzureCredential modunun nasıl kullanılacağı gösterilmektedir.

  1. İlk olarak aşağıdaki komutu kullanarak Azure CLI'da oturum açın.

    az login
    
  2. Azure CLI'da başarıyla oturum açtıktan sonra aşağıdaki kodu çalıştırın.

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
    
    public class MSEntraDefault {
        public static void main(String[] args) throws Exception {
    
            SQLServerDataSource ds = new SQLServerDataSource();
            ds.setServerName("msentra-managed-demo.database.windows.net"); // Replace with your server name
            ds.setDatabaseName("demo"); // Replace with your database name
            ds.setAuthentication("ActiveDirectoryDefault");
    
            try (Connection connection = ds.getConnection();
                    Statement stmt = connection.createStatement();
                    ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
                if (rs.next()) {
                    System.out.println("You have successfully logged on as: " + rs.getString(1));
                }
            }
        }
    }
    

ActiveDirectoryIntegrated kimlik doğrulama modunu kullanarak bağlanma

SQL Server için Microsoft JDBC Sürücüsünde ActiveDirectoryIntegrated kimlik doğrulamasını kullanmanın iki yolu vardır:

İstemci kurulum gereksinimlerigerekli bağımlı kitaplıklara sahip olduğunuzdan emin olun.

Aşağıdaki örnekte authentication=ActiveDirectoryIntegrated modunun nasıl kullanılacağı gösterilmektedir. Bu örnek, Microsoft Entra ID ile federe edilmiş etki alanına katılmış bir makinede çalışır. Windows kullanıcınızı temsil eden bir veritabanı kullanıcısının veritabanında mevcut olması ve CONNECT iznine sahip olması gerekir.

Örneği yürütmeden önce sunucu/veritabanı adını aşağıdaki satırlarda sunucu/veritabanı adınızla değiştirin:

ds.setServerName("msentra-managed-demo.database.windows.net"); // replace 'msentra-managed-demo' with your server name
ds.setDatabaseName("demo"); // replace with your database name

ActiveDirectoryIntegrated kimlik doğrulama modunu kullanma örneği:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

public class MSEntraIntegrated {
    public static void main(String[] args) throws Exception {

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setServerName("msentra-managed-demo.database.windows.net"); // Replace with your server name
        ds.setDatabaseName("demo"); // Replace with your database name
        ds.setAuthentication("ActiveDirectoryIntegrated");

        try (Connection connection = ds.getConnection();
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
            if (rs.next()) {
                System.out.println("You have successfully logged on as: " + rs.getString(1));
            }
        }
    }
}

Bu örnek çalıştırılırken istemci platformundaki Kerberos biletiniz otomatik olarak kullanılır ve parola gerekmez. Bir bağlantı kurulursa aşağıdaki iletiyi görmeniz gerekir:

You have successfully logged on as: <your domain user name>

Windows, Linux ve macOS'ta Kerberos bileti ayarlama

Geçerli kullanıcınızı bir Windows etki alanı hesabına bağlamak için bir Kerberos bileti oluşturmanız gerekir. Aşağıda önemli adımların bir özeti yer alır.

Windows

Not

Windows'da, indirilen mssql-jdbc_auth-<version>-<arch>.dll içindeki , bu Kerberos yapılandırma adımları yerine kullanılabilir. Bu adımlar yalnızca DLL'yi kullanamıyorsanız gereklidir.

JDK, Microsoft Entra ID ile federe edilmiş etki alanına katılmış bir makinede Anahtar Dağıtım Merkezi'nden (KDC) TGT almak için kullanabileceğiniz kinitile birlikte gelir.

1. Adım: Bilet alma bileti verme
  • üzerinde çalıştır : Windows

  • Eylem:

    • KDC'den TGT almak için kinit username@DOMAIN.COMPANY.COM komutunu kullanın, ardından sistem sizden etki alanı parolanızı ister.
    • Kullanılabilir biletleri görmek için klist kullanın. Kinit başarılı olursa, krbtgt/DOMAIN.COMPANY.COM@ DOMAIN.COMPANY.COM'dan bir bilet görmeniz gerekir.

    Not

    Uygulamanızın KDC'yi bulması için .ini içeren bir -Djava.security.krb5.conf dosyası belirtmeniz gerekebilir.

Linux ve macOS

Gereksinimler

Kerberos Etki Alanı Denetleyicinizi sorgulamak için Windows etki alanına katılmış bir makineye erişim.

1. Adım: Kerberos KDC'yi bulma
  • üzerinde çalıştır : Windows komut satırı

  • Eylem: nltest /dsgetdc:DOMAIN.COMPANY.COM (DOMAIN.COMPANY.COM etki alanınızın adıyla eşleştiğinde)

  • Örnek Çıktı

    DC: \\co1-red-dc-33.domain.company.com
    Address: \\2111:4444:2111:33:1111:ecff:ffff:3333
    ...
    The command completed successfully
    
  • Ayıklamak için bilgi DC adı, bu örnekte co1-red-dc-33.domain.company.com

2. Adım: Krb5.conf dosyasında KDC'yi yapılandırma
  • üzerinde çalıştır: Linux/macOS

  • Eylem: /etc/krb5.conf istediğiniz bir düzenleyicide düzenleyin. Aşağıdaki anahtarları yapılandırın

    [libdefaults]
      default_realm = DOMAIN.COMPANY.COM
    
    [realms]
    DOMAIN.COMPANY.COM = {
       kdc = co1-red-dc-28.domain.company.com
    }
    

    Ardından krb5.conf dosyasını kaydedin ve çıkın

    Not

    Etki alanı BÜYÜK HARFLERLE yazılmalıdır.

3. Adım: Bilet alma biletini test etme
  • üzerinde çalıştır: Linux/macOS
  • Eylem:
    • KDC'den TGT almak için kinit username@DOMAIN.COMPANY.COM komutunu kullanın, ardından sistem sizden etki alanı parolanızı ister.
    • Kullanılabilir biletleri görmek için klist kullanın. Kinit başarılı olursa, krbtgt/DOMAIN.COMPANY.COM@ DOMAIN.COMPANY.COM'dan bir bilet görmeniz gerekir.

ActiveDirectoryPassword kimlik doğrulama modunu kullanarak bağlanma

Aşağıdaki örnekte authentication=ActiveDirectoryPassword modunun nasıl kullanılacağı gösterilmektedir.

Örneği derlemek ve çalıştırmak için:

  1. İstemci kurulum gereksinimlerigerekli bağımlı kitaplıklara sahip olduğunuzdan emin olun.

  2. Aşağıdaki kod satırlarını bulun ve sunucu/veritabanı adını sunucu/veritabanı adınızla değiştirin.

    ds.setServerName("msentra-managed-demo.database.windows.net"); // replace 'msentra-managed-demo' with your server name
    ds.setDatabaseName("demo"); // replace with your database name
    
  3. Aşağıdaki kod satırlarını bulun. Kullanıcı adını, bağlanmak istediğiniz Microsoft Entra kullanıcısının adıyla değiştirin.

    ds.setUser("bob@example.com"); // replace with your username
    ds.setPassword("password");     // replace with your password
    

ActiveDirectoryPassword kimlik doğrulama modunu kullanma örneği:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

public class MSEntraUserPassword {

    public static void main(String[] args) throws Exception{

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setServerName("msentra-managed-demo.database.windows.net"); // Replace with your server name
        ds.setDatabaseName("demo"); // Replace with your database
        ds.setUser("bob@example.com"); // Replace with your username
        ds.setPassword("password"); // Replace with your password
        ds.setAuthentication("ActiveDirectoryPassword");

        try (Connection connection = ds.getConnection();
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
            if (rs.next()) {
                System.out.println("You have successfully logged on as: " + rs.getString(1));
            }
        }
    }
}

Bağlantı kurulursa, çıktı olarak aşağıdaki iletiyi görmeniz gerekir:

You have successfully logged on as: <your user name>

ActiveDirectoryInteractive kimlik doğrulama modunu kullanarak bağlanma

Aşağıdaki örnekte authentication=ActiveDirectoryInteractive modunun nasıl kullanılacağı gösterilmektedir.

Örneği derlemek ve çalıştırmak için:

  1. İstemci kurulum gereksinimlerigerekli bağımlı kitaplıklara sahip olduğunuzdan emin olun.

  2. Aşağıdaki kod satırlarını bulun ve sunucu/veritabanı adını sunucu/veritabanı adınızla değiştirin.

    ds.setServerName("msentra-managed-demo.database.windows.net"); // replace 'msentra-managed-demo' with your server name
    ds.setDatabaseName("demo"); // replace with your database name
    
  3. Aşağıdaki kod satırlarını bulun. kullanıcı adını, bağlanmak istediğiniz Microsoft Entra kullanıcısının adıyla değiştirin.

    ds.setUser("bob@example.com"); // replace with your username
    

ActiveDirectoryInteractive kimlik doğrulama modunu kullanma örneği:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

public class MSEntraInteractive {
    public static void main(String[] args) throws Exception{

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setServerName("msentra-managed-demo.database.windows.net"); // Replace with your server name
        ds.setDatabaseName("demo"); // Replace with your database
        ds.setAuthentication("ActiveDirectoryInteractive");

        // Optional login hint
        ds.setUser("bob@example.com"); // Replace with your user name

        try (Connection connection = ds.getConnection();
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
            if (rs.next()) {
                System.out.println("You have successfully logged on as: " + rs.getString(1));
            }
        }
    }
}

Programı çalıştırdığınızda, kullanıcının kimliğini doğrulamak için bir tarayıcı görüntülenir. Tam olarak ne göreceğiniz, Microsoft Entra Kimliğinizi nasıl yapılandırdığınıza bağlıdır. Telefon aracılığıyla kullanıcı adı, parola, PIN veya ikinci cihaz kimlik doğrulaması için çok faktörlü kimlik doğrulaması istemleri içerebilir veya içermeyebilir. Aynı programda birden çok etkileşimli kimlik doğrulama isteği yapılırsa, daha sonraki istekler kimlik doğrulama kitaplığının önceden önbelleğe alınmış bir kimlik doğrulama belirtecini yeniden kullanılıp kullanılamadığını bile sormayabilir.

Microsoft Entra Id'yi çok faktörlü kimlik doğrulaması gerektirecek şekilde yapılandırma hakkında bilgi için bkz. Bulutta Microsoft Entra çok faktörlü kimlik doğrulamasını kullanmaya başlama.

Bu iletişim kutularının ekran görüntüleri için bkz. Microsoft Entra çok faktörlü kimlik doğrulamasını kullanma.

Kullanıcı kimlik doğrulaması başarıyla tamamlanırsa, tarayıcıda aşağıdaki iletiyi görmeniz gerekir:

Authentication complete. You can close the browser and return to the application.

Bu ileti yalnızca kullanıcı kimlik doğrulamasının başarılı olduğunu gösterir, ancak sunucuya başarılı bir bağlantı olması gerekmez. Uygulamaya geri döndüğünüzde, sunucuya bir bağlantı kurulursa, çıktı olarak aşağıdaki iletiyi görmeniz gerekir:

You have successfully logged on as: <your user name>

ActiveDirectoryServicePrincipal kimlik doğrulama modunu kullanarak bağlanma

Aşağıdaki örnekte authentication=ActiveDirectoryServicePrincipal modunun nasıl kullanılacağı gösterilmektedir.

Örneği derlemek ve çalıştırmak için:

  1. İstemci kurulum gereksinimlerigerekli bağımlı kitaplıklara sahip olduğunuzdan emin olun.

  2. Aşağıdaki kod satırlarını bulun ve sunucu/veritabanı adını sunucu/veritabanı adınızla değiştirin.

    ds.setServerName("msentra-managed-demo.database.windows.net"); // replace 'msentra-managed-demo' with your server name
    ds.setDatabaseName("demo"); // replace with your database name
    
  3. Aşağıdaki kod satırlarını bulun. principalId değerini, bağlanmak istediğiniz Microsoft Entra hizmet sorumlusunun Uygulama Kimliği / İstemci Kimliği ile değiştirin. principalSecret değerini gizli ile değiştirin.

    String principalId = "<service_principal_guid>"; // Replace with your Microsoft Entra service principal ID.
    String principalSecret = "..."; // Replace with your Microsoft Entra principal secret.
    
  4. Sürüm 10.2 ve sonrasında setUser ve setPassword kullanarak, sürüm 9.4 ve altında ise setAADSecurePrincipalId ve setAADSecurePrincipalSecret kullanarak ana kimliği ve anahtarını ayarlayın.

ActiveDirectoryServicePrincipal kimlik doğrulama modunu kullanma örneği:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

public class MSEntraServicePrincipal {
    public static void main(String[] args) throws Exception{
        String principalId = "<service_principal_guid>"; // Replace with your Microsoft Entra service principal ID.
        String principalSecret = "..."; // Replace with your Microsoft Entra principal secret.

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setServerName("msentra-managed-demo.database.windows.net"); // Replace with your server name
        ds.setDatabaseName("demo"); // Replace with your database
        ds.setAuthentication("ActiveDirectoryServicePrincipal");
        ds.setUser(principalId); // setAADSecurePrincipalId for JDBC Driver 9.4 and below
        ds.setPassword(principalSecret); // setAADSecurePrincipalSecret for JDBC Driver 9.4 and below 

        try (Connection connection = ds.getConnection();
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
            if (rs.next()) {
                System.out.println("You have successfully logged on as: " + rs.getString(1));
            }
        }
    }
}

Bir bağlantı kurulursa, çıktı olarak aşağıdaki iletiyi görmeniz gerekir:

You have successfully logged on as: <your app/client ID>

ActiveDirectoryServicePrincipalCertificate kimlik doğrulama modunu kullanarak bağlanma

Aşağıdaki örnekte authentication=ActiveDirectoryServicePrincipalCertificate modunun nasıl kullanılacağı gösterilmektedir.

Örneği derlemek ve çalıştırmak için:

  1. İstemci kurulum gereksinimlerigerekli bağımlı kitaplıklara sahip olduğunuzdan emin olun.

  2. Aşağıdaki kod satırlarını bulun ve sunucu/veritabanı adını sunucu/veritabanı adınızla değiştirin.

    ds.setServerName("msentra-managed-demo.database.windows.net"); // replace 'msentra-managed-demo' with your server name
    ds.setDatabaseName("demo"); // replace with your database name
    
  3. Aşağıdaki kod satırlarını bulun. principalId değerini, bağlanmak istediğiniz Microsoft Entra hizmet sorumlusunun Uygulama Kimliği / İstemci Kimliği ile değiştirin. değerini clientCertificate hizmet sorumlusu sertifikasının dosya yolu ile değiştirin.

    String principalId = "<service_principal_guid>"; // Replace with your Microsoft Entra service principal ID.
    
    String clientCertificate = "..."; // Replace with the path to your Microsoft Entra service principal certificate.
    
  4. Daha önce bahsedilen sertifikanın bir parolaya ihtiyacı varsa, sürüm 10.2 ve üstünde setPassword veya sürüm 9.4 ve altındaysa setAADSecurePrincipalSecret kullanarak ana Gizliyi ayarlayın.

  5. Sertifikanın ilişkili bir özel anahtarı varsa, setClientKeykullanarak özel anahtarı ayarlayın. Bu anahtar parola gerektiriyorsa, setClientKeyPasswordkullanarak özel anahtarın parolasını ayarlayın.

ActiveDirectoryServicePrincipalCertificate kimlik doğrulama modunu kullanma örneği:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

public class MSEntraServicePrincipalCertificate {
    public static void main(String[] args) throws Exception{
        String principalId = "<service_principal_guid>"; // Replace with your Microsoft Entra service principal ID.
        String clientCertificate = "..."; // Replace with the path to your service principal certificate.

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setServerName("msentra-managed-demo.database.windows.net"); // Replace with your server name
        ds.setDatabaseName("demo"); // Replace with your database
        ds.setAuthentication("ActiveDirectoryServicePrincipalCertificate");
        ds.setUser(principalId); // setAADSecurePrincipalId for JDBC Driver 9.4 and below
        ds.setClientCertificate(clientCertificate);

        try (Connection connection = ds.getConnection();
             Statement stmt = connection.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
            if (rs.next()) {
                System.out.println("You have successfully logged on as: " + rs.getString(1));
            }
        }
    }
}

Bir bağlantı kurulursa, çıktı olarak aşağıdaki iletiyi görmeniz gerekir:

You have successfully logged on as: <your app/client ID>

Erişim belirteci kullanarak bağlanma

Uygulamalar/hizmetler Microsoft Entra Id'den bir erişim belirteci alabilir ve bunu Kullanarak Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Azure Synapse Analytics'e bağlanabilir.

Not

accessToken yalnızca DriverManager sınıfındaki getConnection() yönteminin Properties parametresi kullanılarak ayarlanabilir. Bağlantı dizesinde kullanılamaz. Sürücü sürümü 12.2'den başlayarak, kullanıcılar bağlantı havuzu senaryolarında belirteç yenilemesi için sürücüye accessToken bir geri çağırma uygulayabilir ve sağlayabilir. Bağlantı havuzu senaryoları, bağlantı havuzu uygulamasının standartJDBC bağlantı havuzu sınıflarını kullanmasını gerektirir.

Aşağıdaki örnek, erişim belirteci tabanlı kimlik doğrulaması kullanarak Azure'a bağlanan basit bir Java uygulaması içerir.

Örneği derlemek ve çalıştırmak için:

  1. Hizmetiniz için Microsoft Entra Id'de bir uygulama hesabı oluşturun.

    1. Azure portalında oturum açın.
    2. Sol gezinti bölmesinde Microsoft Entra ID gidin.
    3. Uygulama kayıtları seçin.
    4. Seçin yeni kayıt.
    5. Uygulama için kolay ad olarak mytokentest girin.
    6. Uygulamayı kullanabilen desteklenen hesap türleri için varsayılan seçimi değiştirmeyin.
    7. Alttaki kaydet'i seçin.
    8. SIGN-ON URL'si gerekmez. Herhangi bir şeyi sağlayabilirsiniz: https://mytokentest.
    9. Alttaki Create seçin.
    10. kaydetseçildiğinde uygulama hemen oluşturulur ve kaynak sayfasına yönlendirilirsiniz.
    11. Temel Bilgiler kutusunda Uygulama (istemci) kimliğini bulun ve kopyalayın. Uygulamanızı yapılandırmak için daha sonra bu değere ihtiyacınız vardır.
    12. Gezinti bölmesinden Sertifikalar & gizlileri seçin. İstemci sırları (0) sekmesinde, Yeni istemci gizli anahtarı oluştur'u seçin. Gizli için bir açıklama girin ve bir süre sonu seçin (varsayılanı kullanabilirsiniz). Alttaki 'ı seçin, ardından'i ekleyin. Önemli: Bu sayfadan ayrılmadan önce, müşteri gizli bilgisi için oluşturulan Değer kopyalayın. Bu değer sayfadan çıktıktan sonra görüntülenemez. Bu değer istemci sırrıdır.
    13. Microsoft Entra Id için Uygulama kayıtları bölmesine dönün ve Uç Noktaları sekmesini bulun. OAuth 2.0 token endpointaltındaki URL'yi kopyalayın. Bu URL, STS URL'nizdir.
  2. Veritabanınıza Microsoft Entra yöneticisi olarak bağlanın ve uygulama sorumlunuz için bağımsız veritabanı kullanıcısı sağlamak üzere bir T-SQL komutu kullanın. Microsoft Entra kimlik doğrulamasını kullanarak nasıl bağlanılacağı ve Microsoft Entra yöneticisi ile bağımsız bir veritabanı kullanıcısı oluşturma hakkında daha fazla bilgi için bkz. Bağlanma.

    CREATE USER [mytokentest] FROM EXTERNAL PROVIDER
    
  3. Örneği çalıştırdığınız istemci makinesinde Java kitaplığı ve bağımlılıkları için Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) indirin. MSAL yalnızca bu özel örneği çalıştırmak için gereklidir. Örnek, Microsoft Entra Id'den erişim belirtecini almak için bu kitaplıktan API'leri kullanır. Zaten bir erişim belirteciniz varsa, bu adımı atlayabilir ve örnekteki erişim belirtecini alan bölümü kaldırabilirsiniz.

Aşağıdaki örnekte STS URL'si, İstemci Kimliği, gizli dizi, sunucu ve veritabanı adını değerlerinizle değiştirin.

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

// The microsoft-authentication-library-for-java is needed to retrieve the access token in this example.
import com.microsoft.aad.msal4j.ClientCredentialFactory;
import com.microsoft.aad.msal4j.ClientCredentialParameters;
import com.microsoft.aad.msal4j.ConfidentialClientApplication;
import com.microsoft.aad.msal4j.IAuthenticationResult;
import com.microsoft.aad.msal4j.IClientCredential;

public class MSEntraTokenBased {

    public static void main(String[] args) throws Exception {

        // Retrieve the access token from Microsoft Entra ID.
        String spn = "https://database.windows.net/";
        String stsurl = "https://login.microsoftonline.com/..."; // Replace with your STS URL.
        String clientId = "<service_principal_guid>"; // Replace with your client ID.
        String clientSecret = "..."; // Replace with your client secret.

        String scope = spn +  "/.default";
        Set<String> scopes = new HashSet<>();
        scopes.add(scope);

        ExecutorService executorService = Executors.newSingleThreadExecutor();
        IClientCredential credential = ClientCredentialFactory.createFromSecret(clientSecret);
        ConfidentialClientApplication clientApplication = ConfidentialClientApplication
            .builder(clientId, credential).executorService(executorService).authority(stsurl).build();
        CompletableFuture<IAuthenticationResult> future = clientApplication
            .acquireToken(ClientCredentialParameters.builder(scopes).build());

        IAuthenticationResult authenticationResult = future.get();
        String accessToken = authenticationResult.accessToken();

        System.out.println("Access Token: " + accessToken);

        // Connect with the access token.
        SQLServerDataSource ds = new SQLServerDataSource();

        ds.setServerName("msentra-managed-demo.database.windows.net"); // Replace with your server name.
        ds.setDatabaseName("demo"); // Replace with your database name.
        ds.setAccessToken(accessToken);

        try (Connection connection = ds.getConnection();
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
            if (rs.next()) {
                System.out.println("You have successfully logged on as: " + rs.getString(1));
            }
        }
    }
}

Bağlantı başarılı olursa, çıktı olarak aşağıdaki iletiyi görmeniz gerekir:

Access Token: <your access token>
You have successfully logged on as: <your client ID>

Erişim belirteci geri çağırma kullanarak bağlanma

Erişim belirteci özelliği gibi erişim belirteci geri çağırması da sürücüye erişim belirteci sağlayan bir yöntem kaydetmenizi sağlar. Bu geri çağırmanın özelliğe göre avantajı, belirtecin süresi dolduğunda geri çağırmanın sürücünün yeni bir erişim belirteci talep etmesine izin vermesidir. Örneğin, yeni bağlantı oluşturan bir bağlantı havuzu yeni bir son kullanma tarihiyle yeni bir belirteç isteyebilir. Daha fazla bilgi için bkz. Bağlantı havuzu kullanımı.

Aşağıdaki örnekte accessToken geri çağırmasının uygulanması ve ayarlanması gösterilmektedir.

import com.microsoft.aad.msal4j.IClientCredential;
import com.microsoft.aad.msal4j.ClientCredentialFactory;
import com.microsoft.aad.msal4j.ConfidentialClientApplication;
import com.microsoft.aad.msal4j.IAuthenticationResult;
import com.microsoft.aad.msal4j.ClientCredentialParameters;
import java.sql.Connection;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MSEntraAccessTokenCallback {

    public static void main(String[] args) {

        SQLServerAccessTokenCallback callback = new SQLServerAccessTokenCallback() {
            @Override
            public SqlAuthenticationToken getAccessToken(String spn, String stsurl) {

                String clientSecret = "..."; // Replace with your client secret.
                String clientId = "<service_principal_guid>"; // Replace with your client ID.

                String scope = spn + "/.default";
                Set<String> scopes = new HashSet<>();
                scopes.add(scope);

                try {
                    ExecutorService executorService = Executors.newSingleThreadExecutor();
                    IClientCredential credential = ClientCredentialFactory.createFromSecret(clientSecret);
                    ConfidentialClientApplication clientApplication = ConfidentialClientApplication
                            .builder(clientId, credential).executorService(executorService).authority(stsurl).build();
                    CompletableFuture<IAuthenticationResult> future = clientApplication
                            .acquireToken(ClientCredentialParameters.builder(scopes).build());

                    IAuthenticationResult authenticationResult = future.get();
                    String accessToken = authenticationResult.accessToken();

                    return new SqlAuthenticationToken(accessToken, authenticationResult.expiresOnDate().getTime());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        };

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setServerName("msentra-managed-demo.database.windows.net"); // Replaces with your server name.
        ds.setDatabaseName("demo"); // Replace with your database name.
        ds.setAccessTokenCallback(callback);

        try (Connection connection = ds.getConnection();
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
            if (rs.next()) {
                System.out.println("You have successfully logged on as: " + rs.getString(1));
            }
        }
    }
}

Bağlantı başarılı olursa, çıktı olarak aşağıdaki iletiyi görmeniz gerekir:

You have successfully logged on as: <your client ID>

Sürüm 12.4'ten başlayarak, accessToken geri çağırma accessTokenCallbackClass bağlantı dizesi özelliği aracılığıyla ayarlanabilir. Aşağıdaki örnekte, bu özelliği kullanarak accessToken geri çağırmanın nasıl ayarlanacağı gösterilmektedir:

import com.microsoft.aad.msal4j.IClientCredential;
import com.microsoft.aad.msal4j.ClientCredentialFactory;
import com.microsoft.aad.msal4j.ConfidentialClientApplication;
import com.microsoft.aad.msal4j.IAuthenticationResult;
import com.microsoft.aad.msal4j.ClientCredentialParameters;
import java.sql.Connection;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

 

public class MSEntraAccessTokenCallbackClass {
    public static class AccessTokenCallbackClass implements SQLServerAccessTokenCallback {
        @Override
        public SqlAuthenticationToken getAccessToken(String spn, String stsurl) {
            String clientSecret = "..."; // Replace with your client secret.
            String clientId = "<service_principal_guid>"; // Replace with your client ID.
            
            String scope = spn + "/.default";
            Set<String> scopes = new HashSet<>();
            scopes.add(scope);
            
            try {
                ExecutorService executorService = Executors.newSingleThreadExecutor();
                IClientCredential credential = ClientCredentialFactory.createFromSecret(clientSecret);
                ConfidentialClientApplication clientApplication = ConfidentialClientApplication

                        .builder(clientId, credential).executorService(executorService).authority(stsurl).build();
                
                CompletableFuture<IAuthenticationResult> future = clientApplication
                        .acquireToken(ClientCredentialParameters.builder(scopes).build());
                
                IAuthenticationResult authenticationResult = future.get();
                String accessToken = authenticationResult.accessToken();
                
                return new SqlAuthenticationToken(accessToken, authenticationResult.expiresOnDate().getTime());
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    
    public static void main(String[] args) throws Exception {
        
        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setServerName("msentra-managed-demo.database.windows.net"); // Replaces with your server name.
        ds.setDatabaseName("demo"); // Replace with your database name.
        ds.setAccessTokenCallbackClass(AccessTokenCallbackClass.class.getName());
        
        try (Connection connection = ds.getConnection();
             Statement stmt = connection.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT SUSER_SNAME()")) {
            if (rs.next()) {
                System.out.println("You have successfully logged on as: " + rs.getString(1));
            }
        }
    }
}

Bağlantı başarılı olursa, çıktı olarak aşağıdaki iletiyi görmeniz gerekir:

You have successfully logged on as: <your client ID>

Sonraki adımlar

aşağıdaki makalelerde ilgili kavramlar hakkında daha fazla bilgi edinin: