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(); }
internal static MobileDevicePolicyData GetPolicyData(ExchangePrincipal principal) { ADObjectId adobjectId = null; return(MobileDevicePolicyDataFactory.GetPolicyData(principal, out adobjectId)); }
private MobileDevicePolicyData ReadAggregatedMobileDevicePolicyData(UserConfigurationManager.IAggregationContext ctx, ExchangePrincipal principal) { return(UserContextUtilities.ReadAggregatedType <MobileDevicePolicyData>(ctx, "OWA.MobileDevicePolicy", () => MobileDevicePolicyDataFactory.GetPolicyData(principal))); }
internal static MobileDevicePolicySettingsType GetPolicySettings(ExchangePrincipal principal) { MobileDevicePolicyData policyData = MobileDevicePolicyDataFactory.GetPolicyData(principal); return(MobileDevicePolicyDataFactory.GetPolicySettings(policyData)); }