示例#1
0
        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);
        }
示例#2
0
        /// <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;
        }
示例#3
0
        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);
        }
示例#4
0
 public KerberosClient(params IKerberosTransport[] transports)
 {
     transport = new KerberosTransportSelector(transports);
 }