How to configure App Configuration Policies

Introduction

Nine is able to be configured using MDM solutions such as MobileIron, AirWatch and so on. The App Configuration initiative defines a standard way for enterprise application developers to interpret app configurations and security policies from EMM (Enterprise Mobility Management) systems, and for EMM systems to configure and secure mobile applications.

This document describes the steps to be taken by the administrator so that when the user enlists a device with MDM solutions, the Nine installed on the device is automatically configured and secured.

Nine supports the following types of configurations.

  • App service configuration: Host, Port, UseSSL, DeviceIdPrefix, DeviceType

  • User configuration: Username, Email, Domain, DisplayName, Signature, LicenseNumber

  • Branding configuration: Company name, Colors, Logo

  • Security (or Custom) Settings: Sync settings, Print, Share contents

Nine Configuration Settings Values

App Service Configuration

It allows the application to connect to the appropriate app web services for an organization.

Key
Title
Req.
Type/Example/Default/Desc.

AppServicePublisher

Publisher

Yes

Type: String Example: (e.g. MobileIron) Default: Description: MDM service provider

AppServiceHost

Host

Yes

Type: String Example: (e.g. appserver.com) Default: Description: Hostname used to communicate with the application’s primary server (e.g. myserver.com). Application should implement its own default value.

AppServiceHosts

Hosts

No

Type: String Example: (e.g. appserver.com;example.com) Default: Description: If multiple hosts can be configured in the application, they will be sent as a string array. The first host in the list will be used as the default.

AppServiceSecondaryHost

Secondary Host

No

Type: String Example: (e.g. appserver.com) Default: Description: Server address for the subordinate accounts

AppServiceSecondaryHosts

Secondary Hosts

No

Type: String Example: (e.g. appserver.com;example.com) Default: Description: Server addresses for the subordinate accounts.

AppSecondaryEmailDomains

App secondary email domains

No

Type: String Example: (e.g. appserver.com;example.com) Default: Description: Email domains for the subordinate accounts.

AppServicePort

Port

No

Type: Integer Example: (e.g. 443) Default: 443 Description: Port number used to communicate with the application’s primary server (e.g. 443). Application should implement its own default value.

AppServiceUseSSL

Is Ssl Required

No

Type: Boolean Example: (e.g. True, False) Default: True Description: Determines if the application should use SSL when communicating to the applications’ server. Application should implement a default value.

AppServiceSSLTrustAll

Trust All Certificates

No

Type: Boolean Example: (e.g. True, False) Default: True Description: Accept all SSL certificates

AppDeviceIdPrefix

DevicePrefix Identifier

No

Type: String Example: (e.g. MSFT, YHOO) Default: Nine Description: Prefix for distinguishing DeviceID, (4 alphabetic letters)

AppUserAgent

User Agent

No

Type: String Example: (e.g. Nine, MDM) Default: Description: App name which is used in User Agent

AppUserAgentPrefix

User Agent Prefix

No

Type: String Example: Default: Description: Full text which is used in User Agent

AppDeviceId

Device Id

No

Type: String Example: (e.g. {EasDeviceIdentifier}) Default: Description: Device ID that the ActiveSync server uses for the device.

AirWatch SEG (Secure Email Gateway): {EasDeviceIdentifier}

MobileIron Sentry: $DEVICE_SN$

MobileIron Cloud: ${deviceEasIdentifier}

AppDeviceType

Device Type

No

Type: String Example: (e.g. Android) Default: Android Description: Device Type

AppUseLoginCertificate

Use Login Certificate

No

Type: Boolean Example: (e.g. True, False) Default: False Description: Client CA

AppLoginCertificateAlias

Login Certificate alias

No

Type: String Example: Default: Description: Certificate alias

AppReqParamPlaintext

Request param plain text

No

Type: Boolean Example: (e.g. True, False) Default: False Description: "The query value format in the URI contains all of the ActiveSync URI parameters.

e.g.)

Base64:

POST /Microsoft-Server-ActiveSync?jAAJBAp2MTQwRGV2aWNlAApTbWFydFBob25l HTTP/1.1

Plain text:

POST /Microsoft-Server- ActiveSync?Cmd=Sync&User=rmjones&DeviceId=v140Device&DeviceType=SmartPhone HTTP/1.1"

AppUseModernAuthentication

App use modern authentication

No

Type: Boolean Example: (e.g. True, False) Default: False Description: Modern Authentication (ADAL)

AppPasswordEnable

Password required

No

Type: Integer Example: (e.g, -1, 0, 1) Default: -1 Description: App password Enable

-1 : Use Exchange Policy

0 : Disabled

1 : Enabled

AppPasswordComplexity

Password complexity

No

Type: Integer Example: (e.g. 0, 1) Default: 0 Description: App password complexity (0 : Simple, 1: Alphanumeric)

AppPasswordMinLength

Minimum password length

No

Type: Integer Example: (e.g. 4) Default: 0 Description: App Password Minimum length

AppPasswordExpirationDays

Password expiration days

No

Type: Integer Example: (e.g. 90) Default: 0 Description: App Password expiration date

AppPasswordHistory

Password history

No

Type: Integer Example: (e.g. 9) Default: 0 Description: App Password History counts

AppPasswordMaxFailed

Maximum failed password attempts

No

Type: Integer Example: (e.g. 10) Default: 0 Description: App Password Maximum failure counts

AppPasswordLockTime

Password lock time

No

Type: Integer Example: (e.g. 60) Default: 0 Description: App Password Maximum Lock Time (Min.)

AppUseAuthenticationBroker

App use authentication broker

No

Type: Boolean Example: (e.g. True, False) Default: False Description: Broker (Company Portal or Microsoft Authenticator)

AppUserAgentDetails

User agent details

No

Type: String Example: Ex) $OS $VERSION $APP_VERSION $APP_VERSION_CODE Default: Description: Extra information for UserAgent Eg> $OS $VERSION $APP_VERSION $APP_VERSION_CODE (Case sensitive) - SNINE4W-hero2ltexx/NRD90M (Android 7.0.1 4.0.3b 2402300)

AppLauncherShortcuts

App launcher shortcut

No

Type: String Example: [ "Mail", "Calendar", "Contacts", "Tasks", "Notes" ] Default: Description: eg) Add Calendar and Tasks shortcuts as default. [ "Calendar", "Tasks" ]

AppSecureMailLoadRemoteImages

App secure mail load remote images

No

Type: Integer Example: (e.g. -1, 0, 1, 2) Default: -1 Description: -1: User can select the option 0: Do not load 1: Ask before displaying remote images 2: Always display remote images

AppModernAuthenticationEnforcedServers

App modern authentication enforced server

No

Type: String Example: (e.g. outlook.office365.com, m.outlook.com) Default: Description: The server addresses which enforce to use Modern Authentication.

AppStrings

App strings

No

Type: String Example: { "compliance_changed_ticker_fmt": "Account $account_name changed its compliance settings; no user action is required.", "compliance_notification_content_change_title": "Compliance have changed" } Default: "" Description: DO NOT remove $account_name in the string

AppDisableURLRedirection

App disable URL redirection

No

Type: Boolean Example: (e.g. True, False) Default: False Description:

AppLDAPConfigurations

App LDAP Configurations

No

Type: String (JSON) Example: e.g. [ { "Description": "Default", "ServerAddress": "ldap.example.com", "ServerPort": "389", "TransportSecurity": 1, "SearchBase": "dc=mkt,dc=mainstore,dc=com", "BindDN": "", "BindPassword": "" } ] Default: Description: Description : Title of the configuration (mandatory, unique) ServerAddress : LDAP server address or IP address (mandatory) ServerPort : LDAP server port (mandatory) TransportSecurity : 0: None, 1: SSL, 2: StartTLS SearchBase : LDAP Naming base DN (mandatory) BindDN : Leave empty for anonymous BindPassword : Leave empty for anonymous

AppSelectiveAuthentication

App selective authentication

No

Type: Boolean Example: (e.g. True, False) Default: False Description:

AppPreemptivePushScheduling

App preemptive push scheduling

No

Type: Integer Example: (e.g. -1, 0, 1) Default: -1 Description: -1: User can select the option 0: Admin disables the option forcibly. User can't change the option. 1: Admin enables the option forcibly. User can't change the option.

AppEWSURL

App ews url

No

Type: String Example: https://outlook.office365.com:443/EWS/Exchange.asmxarrow-up-right Default: Description:

AppCorporateContactsRefreshInterval

App corporate contacts refresh interval

No

Type: Integer Example: e.g. 30 Default: Description: Days 30: every 30 days

AppCorporateContactsSyncFields

App corporate contacts sync fields

No

Type: String (CSV) Example: e.g. "givenName, cn, homePhone, sn, mobile, o, mail, telephoneNumber, title, departement" Default: Description:

AppCorporateContactsCallerDisplay

App corporate contacts caller display

No

Type: String (CSV) Example: e.g. "cn, title, OU" Default: Description:

AppCorporateContactsLDAPConfigurations

App corporate contacts LDAP configurations

No

Type: String (JSON) Example: e.g.

[

{

"Description": "Default",

"ServerAddress": "ldap.example.com",

"ServerPort": "389",

"TransportSecurity": 1,

"SearchBase": "dc=mkt,dc=mainstore,dc=com",

"BindDN": "",

"BindPassword": ""

}

] Default: Description: Description : Title of the configuration (mandatory, unique) ServerAddress : LDAP server address or IP address (mandatory) ServerPort : LDAP server port (mandatory) TransportSecurity : 0: None, 1: SSL, 2: StartTLS SearchBase : LDAP Naming base DN (mandatory) BindDN : Leave empty for anonymous BindPassword : Leave empty for anonymous

AppUseLoginCertificateWithoutUserPassword

App use login certificate without user password

No

Type: Boolean Example: (e.g. True, False) Default: False Description:

AppSpamForwardingEmail

App spam forwarding email

No

Type: String Example: (e.g. security@example.com) Default: Description: If the 'AppSpamForwardingEmail' AppConfig is set, the 'Report Spam/Phish' menu is shown in the email details view.

AppRecurrenceEventEdit

App recurrence event edit

No

Type: Integer Example: (e.g. 0, 1) Default: 0 Description:

0: 3 options

  • Only this event

  • All events in the series

  • This and all future events

1: 2 options

  • Only this event

  • All events in the series

AppCryptographyLibrary

App cryptography library

No

Type: Integer Example: (e.g. 0, 1) Default: 0 Description: 0: Open SSL 1: Bouncy Castle

AppEditableLoginId

App editable loginId

No

Type: Boolean Example: (e.g. True, False) Default: False Description: If the value is true, you can edit the login Id field.

User Configuration

It allows the application to detect the user of the application, however does not uthenticate the user.

Key
Title
Req.
Type/Example/Default/Desc.

UserName

User name

Y

Type: String Example: (e.g. wtillman) Default: Description: Username of the user who is using the device. Value to be used by application to authenticate user.

UserEmail

Email Address

Y

Type: String Example: (e.g. will@company.com) Default: Description: Email address of the user who is using the application

UserPassword

Password

N

Type: String Example: (e.g. ****) Default: Description: Password for the user who is using the application

UserDomain

Domain

N

Type: String Example: (e.g. NADOMAIN) Default: Description: Domain of the user who is using the application

Multiple domains are able to be set with semicolon.

(eg. NADOMAIN1;NADOMAIN2)

UserDisplayName

Display name

N

Type: String Example: (e.g. James) Default: Description: User name which is displayed in Nine app

UserSignature

Default Signature

N

Type: String Example: (e.g. ABC Company, James, CIO, +4081234567) Default: Description: Email signature. If empty, use "Sent from Nine"

UserLicenseNumber

User License number

N

Type: String Example: (e.g. 123456781234) Default: Description: License key which is purchased in 9Folders web site

UserEmailSyncRange

Email Sync Range

N

Type: Integer Example: Default: Description: 0: All 1: 1 Day 2: 3 days 3: 1 week 4: 2 weeks 5: 1 month

UserEmailDownloadSize

Email Download Size

N

Type: Integer Example: Default: Description: 0: All 1: 10KB 2: 20KB 3: 50KB 4: 100KB

UserDefaultCalendar

User default calendar

N

Type: String Example: (e.g. com.google.android.calendar) Default: Description: Package name of the Calendar app which is used as the default Calendar. If it is empty, Nine Calendar is used as default.

UserFontFamily

User font family

N

Type: String Example: (e.g. Calibri, Arial, Helvetica, sans-serif) Default: Description: Default font family for outgoing email.

UserFontSize

User font size

N

Type: String Example: (e.g. 11.5) Default: Description: Default font size for outgoing email.

UserFontColor

User font color

N

Type: String Example: (e.g. #000000) Default: Description: Default font color for outgoing new email.

UserReplyFontColor

User reply font color

N

Type: String Example: (e.g. #1F497D) Default: Description: Default font color for reply email.

UserInAppCalendarNotification

User calendar notification

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Calendar notification settings

UserDefaultEditor

User default editor

N

Type: Integer Example: (e.g. 0, 1) Default: 0 Description: 0: Rich Text Editor

1: Text Editor

UserMessageFormat

User message format

N

Type: Integer Example: (e.g. 0, 1, 2) Default: 1 Description: 0: TEXT 1: HTML 2: MIME

UserReFwdSeparatorStyle

User reply/forward separator style

N

Type: Integer Example: Default: Description: 0: No separator 1: 1px 2: 2px 3: Outlook 2016

UserContactsFieldsLevel

User contacts fields level

N

Type: Integer Example: (eg, 0, 1, 2) Default: 0 Description: 0: All Fields 1: Minimum Fields (Name Fields, Phone Fields, Photo Field) 2: All fields except Email address

PolicyMaxEmailLookback

Max sync range of the user

N

Type: Integer Example: Default: -1 Description: -1: Exchange Policy 0: All 1: 1 Day 2: 3 days 3: 1 week 4: 2 weeks 5: 1 month

UserSyncSystemCalendarStorage

User sync system calendar

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description: Default value for syncing to the system Calendar storage

UserSyncSystemContactsStorage

User sync system contacts

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description: Default value for syncing to the system Contacts storage

UserDownloadableAttachmentsMaxSize

User download attachment max size

N

Type: Integer Example: Default: 0 Description: xx: xxMB Limited 0 Unlimited (Default) eg) 10: 10MB Limited 25: 25MB Limited

UserAutoAdvance

User auto advance

N

Type: Integer Example: Default: 0 Description: 0: Open the previous item 1: Open the next item 2: Return to the current folder

UserReportDiagnosticInfo

User report diagnostic info

N

Type: Boolean Example: (e.g. True, False) Default: TRUE Description:

UserBiometricUnlock

User biometric unlock

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description:

UserNotesTemplate

User notes template

N

Type: String Example: Default: Description: Ex) "UserNotesTemplate": { "Title": "Memo", "Template": "To: \nFrom: \nDate: \nSubject: \n\n" }

UserSyncWhenRoaming

User sync when roaming

N

Type: Integer Example: (e.g. 0, 1) Default: 0 Description: 0: Off 1: On

EnforceSyncWhenRoaming

Enforce sync when roaming

N

Type: Boolean Example: (e.g. True, False) Default: False Description:

UserPreemptivePushScheduling

User preemptive push scheduling

N

Type: Boolean Example: (e.g. True, False) Default: False Description:

UserShowAsConversation

User show as conversation

N

Type: Boolean Example: (e.g. True, False) Default: True Description:

EnforceStorageEncryption

Enforce storage encryption

N

Type: Boolean Example: (e.g. True, False) Default: False Description: TRUE: Encrypt storage FALSE: DO NOT encrypt storage

EnforceExternalBrowsers

Enforce external browsers

N

Type: String Example: (e.g. com.microsoft.emmx, com.android.chrome) Default: "" Description: The package names of the Browser app which is used as the default Browser.

EnforceDeletionOnSpamForwarding

Enforce deletion on spam forwarding

N

Type: Boolean Example: (e.g. True, False) Default: False Description: If the 'EnforceDeletionOnSpamForwarding' is set as TRUE, the email will be moved to Trash folder

UserSigningCertificateAlias

User signing certificate alias

N

Type: String Example: Default: "" Description:

UserEncryptionCertificateAlias

User encryption certificate alias

N

Type: String Example: Default: "" Description:

UserContactsFileAs

Contacts Fileas

N

Type: Integer Example: Default: 1 Description: 0 : Not specified 1 : Last, First 2 : Last First 3 : LastFirst 4 : First Last 5 : Last, First (Company) 6 : Last First (Company) 7 : LastFirst (Company) 8 : Company (Last, First) 9 : Company (LastFirst) 10 : Company (Last First)

Branding Configuration

It allows an application to customize the look and feel for a specific organization.

Key
Title
Req.
Type/Example/Default/Desc.

BrandingLogo

Branding logo

N

Type: String Example: (e.g.. http://myserver/image.png) Default: "" Description: String representing HTTP URL of the image to download and display as the main wallpaper within the application. Each application could implement the visual representation differently.

- Recommend format: PNG (Other formats are applicable)

- Background color: #ff009688

- Recommend resolution: 720x264 (Max 1024x1024)

BrandingSplashLogo

Branding splash logo

N

Type: String Example: (e.g.. http://myserver/image.png) Default: "" Description: String representing HTTP URL of the image to download and display as the logo image in the splash screen. Images recommended to be in PNG format. Size: 720x264

BrandingName

Branding name

N

Type: String Example: (e.g. Company Name) Default: "" Description: String representing the company name which could be displayed in the application.

BrandingColor

Branding color

N

Type: String Example: (e.g. #1F497D) Default: "" Description: RGB(31, 73, 125)

Security (or Custom) Settings

It allows an application to enable or disable certain security features

Key
Title
Req.
Type/Example/Default/Desc.

AllowCalendarSync

Allow calendar sync

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow Calendar sync

AllowContactsSync

Allow contacts sync

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow Calendar sync

AllowTasksSync

Allow tasks sync

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow Tasks sync

AllowNotesSync

Allow notes sync

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow Notes sync

AllowPrint

Allow print

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow print

AllowShareContents

Allow share contents

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to share the contents of Email/Tasks/Notes

AllowShareAttachment

Allow share attachment

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to share the attachments to 3rd party app

AllowSaveAttachment

Allow save attachment

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to save attachments into external storage

AllowGalShare

Allow GAL share

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to deliver the GAL search results to 3rd party app

IgnoreExchangePolicy

Ignore exchange policy

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description: Disregard Exchange Policy. Instead, MDM controls the policy.

AllowDeleteOwnAccount

Allow delete own account

N

Type: Boolean Example: (e.g. True, False) Default: True Description:

AllowMultipleAccount

Allow multiple account

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description: Allow to set up multiple accounts

AllowReFwdFromDA

Allow to forward or reply from a different account

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to forward or reply from a different account than the message originated from.

AllowAutoConfig

Allow auto configuration

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description:

AllowSyncSystemCalendarStorage

Allow sync system calendar storage

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow for Nine Calendar data to sync to system calendar storage.

Users can see Nine Calendar data on the stock Calendar app.

AllowSyncSystemContactsStorage

Allow sync system contacts storage

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow for Nine Contacts data to sync to system contacts storage.

Users can see Nine Contacts data on the stock Contacts app.

AllowManualUserConfig

Allow manual user config

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description: Allow to set up UserName and UserEmail manually.

AllowCamera

Allow Camera

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to use Camera

AllowExportMessage

Allow export message

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description: Allow to export messages

AllowEWSConnectivity

Allow EWS connectivity

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow EWS connectivity for the features such as Shared Calendar features.

AllowBiometricUnlock

Allow biometric unlock

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow Biometric authentication such as Fingerprint to unlock screen.

AllowCorporateContactsSync

Allow corporate contacts sync

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description: Allow to use the Corporate Contacts feature

AllowWidgetEmail

Allow Email Widget

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to use the Email widget

AllowWidgetCalendarAgenda

Allow Calendar Agenda Widget

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to use the Agenda widget

AllowWidgetCalendarMonth

Allow Calendar Month Widget

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to use the MonthView widget

AllowWidgetTasks

Allow Tasks Widget

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to use the Tasks widget

AllowWidgetBadge

Allow Badge Widget

N

Type: Boolean Example: (e.g. True, False) Default: True Description: Allow to use the Badge widget

AllowScreenShot

Allow screen shot

N

Type: Boolean Example: (e.g. True, False) Default: True Description: If set to False, users can’t save a screenshot of the display and are prevented from capturing a screen recording as well.

AllowSaveSMIMEAttachment

Allow saving S/MIME attachments

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description: Allow saving attachments of an encrypted message into internal or external storage

AllowShareSMIMEAttachment

Allow sharing S/MIME attachments

N

Type: Boolean Example: (e.g. True, False) Default: FALSE Description: Allow sharing attachments of an encrypted message into internal or external storage

ActiveSync server synchronization due to app configuration

Nine Work synchronizes all emails, tasks, notes, contacts and calendar items with the ActiveSync server when the device user first launches Nine Work. It also does a full synchronization or delete account if you change the values of the following keys in the app configuration:

• AppDeviceId (Full synchronization)

• AppDeviceIdPrefix (Full synchronization)

• AppDeviceType (Full synchronization)

• AppUserAgentPrefix (Full synchronization)

• AppUserAgent (Full synchronization)

• UserEmail (Delete account)

• AppLoginCertificateAlias (Delete account)

The full synchronization or delete account occurs the next time the device checks in after you have changed the app configuration.

Last updated