public KerberosClient(ILoggerFactory logger = null, params IKerberosTransport[] transports) { this.logger = logger.CreateLoggerSafe <KerberosClient>(); this.clientLoggingScope = this.logger.BeginScope("KerberosClient"); transport = new KerberosTransportSelector(transports); Cache = new MemoryTicketCache(logger); }
/// <summary> /// Create a KerberosClient instance. /// </summary> /// <param name="config">The custom configuration this client should use when making Kerberos requests.</param> /// <param name="logger">A logger instance for recording client logs</param> /// <param name="transports">A collection of network transports that the client /// will attempt to use to communicate with the KDC</param> public KerberosClient(Krb5Config config = null, ILoggerFactory logger = null, params IKerberosTransport[] transports) { this.Configuration = config ?? Krb5ConfigurationSerializer.Deserialize(string.Empty).ToConfigObject(); this.loggerFactory = logger; this.logger = logger.CreateLoggerSafe <KerberosClient>(); this.clientLoggingScope = this.logger.BeginScope("KerberosClient"); this.transport = new KerberosTransportSelector(transports, this.Configuration, logger) { ScopeId = this.ScopeId }; this.MaximumRetries = 10; }
public static async Task <PingResult> Ping(KerberosCredential credential, Krb5Config config, ILoggerFactory logger = null) { credential.Configuration = config; var asReqMessage = KrbAsReq.CreateAsReq(credential, AuthenticationOptions.Renewable); var asReq = asReqMessage.EncodeApplication(); var transport = new KerberosTransportSelector( new IKerberosTransport[] { new TcpKerberosTransport(logger), new UdpKerberosTransport(logger), new HttpsKerberosTransport(logger) }, config, logger ) { ConnectTimeout = TimeSpan.FromSeconds(5) }; var result = new PingResult { AsReq = asReqMessage }; try { result.AsRep = await transport.SendMessage <KrbAsRep>(credential.Domain, asReq); } catch (KerberosProtocolException pex) { result.Error = pex.Error; } return(result); }
public KerberosClient(params IKerberosTransport[] transports) { transport = new KerberosTransportSelector(transports); }