Beispiel #1
0
 public DesignClient(ISignIn signIn, ISignUp signUp, IContacts contacts, IMessages messages)
 {
     SignIn   = signIn;
     SignUp   = signUp;
     Contacts = contacts;
     Messages = messages;
 }
Beispiel #2
0
 private bool IsLocked(ISignIn signIn)
 {
     if (signIn is ISignInSupportsLockout signInSupportedLockout && signInSupportedLockout.LockoutEnd > DateTimeOffset.UtcNow)
     {
         return(true);
     }
     return(false);
 }
Beispiel #3
0
        public async Task RefreshSignInAsync(ISignIn signIn)
        {
            var auth = await _contextAccessor.HttpContext.AuthenticateAsync(SignInConstants.ApplicationScheme);

            var authenticationMethod = auth?.Principal?.FindFirstClaimValue(ClaimTypes.AuthenticationMethod);

            await SignInAsync(signIn, auth?.Properties.IsPersistent ?? false, auth?.Properties, authenticationMethod);
        }
        public SignupSignInViewModel(ISignIn signIn, NameOf welcomeMessage, NameOf startTrialMessage)
        {
            _signinState       = signIn;
            _welcomeMessage    = welcomeMessage;
            _startTrialMessage = startTrialMessage;

            InitializePropertyValues();
            BindPropertyChangedEvents();
            SubscribeToModelEvents();
        }
 public LoginController(
     UserManager <ApplicationUser> userManager,
     SignInManager <ApplicationUser> signInManager,
     IConfiguration configuration)
 {
     _userManager   = userManager ?? throw new ArgumentNullException(nameof(userManager));
     _signInManager = signInManager ?? throw new ArgumentNullException(nameof(signInManager));
     _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
     _signIn        = new SignIn(userManager, configuration);
 }
 public virtual string Generate(string purpose, ISignIn signIn)
 {
     if (signIn is ISignInSupportsSecurityStamp supportsSecurityStamp)
     {
         var token    = GetBytes(supportsSecurityStamp.SecurityStamp);
         var modifier = GetModifier(purpose, signIn);
         return(Rfc6238AuthenticationService.GenerateCode(token, modifier).ToString("D6", CultureInfo.InvariantCulture));
     }
     return(String.Empty);
 }
 public virtual bool Validate(string purpose, string token, ISignIn signIn)
 {
     if (signIn is ISignInSupportsSecurityStamp supportsSecurityStamp && int.TryParse(token, out int code))
     {
         var securityToken = GetBytes(supportsSecurityStamp.SecurityStamp);
         var modifier      = GetModifier(purpose, signIn);
         return(securityToken != null && Rfc6238AuthenticationService.ValidateCode(securityToken, code, modifier));
     }
     return(false);
 }
Beispiel #8
0
        private async Task <bool> TwoFactorSignInAsync(ISignIn signIn)
        {
            if (signIn is ISignInSupportsTwoFactor supportsTwoFactor &&
                supportsTwoFactor.RequireTwoFactorSignIn &&
                !await IsTwoFactorClientRememberedAsync(signIn.Id))
            {
                await TwoFactorSignInAsync(signIn.Id);

                return(true);
            }

            return(false);
        }
Beispiel #9
0
        public IEnumerable <string> GetTwoFactorProviders(ISignIn signIn)
        {
            var providers = new List <string>();

            foreach (var kv in _options.ProviderMap)
            {
                var provider = (ITokenProvider)_serviceProvider.GetService(kv.Value);
                if (provider.CanGenerateTwoFactorToken(signIn))
                {
                    providers.Add(kv.Key);
                }
            }
            return(providers);
        }
Beispiel #10
0
        public async Task <SignInResult> ExternalSignInAsync(ISignIn signIn, string loginProvider, bool isPersistent)
        {
            await _contextAccessor.HttpContext.SignOutAsync(SignInConstants.ExternalScheme);

            if (IsLocked(signIn))
            {
                return(SignInResult.LockedOut);
            }

            if (await TwoFactorSignInAsync(signIn))
            {
                return(SignInResult.TwoFactorSuccess);
            }

            return(await SignInAsync(signIn, isPersistent, loginProvider));
        }
Beispiel #11
0
        private async Task <SignInResult> SignInAsync(ISignIn signIn, bool isPersistent, AuthenticationProperties properties, string authenticationMethod = null)
        {
            var userPrincipal = await _claimsPrincipalFactory.CreateAsync(signIn);

            if (authenticationMethod != null)
            {
                userPrincipal.Identities.First().AddClaim(new Claim(_options.ClaimsIdentityOptions.AuthenticationMethodClaimType, authenticationMethod));
            }

            await _contextAccessor.HttpContext.SignInAsync(
                SignInConstants.ApplicationScheme,
                userPrincipal,
                properties ?? new AuthenticationProperties());

            return(SignInResult.Success);
        }
Beispiel #12
0
        public Task <SignInResult> SignInAsync(ISignIn signIn, bool isPersistent, string authenticationMethod = null)
        {
            AuthenticationProperties props = null;

            if (_options.AllowRememberLogin && isPersistent)
            {
                props = new AuthenticationProperties
                {
                    IsPersistent = true,
                    ExpiresUtc   = DateTimeOffset.UtcNow + _options.RememberLoginDuration,
                };
            }
            ;

            return(SignInAsync(signIn, isPersistent, props, authenticationMethod));
        }
Beispiel #13
0
        public virtual bool Validate(string purpose, string token, ISignIn signIn)
        {
            try
            {
                var unprotectedData = _protector.Unprotect(Convert.FromBase64String(token));
                var memoryStream    = new MemoryStream(unprotectedData);
                using (var reader = memoryStream.CreateReader())
                {
                    var creationTime = reader.ReadDateTimeOffset();
                    if (DateTimeOffset.UtcNow > creationTime + ConfirmationTokenLifespan)
                    {
                        return(false);
                    }

                    var storedUserId = reader.ReadString();
                    if (storedUserId != signIn.Id)
                    {
                        return(false);
                    }

                    var storedPurpose = reader.ReadString();
                    if (storedPurpose != purpose)
                    {
                        return(false);
                    }

                    if (signIn is ISignInSupportsSecurityStamp supportsSecurityStamp && supportsSecurityStamp.SecurityStamp != null)
                    {
                        var storedSecurityToken = reader.ReadString();
                        if (storedSecurityToken != supportsSecurityStamp.SecurityStamp)
                        {
                            return(false);
                        }
                    }

                    return(true);
                }
            }
            catch
            {
                // nothing
            }

            return(false);
        }
Beispiel #14
0
        public virtual string Generate(string purpose, ISignIn signIn)
        {
            var memoryStream = new MemoryStream();

            using (var writer = memoryStream.CreateWriter())
            {
                writer.Write(DateTimeOffset.UtcNow);
                writer.Write(signIn.Id);
                writer.Write(purpose);
                if (signIn is ISignInSupportsSecurityStamp supportsSecurityStamp && supportsSecurityStamp.SecurityStamp != null)
                {
                    writer.Write(supportsSecurityStamp.SecurityStamp);
                }
            }

            var protectedBytes = _protector.Protect(memoryStream.ToArray());

            return(Convert.ToBase64String(protectedBytes));
        }
Beispiel #15
0
        public async Task <SignInResult> SignInByPasswordAsync(ISignIn signIn, string password, bool isPersistent)
        {
            if (IsLocked(signIn))
            {
                return(SignInResult.LockedOut);
            }

            if (signIn is ISignInSupportsPassword supportsPassword &&
                supportsPassword.PasswordHash != null &&
                _passwordHasher.VerifyPassword(password, supportsPassword.PasswordHash))
            {
                if (await TwoFactorSignInAsync(signIn))
                {
                    return(SignInResult.TwoFactorSuccess);
                }

                return(await SignInAsync(signIn, isPersistent));
            }

            return(SignInResult.Failed);
        }
Beispiel #16
0
 public bool Validate(string purpose, string token, ISignIn signIn)
 {
     if (signIn is ISignInSupportsAuthenticator supportsAuthenticator)
     {
         var key = supportsAuthenticator.AuthenticatorToken;
         if (int.TryParse(token, out int code))
         {
             var hash          = new HMACSHA1(Base32.FromBase32(key));
             var unixTimestamp = Convert.ToInt64(Math.Round((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds));
             var timestep      = Convert.ToInt64(unixTimestamp / 30);
             for (int i = -2; i <= 2; i++)
             {
                 var expectedCode = Rfc6238AuthenticationService.ComputeTotp(hash, (ulong)(timestep + i), modifier: null);
                 if (expectedCode == code)
                 {
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
Beispiel #17
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public MainMenuViewModel(ISignIn signIn,
                                 IRegionManager regionManager,
                                 IDialogManager dialogManager,
                                 MalinkaUser user,
                                 MainMenuStatus menuStatus,
                                 IContainer container)
        {
            this.signIn        = signIn;
            this.regionManager = regionManager;
            this.dialogManager = dialogManager;
            this.menuStatus    = menuStatus;
            User = user;

            ShowContactsCommand       = new DelegateCommand(ShowContacts);
            ShowSettingsCommand       = new DelegateCommand(ShowSettings);
            LogOutCommand             = new DelegateCommand(LogOut);
            OpenMalinkaDesktopCommand = new DelegateCommand(OpenMalinkaDesktop);

            Assembly        assembly        = Assembly.GetExecutingAssembly();
            FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location);

            Version = fileVersionInfo.ProductVersion;
        }
Beispiel #18
0
        public async Task <SignInResult> SignInByTwoFactorTokenAsync(ISignIn signIn, string tokenProvider, string token, bool isPersistent, bool rememberClient)
        {
            if (IsLocked(signIn))
            {
                return(SignInResult.LockedOut);
            }

            var tp = _tokenProviderManager.FindTokenProvider(tokenProvider);

            if (tp != null && tp.Validate(Purpose.TwoFactor, token, signIn))
            {
                if (rememberClient)
                {
                    await RememberTwoFactorClientAsync(signIn.Id);
                }

                await _contextAccessor.HttpContext.SignOutAsync(SignInConstants.TwoFactorUserIdScheme);

                return(await SignInAsync(signIn, isPersistent, tokenProvider));
            }

            return(SignInResult.Failed);
        }
        public virtual Task <ClaimsPrincipal> CreateAsync(ISignIn signIn)
        {
            var claimsIdentity = new ClaimsIdentity(SignInConstants.ApplicationScheme,
                                                    _options.ClaimsIdentityOptions.NameClaimType,
                                                    _options.ClaimsIdentityOptions.RoleClaimType);

            claimsIdentity.AddClaim(new Claim(_options.ClaimsIdentityOptions.IdClaimType, signIn.Id));
            claimsIdentity.AddClaim(new Claim(_options.ClaimsIdentityOptions.NameClaimType, signIn.Name));
            if (signIn is ISignInSupportsSecurityStamp supportsSecurityStamp && supportsSecurityStamp.SecurityStamp != null)
            {
                claimsIdentity.AddClaim(new Claim(_options.ClaimsIdentityOptions.SecurityStampClaimType,
                                                  supportsSecurityStamp.SecurityStamp));
            }
            if (signIn is ISignInSupportsRoles supportsRoles)
            {
                claimsIdentity.AddClaims(supportsRoles.Roles.Select(x => new Claim(_options.ClaimsIdentityOptions.RoleClaimType, x)));
            }
            if (signIn is ISignInSupportsClaims supportsClaims)
            {
                claimsIdentity.AddClaims(supportsClaims.Claims.Select(x => new Claim(x.Type, x.Value)));
            }

            return(Task.FromResult(new ClaimsPrincipal(claimsIdentity)));
        }
Beispiel #20
0
 /// <summary>
 /// This request can be used to create a user
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='model'>
 /// </param>
 public static ResQYttriumWebApiModelsCreateUserResultModel CreateUser(this ISignIn operations, ResQYttriumWebApiModelsCreateUserModel model)
 {
     return(Task.Factory.StartNew(s => ((ISignIn)s).CreateUserAsync(model), operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
Beispiel #21
0
 /// <summary>
 /// This request can be used to acquire an access token to access a specific
 /// application resource for the user
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='model'>
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <ResQYttriumWebApiModelsSignInResultModel> SignInUserAsync(this ISignIn operations, ResQYttriumWebApiModelsSignInUserModel model, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.SignInUserWithHttpMessagesAsync(model, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Beispiel #22
0
 public bool CanGenerateTwoFactorToken(ISignIn signIn)
 {
     return(signIn is ISignInSupportsAuthenticator supportsAuthenticator &&
            !string.IsNullOrWhiteSpace(supportsAuthenticator.AuthenticatorToken));
 }
Beispiel #23
0
 public string Generate(string purpose, ISignIn signIn)
 {
     return(string.Empty);
 }
Beispiel #24
0
 public Presenter(ISignIn isignin)
 {
     iSignIn = isignin;
     db      = new Database();
 }
 public virtual bool CanGenerateTwoFactorToken(ISignIn signIn) =>
 signIn is ISignInSupportsSecurityStamp supportsSecurityStamp && supportsSecurityStamp.SecurityStamp != null;
Beispiel #26
0
 public virtual bool CanGenerateTwoFactorToken(ISignIn signIn)
 {
     return(false);
 }
 public SignInController(ISignIn signIn, ISignUp signUp)
 {
     this.signIn = signIn;
     this.signUp = signUp;
 }
 public MyProfileController(IMyProfile myProfile, IUser user, ISignIn signIn)
 {
     this.user      = user;
     this.myProfile = myProfile;
     this.signIn    = signIn;
 }
Beispiel #29
0
 public EditController(IMyProfile myProfile, ISignUp signUp, ISignIn signIn)
 {
     this.signIn    = signIn;
     this.myProfile = myProfile;
     this.signUp    = signUp; ViewBag.RemoteValidation = "";
 }
 public override bool CanGenerateTwoFactorToken(ISignIn signIn) =>
 signIn is ISignInSupportsPhoneNumber supportsPhoneNumber &&