예제 #1
0
 public WebService(int port, ICredentialValidator credentialsValidator, RestApiConfiguration restApiConfig)
 {
   _port = port;
   _credentialsValidator = credentialsValidator;
   _restApi = new RestApi(restApiConfig);
   Logging = Logger.Instance as ILogging;
 }
예제 #2
0
 public static void ThrowIfInvalid(this ICredentialValidator v, Credential c)
 {
     if (!v.isValid(c))
     {
         throw new UnauthorizedAccessException("the credentials are not valid");
     }
 }
예제 #3
0
        private static LoginViewModel CreateSut(
            IHudUtility hudUtility                   = null,
            IAlertUtility alertUtility               = null,
            ICredentialStorage credentialStorage     = null,
            ICredentialValidator credentialValidator = null,
            IBackgroundSyncUtility backgroundSync    = null
            )
        {
            if (credentialValidator == null)
            {
                credentialValidator = Substitute.For <ICredentialValidator>();

                credentialValidator.ValidateAsync(Arg.Any <Credentials>())
                .Returns(Task.FromResult(Result.Success));
            }

            if (credentialStorage == null)
            {
                credentialStorage = Substitute.For <ICredentialStorage>();

                credentialStorage.SaveCredentialsAsync(Arg.Any <Credentials>())
                .Returns(Task.FromResult(Result.Success));
            }

            return(new LoginViewModel(
                       credentialValidator,
                       credentialStorage,
                       hudUtility ?? Substitute.For <IHudUtility>(),
                       alertUtility ?? Substitute.For <IAlertUtility>(),
                       backgroundSync ?? Substitute.For <IBackgroundSyncUtility>()
                       ));
        }
 public DocumentController(IDmsTransactionalUnitOfWork unitOfWork)
 {
     this.unitOfWork          = unitOfWork;
     documentOperations       = new DocumentOperations(unitOfWork);
     documentTransactions     = new DocumentTransactions(unitOfWork);
     this.credentialValidator = CredentialValidationFactory.CreateDefaultInstance();
 }
예제 #5
0
        public AuthenticationService(
            IEntitiesContext entities, IAppConfiguration config, IDiagnosticsService diagnostics,
            IAuditingService auditing, IEnumerable <Authenticator> providers, ICredentialBuilder credentialBuilder,
            ICredentialValidator credentialValidator, IDateTimeProvider dateTimeProvider,
            ILdapService ldapService)
        {
            if (entities == null)
            {
                throw new ArgumentNullException(nameof(entities));
            }

            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            if (diagnostics == null)
            {
                throw new ArgumentNullException(nameof(diagnostics));
            }

            if (auditing == null)
            {
                throw new ArgumentNullException(nameof(auditing));
            }

            if (providers == null)
            {
                throw new ArgumentNullException(nameof(providers));
            }

            if (credentialBuilder == null)
            {
                throw new ArgumentNullException(nameof(credentialBuilder));
            }

            if (credentialValidator == null)
            {
                throw new ArgumentNullException(nameof(credentialValidator));
            }

            if (dateTimeProvider == null)
            {
                throw new ArgumentNullException(nameof(dateTimeProvider));
            }

            InitCredentialFormatters();

            Entities             = entities;
            _config              = config;
            Auditing             = auditing;
            _trace               = diagnostics.SafeGetSource("AuthenticationService");
            Authenticators       = providers.ToDictionary(p => p.Name, StringComparer.OrdinalIgnoreCase);
            _credentialBuilder   = credentialBuilder;
            _credentialValidator = credentialValidator;
            _dateTimeProvider    = dateTimeProvider;

            this.Ldap = ldapService;
        }
예제 #6
0
        public AuthenticationService(
            IEntitiesContext entities, IAppConfiguration config, IDiagnosticsService diagnostics,
            AuditingService auditing, IEnumerable<Authenticator> providers, ICredentialBuilder credentialBuilder,
            ICredentialValidator credentialValidator, IDateTimeProvider dateTimeProvider)
        {
            if (entities == null)
            {
                throw new ArgumentNullException(nameof(entities));
            }

            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            if (diagnostics == null)
            {
                throw new ArgumentNullException(nameof(diagnostics));
            }

            if (auditing == null)
            {
                throw new ArgumentNullException(nameof(auditing));
            }

            if (providers == null)
            {
                throw new ArgumentNullException(nameof(providers));
            }

            if (credentialBuilder == null)
            {
                throw new ArgumentNullException(nameof(credentialBuilder));
            }

            if (credentialValidator == null)
            {
                throw new ArgumentNullException(nameof(credentialValidator));
            }

            if (dateTimeProvider == null)
            {
                throw new ArgumentNullException(nameof(dateTimeProvider));
            }

            InitCredentialFormatters();

            Entities = entities;
            _config = config;
            Auditing = auditing;
            _trace = diagnostics.SafeGetSource("AuthenticationService");
            Authenticators = providers.ToDictionary(p => p.Name, StringComparer.OrdinalIgnoreCase);
            _credentialBuilder = credentialBuilder;
            _credentialValidator = credentialValidator;
            _dateTimeProvider = dateTimeProvider;
        }
예제 #7
0
 public ApiAuthenticationHandler(
     ICredentialValidator credentialValidator,
     IUserRepository userRepository,
     IOptionsMonitor <AuthenticationSchemeOptions> options,
     ILoggerFactory logger,
     UrlEncoder encoder,
     ISystemClock clock) : base(options, logger, encoder, clock)
 {
     _credentialValidator = credentialValidator;
     _userRepository      = userRepository;
 }
예제 #8
0
 public UserService(IUserRepository userRepository, IEncrypterService encrypterService,
                    IJwtHandler jwtHandler, IMapper mapper, ILogger <UserService> logger, IMemoryCache cache, ICredentialValidator credentialValidator)
 {
     _userRepository      = userRepository;
     _encrypterService    = encrypterService;
     _jwtHandler          = jwtHandler;
     _mapper              = mapper;
     _logger              = logger;
     _cache               = cache;
     _credentialValidator = credentialValidator;
 }
예제 #9
0
 public LoginViewModel(
     ICredentialValidator credentialValidator,
     ICredentialStorage credentialStorage,
     IHudUtility hud,
     IAlertUtility alerts,
     IBackgroundSyncUtility backgroundSync
     )
 {
     _credentialValidator = credentialValidator;
     _credentialStorage   = credentialStorage;
     _hud            = hud;
     _alerts         = alerts;
     _backgroundSync = backgroundSync;
 }
예제 #10
0
        public AuthenticationService(
            IEntitiesContext entities, IAppConfiguration config, IDiagnosticsService diagnostics,
            IAuditingService auditing, IEnumerable <Authenticator> providers, ICredentialBuilder credentialBuilder,
            ICredentialValidator credentialValidator, IDateTimeProvider dateTimeProvider, ITelemetryService telemetryService)
        {
            InitCredentialFormatters();

            Entities             = entities ?? throw new ArgumentNullException(nameof(entities));
            _config              = config ?? throw new ArgumentNullException(nameof(config));
            _trace               = diagnostics?.SafeGetSource("AuthenticationService") ?? throw new ArgumentNullException(nameof(diagnostics));
            Auditing             = auditing ?? throw new ArgumentNullException(nameof(auditing));;
            Authenticators       = providers?.ToDictionary(p => p.Name, StringComparer.OrdinalIgnoreCase) ?? throw new ArgumentNullException(nameof(providers));
            _credentialBuilder   = credentialBuilder ?? throw new ArgumentNullException(nameof(credentialBuilder));
            _credentialValidator = credentialValidator ?? throw new ArgumentNullException(nameof(credentialValidator));
            _dateTimeProvider    = dateTimeProvider ?? throw new ArgumentNullException(nameof(dateTimeProvider));
            _telemetryService    = telemetryService ?? throw new ArgumentNullException(nameof(telemetryService));
        }
예제 #11
0
        public SqlCredentialValidatorIntegrationTests()
        {
            _sqlCredentialValidatorSettings = new SqlCredentialValidatorSettings
            {
                ConnectionString = ConfigurationManager.ConnectionStrings["TestDatabase"].ConnectionString,
                QueryTimeout     = TimeSpan.Parse(ConfigurationManager.AppSettings["QueryTimeout"])
            };

            _hashingProvider        = new Sha256HashingProvider();
            _sqlCredentialValidator = new SqlCredentialValidator(_sqlCredentialValidatorSettings, _hashingProvider);

            _sqlUserRepositorySettings = new SqlUserRepositorySettings
            {
                ConnectionString = ConfigurationManager.ConnectionStrings["TestDatabase"].ConnectionString,
                QueryTimeout     = TimeSpan.Parse(ConfigurationManager.AppSettings["QueryTimeout"])
            };

            _userRepository = new SqlUserRepository(_sqlUserRepositorySettings);
        }
예제 #12
0
		private ActionResult ValidateCredential(HttpContextBase httpContext, CredentialPrincipal principal, ICredentialValidator validator)
		{
			//获取凭证提供者服务
			var credentialProvider = this.CredentialProvider;

			if(credentialProvider == null)
				throw new MissingMemberException(this.GetType().FullName, "CredentialProvider");

			//如果指定的主体为空,或对应的凭证编号不存在,或对应的凭证已过期则返回未验证结果
			if(principal == null || principal.Identity == null || !credentialProvider.Validate(principal.Identity.CredentialId))
				return new HttpUnauthorizedResult();

			//使用凭证验证器对指定的凭证进行验证,如果验证失败
			if(validator != null && !validator.Validate(principal.Identity.Credential))
			{
				//如果当前请求的路径是主页,并且是从登录页面跳转而来的返回特定的结果
				if(httpContext.Request.Path == "/" && httpContext.Request.UrlReferrer != null && string.Equals(httpContext.Request.UrlReferrer.LocalPath, AuthenticationUtility.GetLoginUrl(), StringComparison.OrdinalIgnoreCase))
					return new HttpStatusCodeResult(444, "Invalid Credential");

				return new HttpStatusCodeResult(System.Net.HttpStatusCode.Forbidden);
			}

			//返回空,表示成功
			return null;
		}
 public BasicAuthorizationProvider(string realm, ICredentialValidator credentialValidator)
 {
     _realm = realm;
     _credentialValidator = credentialValidator;
 }
예제 #14
0
		internal static AuthorizationMode GetAuthorizationMode(ActionDescriptor actionDescriptor, System.Web.Routing.RequestContext requestContext, out string schemaId, out string actionId, out ICredentialValidator validator)
		{
			schemaId = null;
			actionId = null;
			validator = null;

			//查找位于Action方法的授权标记
			var attribute = (AuthorizationAttribute)actionDescriptor.GetCustomAttributes(typeof(Zongsoft.Security.Membership.AuthorizationAttribute), true).FirstOrDefault();

			if(attribute == null)
			{
				//查找位于Controller类的授权标记
				attribute = (AuthorizationAttribute)actionDescriptor.ControllerDescriptor.GetCustomAttributes(typeof(Zongsoft.Security.Membership.AuthorizationAttribute), true).FirstOrDefault();

				if(attribute == null)
					return AuthorizationMode.Disabled;

				validator = attribute.Validator;

				if(attribute.Mode == AuthorizationMode.Required)
				{
					schemaId = string.IsNullOrWhiteSpace(attribute.SchemaId) ? GetSchemaId(actionDescriptor.ControllerDescriptor.ControllerName, requestContext.RouteData.Values["area"] as string) : attribute.SchemaId;
					actionId = actionDescriptor.ActionName;
				}

				return attribute.Mode;
			}

			validator = attribute.Validator;

			if(attribute.Mode != AuthorizationMode.Required)
				return attribute.Mode;

			schemaId = attribute.SchemaId;
			actionId = string.IsNullOrWhiteSpace(attribute.ActionId) ? actionDescriptor.ActionName : attribute.ActionId;

			if(string.IsNullOrWhiteSpace(schemaId))
			{
				var controllerAttribute = (AuthorizationAttribute)Attribute.GetCustomAttribute(actionDescriptor.ControllerDescriptor.ControllerType, typeof(Zongsoft.Security.Membership.AuthorizationAttribute), true);

				if(controllerAttribute == null || string.IsNullOrWhiteSpace(controllerAttribute.SchemaId))
					schemaId = GetSchemaId(actionDescriptor.ControllerDescriptor.ControllerName, requestContext.RouteData.Values["area"] as string);
				else
					schemaId = controllerAttribute.SchemaId;
			}

			return attribute.Mode;
		}
 public CustomerOrderController(INorthWindTransactionalUnitOfWork unitOfWork)
 {
     this.unitOfWork          = unitOfWork;
     orderOperations          = new OrderOperations(unitOfWork);
     this.credentialValidator = CredentialValidationFactory.CreateDefaultInstance();
 }