HealthMonitoring.SelfHost.Security.AuthenticationFilter.AuthenticateAsync C# (CSharp) Méthode

AuthenticateAsync() public méthode

public AuthenticateAsync ( System.Web.Http.Filters.HttpAuthenticationContext context, CancellationToken cancellationToken ) : Task
context System.Web.Http.Filters.HttpAuthenticationContext
cancellationToken System.Threading.CancellationToken
Résultat Task
        public Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken)
        {
            IPrincipal principal = null;
            GenericIdentity identity;

            var credentials = context.ParseAuthorizationHeader();
            var adminCred = CredentialsProvider.GetAdminCredentials();
            var pullCred = CredentialsProvider.GetMonitorCredentials();

            if (credentials == null)
                return Task.FromResult(0);

            if (credentials.Equals(adminCred))
            {
                identity = new GenericIdentity(credentials.Id.ToString());
                principal = new GenericPrincipal(identity, new[] { SecurityRole.Admin.ToString() });

            }else if (credentials.Equals(pullCred))
            {
                identity = new GenericIdentity(pullCred.Id.ToString());
                principal = new GenericPrincipal(identity, new[] {SecurityRole.Monitor.ToString()});
            }
            else
            {
                string encryptedPassword = credentials.Password.ToSha256Hash();
                var endpoint = EndpointRegistry.GetById(credentials.Id);

                if (endpoint?.Password == encryptedPassword)
                {
                    context.Request.Properties[_passwordKey] = encryptedPassword;
                    identity = new GenericIdentity(credentials.Id.ToString());
                    principal = new GenericPrincipal(identity, null);
                }
            }

            context.Principal = principal;

            return Task.FromResult(0);
        }

Usage Example

        public void AuthenticatoionFilter_should_save_principal_with_pullmonitor_credentials()
        {
            var authContext = GetAuthContext(_pullMonitorCredentials);
            var filter = new AuthenticationFilter(_endpointRegistryMock.Object, _credentialsProviderMock.Object);

            filter.AuthenticateAsync(authContext, CancellationToken.None);

            Assert.Equal(authContext.Principal.Identity.Name, _pullMonitorCredentials.Id.ToString());
        }
All Usage Examples Of HealthMonitoring.SelfHost.Security.AuthenticationFilter::AuthenticateAsync