private string GetKerberosTicket(string spn)
        {
            var clientUpn = ConfigurationManager.AppSettings["Client_UPN"];

            Console.WriteLine($"Client_UPN: {clientUpn}");
            Console.WriteLine($"SPN: {spn}");

            EnsureTgt(clientUpn);

            using (var clientCredentials = GssCredentials.FromKeytab(clientUpn, CredentialUsage.Initiate))
            {
                using (var initiator = new GssInitiator(credential: clientCredentials, spn: spn))
                {
                    try
                    {
                        var kerberosTicket = Convert.ToBase64String(initiator.Initiate(null));
                        Console.WriteLine($"Ticket: {kerberosTicket}");
                        return($"Negotiate {kerberosTicket}");
                    }
                    catch (GssException exception)
                    {
                        Console.Error.WriteLine(exception.Message);
                        return(string.Empty);
                    }
                }
            }
        }
        private string GetKerberosTicket(string targetServiceUpn, string clientUpn)
        {
            this.Logger().LogDebug($"Getting TGT for UPN '{clientUpn}'");
            EnsureTgt(clientUpn);

            this.Logger().LogDebug($"Getting client credentials for UPN '{clientUpn}' using the provided keytab file");
            using (var clientCredentials = GssCredentials.FromKeytab(clientUpn, CredentialUsage.Initiate))
            {
                this.Logger().LogDebug($"Initiating kerberos client connection");
                using (var initiator = new GssInitiator(credential: clientCredentials, spn: targetServiceUpn))
                {
                    try
                    {
                        this.Logger().LogDebug($"Getting kerberos ticket for UPN '{clientUpn}'");
                        var kerberosTicket = Convert.ToBase64String(initiator.Initiate(null));
                        this.Logger().LogTrace($"Ticket: {kerberosTicket}");
                        return($"Negotiate {kerberosTicket}");
                    }
                    catch (GssException exception)
                    {
                        this.Logger().LogError(exception.Message);
                        return(string.Empty);
                    }
                }
            }
        }
 public static byte[] GetTicket()
 {
     using (var clientCredentials = GssCredentials.FromKeytab(ClientSPN, CredentialUsage.Initiate))
         using (var initiator = new GssInitiator(credential: clientCredentials, spn: SqlServerSPN))
         {
             return(initiator.Initiate(null));
         }
 }