Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }