Exemple #1
0
        public static void CheckMobileDevicePolicyIsCorrect(string methodName, CallContext callContext)
        {
            if (!callContext.IsMowa)
            {
                Microsoft.Exchange.Diagnostics.Components.Clients.ExTraceGlobals.MobileDevicePolicyTracer.TraceDebug(0L, "[OWAMessageInspector::CheckMobileDevicePolicyIsCorrect] Request is not coming from a MOWA session. Skipping policy check.");
                return;
            }
            if (string.IsNullOrEmpty(callContext.MobileDevicePolicyId))
            {
                Microsoft.Exchange.Diagnostics.Components.Clients.ExTraceGlobals.MobileDevicePolicyTracer.TraceDebug(0L, "[OWAMessageInspector::CheckMobileDevicePolicyIsCorrect] Client isn't passing policy information (old client). Skipping policy check.");
                return;
            }
            if (methodName.Equals("GetOwaUserConfiguration", StringComparison.OrdinalIgnoreCase))
            {
                Microsoft.Exchange.Diagnostics.Components.Clients.ExTraceGlobals.MobileDevicePolicyTracer.TraceDebug(0L, "[OWAMessageInspector::CheckMobileDevicePolicyIsCorrect] Executing GetOwaUserConfiguration method. Skipping policy check.");
                callContext.UpdateLastPolicyTime();
                return;
            }
            if (methodName.Equals("PingOwa", StringComparison.OrdinalIgnoreCase))
            {
                Microsoft.Exchange.Diagnostics.Components.Clients.ExTraceGlobals.MobileDevicePolicyTracer.TraceDebug(0L, "[OWAMessageInspector::CheckMobileDevicePolicyIsCorrect] Executing PingOwa method. Skipping policy check.");
                return;
            }
            ADObjectId             policy     = null;
            MobileDevicePolicyData policyData = MobileDevicePolicyDataFactory.GetPolicyData(callContext.AccessingPrincipal, out policy);

            callContext.UpdatePolicyApplied(policy);
            string mobileDevicePolicyId = callContext.MobileDevicePolicyId;

            if (policyData != null && !string.Equals(policyData.PolicyIdentifier, mobileDevicePolicyId, StringComparison.Ordinal))
            {
                callContext.MarkDeviceAsBlockedByPolicy();
                string effectiveAccessingSmtpAddress = callContext.GetEffectiveAccessingSmtpAddress();
                Microsoft.Exchange.Diagnostics.Components.Clients.ExTraceGlobals.MobileDevicePolicyTracer.TraceWarning(0L, "[OWAMessageInspector::CheckMobileDevicePolicyIsCorrect] Policy Identifier does not match expected value. Expected: '{0}'. Actual: '{1}'. Method: '{2}'. User: '******'.", new object[]
                {
                    policyData.PolicyIdentifier,
                    mobileDevicePolicyId,
                    methodName,
                    effectiveAccessingSmtpAddress
                });
                throw new OwaInvalidMobileDevicePolicyException(string.Format("The presented mobile device policy id '{0}' is not valid. Method '{1}' is being rejected.", mobileDevicePolicyId, methodName), effectiveAccessingSmtpAddress, policyData.PolicyIdentifier);
            }
            callContext.MarkDeviceAsAllowed();
        }
Exemple #2
0
        internal static MobileDevicePolicyData GetPolicyData(ExchangePrincipal principal)
        {
            ADObjectId adobjectId = null;

            return(MobileDevicePolicyDataFactory.GetPolicyData(principal, out adobjectId));
        }
Exemple #3
0
 private MobileDevicePolicyData ReadAggregatedMobileDevicePolicyData(UserConfigurationManager.IAggregationContext ctx, ExchangePrincipal principal)
 {
     return(UserContextUtilities.ReadAggregatedType <MobileDevicePolicyData>(ctx, "OWA.MobileDevicePolicy", () => MobileDevicePolicyDataFactory.GetPolicyData(principal)));
 }
Exemple #4
0
        internal static MobileDevicePolicySettingsType GetPolicySettings(ExchangePrincipal principal)
        {
            MobileDevicePolicyData policyData = MobileDevicePolicyDataFactory.GetPolicyData(principal);

            return(MobileDevicePolicyDataFactory.GetPolicySettings(policyData));
        }