Esempio n. 1
0
        // Token: 0x0600027F RID: 639 RVA: 0x0001122C File Offset: 0x0000F42C
        private static bool CheckClaimSetsForTOUClaims(OperationContext operationContext, ReadOnlyCollection <ClaimSet> claimSets, bool checkConsumerClaims)
        {
            string claimTypeToTest  = checkConsumerClaims ? "http://schemas.xmlsoap.org/claims/ConsumerChild" : "http://schemas.xmlsoap.org/claims/Child";
            string claimTypeToTest2 = checkConsumerClaims ? "http://schemas.xmlsoap.org/claims/ConsumerTOUAccepted" : "http://schemas.xmlsoap.org/claims/TOUAccepted";
            string claimTypeToTest3 = checkConsumerClaims ? "http://schemas.xmlsoap.org/claims/ConsumerConsentLevel" : "http://schemas.xmlsoap.org/claims/ConsentLevel";

            AutodiscoverAuthorizationManager.ConsentLevel?consentLevel = null;
            bool?flag  = null;
            bool?flag2 = null;

            foreach (ClaimSet claimSet in claimSets)
            {
                foreach (Claim claim in claimSet)
                {
                    if (AutodiscoverAuthorizationManager.DoesClaimMatch(claim, claimTypeToTest, Rights.PossessProperty))
                    {
                        flag = AutodiscoverAuthorizationManager.ProcessTrueFalseClaim(claim);
                    }
                    else if (AutodiscoverAuthorizationManager.DoesClaimMatch(claim, claimTypeToTest2, Rights.PossessProperty))
                    {
                        flag2 = AutodiscoverAuthorizationManager.ProcessTrueFalseClaim(claim);
                    }
                    else if (AutodiscoverAuthorizationManager.DoesClaimMatch(claim, claimTypeToTest3, Rights.PossessProperty))
                    {
                        consentLevel = AutodiscoverAuthorizationManager.ProcessConsentLevelClaim(claim);
                    }
                    if (flag != null && flag2 != null && (!flag.Value || consentLevel != null))
                    {
                        break;
                    }
                }
                if (flag != null && flag2 != null && (!flag.Value || consentLevel != null))
                {
                    break;
                }
            }
            if (checkConsumerClaims && flag == null && flag2 == null && consentLevel == null)
            {
                return(false);
            }
            if (flag == null)
            {
                return(AutodiscoverAuthorizationManager.Return401UnauthorizedResponse(operationContext, "Didn't find child claim"));
            }
            if (flag2 == null)
            {
                return(AutodiscoverAuthorizationManager.Return401UnauthorizedResponse(operationContext, "Didn't find TOU claim"));
            }
            if (flag.Value && consentLevel == null)
            {
                return(AutodiscoverAuthorizationManager.Return401UnauthorizedResponse(operationContext, "Didn't find consent level claim for child"));
            }
            if (!flag2.Value)
            {
                return(AutodiscoverAuthorizationManager.Return401UnauthorizedResponse(operationContext, "TOU was not accepted"));
            }
            return(!flag.Value || consentLevel.Value != AutodiscoverAuthorizationManager.ConsentLevel.None || AutodiscoverAuthorizationManager.Return401UnauthorizedResponse(operationContext, "Child with no consent"));
        }