/// <summary> /// The CreateFactorObject /// </summary> /// <param name="factorInfo">The factorInfo<see cref="FactorInfo"/></param> /// <returns>The <see cref="IVerifyFactor"/></returns> public IVerifyFactor CreateFactorObject(FactorInfo factorInfo) { IVerifyFactor verifyFactor = null; if (factorInfo.FactorKey == "sms:OKTA") { SmsFactor smsFactor = new SmsFactor(this.authnClient, this) { Id = factorInfo.Id, Profile = factorInfo.Profile, FactorType = factorInfo.FactorType, Provider = factorInfo.Provider, VendorName = factorInfo.VendorName, Links = factorInfo.Links, FactorDisplayName = "SMS Authentication", }; verifyFactor = smsFactor; } else if (factorInfo.FactorKey == "email:OKTA") { EmailFactor emailFactor = new EmailFactor(this.authnClient, this) { Id = factorInfo.Id, Profile = factorInfo.Profile, FactorType = factorInfo.FactorType, Provider = factorInfo.Provider, VendorName = factorInfo.VendorName, Links = factorInfo.Links, FactorDisplayName = "Email Authentication", }; verifyFactor = emailFactor; } return(verifyFactor); }
/// <summary> /// The PrepareVerifyFactors /// </summary> /// <param name="authenticationResponse">The authenticationResponse<see cref="IAuthenticationResponse"/></param> /// <returns>The <see cref="List{IVerifyFactor}"/></returns> private List <IVerifyFactor> PrepareVerifyFactors(IAuthenticationResponse authenticationResponse) { List <IVerifyFactor> verifyFactorsList = new List <IVerifyFactor>(); //this.logger.Debug("ProcessAuthnResponse stateToken: " + authenticationResponse.StateToken); if (authenticationResponse.Embedded.GetData().ContainsKey("factors")) { string stringResponse = JsonConvert.SerializeObject(authenticationResponse.Embedded.GetData()["factors"]); List <object> factorsList = JsonConvert.DeserializeObject <List <object> >(stringResponse); this.OktaFactorCount = factorsList.Count; foreach (var factor in factorsList) { string factorStringResponse = JsonConvert.SerializeObject(factor); FactorInfo factorObj = JsonConvert.DeserializeObject <FactorInfo>(factorStringResponse); string factorKey = GetFactorKey(factorObj); factorObj.FactorKey = factorKey; string[] supportedFactors = { "sms:OKTA", "email:OKTA" }; if (supportedFactors.Contains(factorKey)) { IVerifyFactor verifyFactor = this.CreateFactorObject(factorObj); verifyFactorsList.Add(verifyFactor); } else { this.OktaFactorCount -= 1; } } } return(verifyFactorsList); }
/// <summary> /// The GetFactorKey /// </summary> /// <param name="factorObj">The factorObj<see cref="IVerifyFactor"/></param> /// <returns>The <see cref="string"/></returns> public static string GetFactorKey(IVerifyFactor factorObj) { string factorKey = factorObj.FactorType + ":" + factorObj.Provider; return(factorKey); }