We have a MacOS app that includes a system extension with A content filter using both socket and packet providers.
Our normal method for deployment will be by an MDM solution, for which we have created a profile intended to pre-approve the system extension and content filter.
This works correctly for the system extension but we are unable to get the content filter pre-approval to work. We have scoured this and other forums and docs but there is no clear reason why our web content filter profile doesn't work.
Our payload for the web content filter looks like this:
dict
keyFilterDataProviderBundleIdentifier/key
stringcom.example.ourapp.net/string
keyFilterDataProviderDesignatedRequirement/key
stringidentifier "com.example.ourapp.net" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = TEAMIDXXXX/string
keyFilterPacketProviderBundleIdentifier/key
stringcom.example.ourapp.net/string
keyFilterPacketProviderDesignatedRequirement/key
stringidentifier "com.example.ourapp.net" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = TEAMIDXXXX/string
keyFilterPackets/key
true/
keyFilterSockets/key
true/
keyFilterType/key
stringPlugin/string
keyFilterGrade/key
stringfirewall/string
keyPayloadDescription/key
stringWeb Content Filter Payload/string
keyPayloadDisplayName/key
stringWeb Content Filters/string
keyPayloadEnabled/key
true/
keyPayloadIdentifier/key
stringcom.apple.webcontent-filter.8237701A-4ED8-473A-AC86-4BEFF6662A62/string
keyPayloadType/key
stringcom.apple.webcontent-filter/string
keyPayloadUUID/key
string8237701A-4ED8-473A-AC86-4BEFF6662A62/string
keyPayloadVersion/key
integer1/integer
keyPluginBundleID/key
stringcom.example.ourapp/string
keyUserDefinedName/key
stringExample OurApp/string
/dict
For the filter Filter[Data|Packet]ProviderBundleIdentifier and the Filter[Data|PacketProvider]DesignatedRequirement fields, the values are derived from using codesign -dr- path to system extension bundle.
For the PluginBundleID the value is the identifier of the enclosing app. This requirement is mention in this post - https://developer.apple.com/forums/thread/667016.
The rest of the fields are derived from the various examples online.
Beyond this, I can't see any reason this should not work. There are reports from some users saying they have got their profiles to work but can't confirm that.
Is there something wrong in the payload above?
Are we missing some fields?
Are there any specific requirements for some of these fields I have missed?
I can't find detailed documentation for this payload for content filters.
We're testing on mainly on Catalina, is pre-approval of content filter actually working for Catalina? Big Sur?
Any pointers would be appreciated. Thanks.
Topic:
App & System Services
SubTopic:
Core OS
Tags:
macOS
System Extensions
Device Management
Network Extension