protected override async Task <ITransitionResult> ExecuteInternalAsync(TransitionInput <JwtContainer> input, CacheItem relatedItem) { var userData = _jwtService.GetDataFromJwt <UserIdentitiesData>(input.Data.Jwt).Data; relatedItem.AuthCookieType = CookieType.Passcode; await _savePartialConnectionCommand.ExecuteAsync(userData, relatedItem); await _userHandlerAdapter.UpgradeConnectionAsync(userData.PublicKey, new OwnIdConnection { AuthType = ConnectionAuthType.Passcode, PublicKey = userData.PublicKey, RecoveryData = userData.RecoveryData, RecoveryToken = relatedItem.RecoveryToken }); var composeInfo = new BaseJwtComposeInfo(input) { Behavior = GetNextBehaviorFunc(input, relatedItem) }; var jwt = JwtComposer.GenerateFinalStepJwt(composeInfo); return(new StateResult(jwt, _cookieService.CreateAuthCookies(relatedItem))); }
private async Task <ITransitionResult> SwitchConnectionAuthTypeAsync(CacheItem relatedItem, TransitionInput <JwtContainer> input, bool supportsFido2, string publicKey) { relatedItem.NewAuthType = supportsFido2 && _configuration.Fido2.IsEnabled ? ConnectionAuthType.Fido2 : ConnectionAuthType.Passcode; var composeInfo = new BaseJwtComposeInfo(input) { EncKey = relatedItem.EncKey, EncVector = relatedItem.EncVector }; switch (relatedItem.NewAuthType) { case ConnectionAuthType.Passcode: composeInfo.Behavior = new FrontendBehavior(StepType.EnterPasscode, relatedItem.ChallengeType, GetNextBehaviorFunc(input, relatedItem)) { AlternativeBehavior = new FrontendBehavior(StepType.ResetPasscode, relatedItem.ChallengeType, new CallAction(UrlProvider.GetResetPasscodeUrl(relatedItem.Context), HttpMethod.Delete.ToString())) }; break; case ConnectionAuthType.Fido2: { await _cacheItemRepository.UpdateAsync(relatedItem.Context, item => item.OldPublicKey = publicKey); var fido2Url = UrlProvider.GetFido2Url(relatedItem.Context, relatedItem.RequestToken, input.CultureInfo?.Name); composeInfo.Behavior = FrontendBehavior.CreateRedirect(fido2Url); break; } default: throw new ArgumentOutOfRangeException(); } var jwt = JwtComposer.GenerateBaseStepJwt(composeInfo); return(new StateResult(jwt, _cookieService.CreateAuthCookies(relatedItem))); }
protected StateResult GenerateResult(TransitionInput <string> input, CacheItem relatedItem) { var composeInfo = new BaseJwtComposeInfo(input) { Behavior = GetNextBehaviorFunc(input, relatedItem), }; var jwt = JwtComposer.GenerateBaseStepJwt(composeInfo, relatedItem.DID); //TODO: add remove other cookies return(new StateResult(jwt, _cookieService.CreateAuthCookies(relatedItem))); }
protected override async Task<ITransitionResult> ExecuteInternalAsync(TransitionInput<JwtContainer> input, CacheItem relatedItem) { relatedItem = await _linkAccountCommand.ExecuteAsync(input.Data, relatedItem); var composeInfo = new BaseJwtComposeInfo(input) { Behavior = GetNextBehaviorFunc(input, relatedItem), }; // TODO: change to generic step generation var jwt = JwtComposer.GenerateFinalStepJwt(composeInfo); return new StateResult(jwt, _cookieService.CreateAuthCookies(relatedItem)); }
protected override async Task <ITransitionResult> ExecuteInternalAsync(TransitionInput <JwtContainer> input, CacheItem relatedItem) { var userData = _jwtService.GetDataFromJwt <UserIdentitiesData>(input.Data.Jwt).Data; await _savePartialConnectionCommand.ExecuteAsync(userData, relatedItem); var composeInfo = new BaseJwtComposeInfo(input) { Behavior = GetNextBehaviorFunc(input, relatedItem), }; var jwt = JwtComposer.GenerateFinalStepJwt(composeInfo); return(new StateResult(jwt, _cookieService.CreateAuthCookies(relatedItem))); }