コード例 #1
0
        public async Task ExecuteAsync(CacheItem cacheItem)
        {
            if (string.IsNullOrEmpty(cacheItem.Fido2CredentialId))
            {
                return;
            }

            var userExists = await _checkUserExistenceCommand.ExecuteAsync(new UserIdentification
            {
                AuthenticatorType = ExtAuthenticatorType.Fido2,
                UserIdentifier    = cacheItem.Fido2CredentialId
            });

            if (userExists && cacheItem.ChallengeType != ChallengeType.Login)
            {
                throw new OwnIdException(ErrorType.UserAlreadyExists);
            }

            if (!userExists)
            {
                await _cacheItemRepository.UpdateAsync(cacheItem.Context, item =>
                {
                    item.Fido2CredentialId = null;
                });
            }
        }
コード例 #2
0
        public async Task Execute_Null_UserIdentifier()
        {
            var fixture     = new Fixture().SetOwnidSpecificSettings();
            var userHandler = fixture.Create <Mock <IUserHandlerAdapter> >();
            var command     = new CheckUserExistenceCommand(userHandler.Object);

            var result = await command.ExecuteAsync(new UserIdentification());

            userHandler.VerifyNoOtherCalls();
            result.Should().BeFalse();
        }
コード例 #3
0
        public async Task Execute_Null_AuthenticatorType()
        {
            var fixture     = new Fixture().SetOwnidSpecificSettings();
            var userHandler = fixture.Create <Mock <IUserHandlerAdapter> >();
            var command     = new CheckUserExistenceCommand(userHandler.Object);
            var userId      = fixture.Create <string>();

            userHandler.Setup(x => x.IsUserExistsAsync(It.Is <string>(v => userId == v)))
            .Returns(Task.FromResult(true));

            var result = await command.ExecuteAsync(new UserIdentification
            {
                UserIdentifier = userId
            });

            result.Should().Be(true);
        }
コード例 #4
0
        protected override async Task <ITransitionResult> ExecuteInternalAsync(TransitionInput <UserIdentification> input,
                                                                               CacheItem relatedItem)
        {
            var result = await _checkUserExistenceCommand.ExecuteAsync(input.Data);

            if (result)
            {
                throw new OwnIdException(ErrorType.UserAlreadyExists);
            }

            var composeInfo = new BaseJwtComposeInfo(input)
            {
                Behavior = GetNextBehaviorFunc(input, relatedItem)
            };

            var jwt = JwtComposer.GenerateBaseStepJwt(composeInfo);

            return(new JwtContainer(jwt));
        }