コード例 #1
0
        public virtual ISafeguardEventListener GetPersistentEventListener()
        {
            if (_disposed)
            {
                throw new ObjectDisposedException("SafeguardConnection");
            }

            if (_authenticationMechanism.GetType() == typeof(PasswordAuthenticator) ||
                _authenticationMechanism.GetType() == typeof(CertificateAuthenticator))
            {
                return(new PersistentSafeguardEventListener(Clone() as ISafeguardConnection));
            }
            throw new SafeguardDotNetException(
                      $"Unable to create persistent event listener from {_authenticationMechanism.GetType()}");
        }
コード例 #2
0
		public async Task<PipelineContinuation> Operate(PipelineContext context)
		{
			var authenticationMechanisms = context.Application.AuthenticationMechanisms;

			IAuthTicket authTicket = null;
			IAuthenticationMechanism authenticationMechanism = null;

			foreach (var authMechanism in authenticationMechanisms)
			{
				authenticationMechanism = authMechanism;
				log.Debug("Trying to identify request using {authenticationMethod}", authMechanism);

				authTicket = await authMechanism.TryIdentify(context);
				if (authTicket != null)
				{
					log.Debug("Request successfully identified using {authenticationMethod}", authMechanism);


					context.SetAuthTicket(authTicket);
					context.Items["__OriginalAuthTicket"] = authTicket;
					context.Items["__AuthenticationMethod"] = authMechanism;
					break;
				}
			}

			if (context.Result != null)
			{
				log.Debug("{authenticationMethod} returned identification challenge, returning", authenticationMechanism.GetType());
				return PipelineContinuation.SkipToPostHandler;
			}

			if (authTicket == null)
			{
				log.Debug("Request unidentified");

				authTicket = new AuthTicket(Guid.Empty);
				context.SetAuthTicket(authTicket);
				context.Items["__OriginalAuthTicket"] = authTicket;
				context.Items["__AuthenticationMethod"] = null;
			}

			return PipelineContinuation.Continue;
		}