Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
        private List <IEnrollFactor> PrepareEnrollFactors(IAuthenticationResponse authenticationResponse)
        {
            List <IEnrollFactor> enrollFactorsList = new List <IEnrollFactor>();

            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);
                    string     isFactorRequired       = IsFactorRequired(factorObj);
                    string     factorEnrollmentStatus = GetFactorEnrollStatus(factorObj);
                    string     factorId = GetEnrollFactorId(factorObj.FactorType);
                    factorObj.FactorKey = factorKey;
                    string[] supportedFactors = { "sms:OKTA" };
                    if (supportedFactors.Contains(factorKey) && isFactorRequired == "REQUIRED" && factorEnrollmentStatus == "NOT_SETUP")
                    {
                        IEnrollFactor enrollFactor = this.CreateEnrollFactorObject(factorObj);
                        enrollFactorsList.Add(enrollFactor);
                    }
                }
            }

            return(enrollFactorsList);
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Adds a key value pair to the IDictionary<string, IVerifyFactor> VerifyFactors global object
 /// </summary>
 /// <param name="factorKey"></param>
 /// <param name="factorInfo"></param>
 private void AddVerifyFactor(string factorKey, FactorInfo factorInfo)
 {
     if (!this.VerifyFactors.ContainsKey(factorKey))
     {
         this.VerifyFactors.Add(factorKey, this.CreateFactorObject(factorInfo));
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// The CreateEnrollFactorObject
        /// </summary>
        /// <param name="factorInfo">The factorInfo<see cref="FactorInfo"/></param>
        /// <returns>The <see cref="IEnrollFactor"/></returns>
        public IEnrollFactor CreateEnrollFactorObject(FactorInfo factorInfo)
        {
            IEnrollFactor enrollFactor = null;

            if (factorInfo.FactorKey == "sms:OKTA")
            {
                SmsFactorEnroll smsFactorEnroll = new SmsFactorEnroll(this.authnClient, this)
                {
                    Id                = factorInfo.Id,
                    Profile           = factorInfo.Profile,
                    FactorType        = factorInfo.FactorType,
                    Provider          = factorInfo.Provider,
                    VendorName        = factorInfo.VendorName,
                    Links             = factorInfo.Links,
                    FactorDisplayName = "SMS Authentication",
                    Enrollment        = factorInfo.Enrollment,
                    Status            = factorInfo.Status,
                };
                enrollFactor = smsFactorEnroll;
            }

            return(enrollFactor);
        }
Exemplo n.º 6
0
        /// <summary>
        /// The ProcessAuthnResponse
        /// </summary>
        /// <param name="authenticationResponse">The authenticationResponse<see cref="IAuthenticationResponse"/></param>
        public void ProcessAuthnResponse(IAuthenticationResponse authenticationResponse)
        {
            // this.logger.Debug("ProcessAuthnResponse sessionToken: " + authenticationResponse.SessionToken);
            this.AuthenticationResponse = (AuthenticationResponse)authenticationResponse;
            this.Status       = authenticationResponse.AuthenticationStatus;
            this.SessionToken = authenticationResponse.SessionToken;
            this.StateToken   = authenticationResponse.StateToken;

            this.SaveAuthenticationStatus(this.Status);

            if (this.Status == "MFA_REQUIRED")
            {
                List <IVerifyFactor> verifyFactorsList = this.PrepareVerifyFactors(authenticationResponse);
                this.AssignVerifyFactors(verifyFactorsList);
                PolicyInfo policyInfo = this.PreparePolicyInfo(authenticationResponse);
                this.AssignPolicyInfo(policyInfo);
            }
            else if (this.Status == "MFA_CHALLENGE")
            {
                var        factorResponse = JsonConvert.SerializeObject(authenticationResponse.Embedded["factor"]);
                FactorInfo factorObj      = JsonConvert.DeserializeObject <FactorInfo>(factorResponse);
                string     factorKey      = GetFactorKey(factorObj);
            }
            else if (this.Status == "MFA_ENROLL")
            {
                List <IEnrollFactor> enrollFactorsList = this.PrepareEnrollFactors(authenticationResponse);
                this.AssignEnrollFactors(enrollFactorsList);
            }
            else if (this.Status == "PASSWORD_WARN")
            {
                if (!this.DonotChallengeCheckBoxState)
                {
                    this.signOnPolicyRegistryHelper.AssignDeviceToken(this.username);
                }

                PolicyExpiration policyExpiration = this.PreparePolicyExpirationObject(authenticationResponse);
                this.AssignPolicyExpirationObj(policyExpiration);
                PolicyComplexity policyComplexity = this.PreparePolicyComplexityObject(authenticationResponse);
                this.AssignPolicyComplexityObj(policyComplexity);
                PolicyAge policyAge = this.PreparePolicyAgeObject(authenticationResponse);
                this.AssignPolicyAgeObj(policyAge);
            }
            else if (this.Status == "PASSWORD_EXPIRED")
            {
                if (!this.DonotChallengeCheckBoxState)
                {
                    this.signOnPolicyRegistryHelper.AssignDeviceToken(this.username);
                }

                PolicyComplexity policyComplexity = this.PreparePolicyComplexityObject(authenticationResponse);
                this.AssignPolicyComplexityObj(policyComplexity);
                PolicyAge policyAge = this.PreparePolicyAgeObject(authenticationResponse);
                this.AssignPolicyAgeObj(policyAge);
            }
            else if (this.Status == "SUCCESS")
            {
                //
            }

            // State changed
            this.OnStateChange(this.Status);
        }
Exemplo n.º 7
0
        /// <summary>
        /// The GetFactorEnrollStatus
        /// </summary>
        /// <param name="factorObj">The factorObj<see cref="FactorInfo"/></param>
        /// <returns>The <see cref="string"/></returns>
        public static string GetFactorEnrollStatus(FactorInfo factorObj)
        {
            string factorEnrollStatus = factorObj.Status;

            return(factorEnrollStatus);
        }
Exemplo n.º 8
0
        /// <summary>
        /// The IsFactorRequired
        /// </summary>
        /// <param name="factorObj">The factorObj<see cref="FactorInfo"/></param>
        /// <returns>The <see cref="string"/></returns>
        public static string IsFactorRequired(FactorInfo factorObj)
        {
            string isFactorRequired = factorObj.Enrollment;

            return(isFactorRequired);
        }
Exemplo n.º 9
0
        /// <summary>
        /// The GetFactorKey
        /// </summary>
        /// <param name="factorObj">The factorObj<see cref="FactorInfo"/></param>
        /// <returns>The <see cref="string"/></returns>
        public static string GetFactorKey(FactorInfo factorObj)
        {
            string factorKey = factorObj.FactorType + ":" + factorObj.Provider;

            return(factorKey);
        }