Ejemplo n.º 1
0
        /// <summary>
        /// Validates the resource owner password credential
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns></returns>
        public Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
        {
            if (_users.ValidateCredentials(context.UserName, context.Password))
            {
                var      user     = _users.FindByUsername(context.UserName);
                var      subject  = user.SubjectId ?? throw new ArgumentException("Subject ID not set", nameof(user.SubjectId));
                DateTime authTime = _clock.UtcNow.UtcDateTime;

                context.Result = new GrantValidationResult(
                    subject,
                    OidcConstants.AuthenticationMethods.Password, authTime, user.Claims);
            }

            return(Task.CompletedTask);
        }