<h2>Access and Refresh Tokens</h2><br/><div style="overflow-x:auto"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><meta content="text/html; charset=UTF-8" /><meta name="copyright" content="(C) Copyright 2025" /><meta name="DC.rights.owner" content="(C) Copyright 2025" /><meta name="generator" content="DITA-OT" /><meta name="DC.type" content="concept" /><meta name="DC.title" content="Device security for ServiceNow Mobile apps" /><meta name="abstract" content="This document applies to current ServiceNow apps for iOS and Android for Vancouver. This document may be subject to change for future mobile releases." /><meta name="description" content="This document applies to current ServiceNow apps for iOS and Android for Vancouver. This document may be subject to change for future mobile releases." /><meta name="DC.subject" content=", mobile security, components and architecture, components, architecture, identity and access management, user authentication, information storage, security controls" /><meta name="keywords" content=", mobile security, components and architecture, components, architecture, identity and access management, user authentication, information storage, security controls" /><meta name="DC.relation" scheme="URI" content="../../../administer/tablet-mobile-ui/concept/mobile-security-landing.html" /><meta name="DC.relation" scheme="URI" content="../../../administer/tablet-mobile-ui/concept/mobile-config-navigation.html" /><meta name="DC.relation" scheme="URI" content="../../../administer/tablet-mobile-ui/concept/imp-considerations.html" /><meta name="DC.creator" content="ServiceNow" /><meta name="DC.date.created" content="2023-08-03" /><meta name="DC.date.modified" content="2023-08-03" /><meta name="DC.format" content="XHTML" /><meta name="DC.identifier" content="sg-mobile-security" /><link rel="stylesheet" type="text/css" href="../../../CSS/commonltr.css" /><title>Device security for ServiceNow Mobile apps</title></head><body> <div class="nested0" id="sg-mobile-security"> <h1 class="title topictitle1" id="ariaid-title1">Device security for <span class="ph">ServiceNow</span> Mobile apps</h1> <div class="body conbody"><p class="shortdesc">This document applies to current <span class="ph">ServiceNow</span> apps for iOS and Android for <span class="ph">Vancouver</span>. This document may be subject to change for future mobile releases.</p> </div> <div class="related-links"> <div class="familylinks"> <div class="parentlink"><strong>Parent Topic:</strong> <a class="link" href="../../../administer/tablet-mobile-ui/concept/mobile-security-landing.html" title="Learn about the security features of the ServiceNow mobile platform.">Mobile security</a></div> </div> </div><div class="topic concept nested1" id="sg-mobile-security-components-architecture"> <h2 class="title topictitle2" id="ariaid-title2">Components and architecture</h2> <div class="body conbody"><p class="shortdesc">The <span class="ph">ServiceNow</span> mobile apps consist of the <span class="ph">ServiceNow</span> server instance and native apps for iOS and Android. The apps use fully native code and are not a hybrid approach. The mobile client applications communicate over a wireless connection with the server and pull live data for the end user.</p> <div class="section" id="sg-mobile-security-components-architecture__section_kdw_t2t_ddb"><h3 class="title sectiontitle">Component explanations</h3> <div class="p"><dl class="dl"> <dt class="dt dlterm">Apps for <span class="ph">iOS</span></dt> <dd class="dd"><p class="p">The <span class="ph">ServiceNow</span> apps for <span class="ph">iOS</span> are fully native iPhone and iPad applications. The applications can be pulled, dynamically configured, and distributed using MDM (more information available in EMM section). <span class="ph">ServiceNow</span> does not currently distribute the ipa file to customers.</p> </dd> <dt class="dt dlterm">Apps for <span class="ph">Android</span></dt> <dd class="dd"><p class="p">The <span class="ph">ServiceNow</span> apps for <span class="ph">Android</span> is a fully native applications for <span class="ph">Android</span> phone. They can be downloaded from the <span class="ph">Google</span> Play store directly by a user, or can be pulled, dynamically configured, and distributed using MDM (more information available in EMM section). <span class="ph">ServiceNow</span> only supports apk file distribution to customers for branded versions of <span class="ph">Android</span> mobile apps. For details on branded applications, see <a class="xref" href="mobile-publishing.html" title="The ServiceNow Mobile Publishing application enables you to publish secure and branded mobile applications. These mobile apps use your unique company identity and management method.">Mobile Publishing</a>.</p> </dd> </dl> </div> </div> </div> </div> <div class="topic concept nested1" id="sg-mobile-ID-access-mgmt"> <h2 class="title topictitle2" id="ariaid-title3">Identity and access management</h2> <div class="body conbody"><p class="shortdesc">Learn about user authentication, third party authentication, and user session termination for mobile applications.</p> <div class="section" id="sg-mobile-ID-access-mgmt__section_fbx_clj_nsb"> <p class="p">For more information, see <a class="xref" href="sg-mobile-security.html#sg-mobile-identity-access-mgmt" title="ServiceNow mobile apps support platform authentication using OAuth 2.0. Authentication mechanisms include multi provider SSO, MFA, LDAP, Local DB, and Digest.">User authentication for ServiceNow mobile apps</a>.</p> </div> </div> <div class="topic concept nested2" id="sg-mobile-identity-access-mgmt"> <h3 class="title topictitle3" id="ariaid-title4">User authentication for <span class="ph">ServiceNow</span> mobile apps</h3> <div class="body conbody"><p class="shortdesc"><span class="ph">ServiceNow</span> mobile apps support platform authentication using OAuth 2.0. Authentication mechanisms include multi provider SSO, MFA, LDAP, Local DB, and Digest.</p> <div class="section" id="sg-mobile-identity-access-mgmt__section_ir4_gjz_cgb"><h4 class="title sectiontitle">AppAuth authentication</h4> <div class="p">The <span class="ph">ServiceNow</span> mobile apps use a new authentication methodology called AppAuth. AppAuth uses an external mobile browser to log the user in. The following steps detail login using AppAuth.<ol class="ol" id="sg-mobile-identity-access-mgmt__ol_xvm_hjz_cgb"><li class="li">The client creates and records a secret named the <code class="ph codeph">code_verifier</code>, and derives a transformed version <code class="ph codeph">t(code_verifier)</code> (referred to as the <code class="ph codeph">code_challenge</code>). This <code class="ph codeph">code_challenge</code> is sent in the OAuth 2.0 Authorization Request along with the transformation method <code class="ph codeph">t_m</code>.</li><li class="li">The Authorization Endpoint responds as usual but records <code class="ph codeph">t(code_verifier)</code> and the transformation method.</li><li class="li">The client then sends the authorization code in the Access Token Request as usual but includes the <code class="ph codeph">code_verifier</code> secret generated in the previous steps.</li><li class="li">The authorization server transforms <code class="ph codeph">code_verifier</code> and compares it to <code class="ph codeph">t(code_verifier)</code> from the previous steps. Access is denied if they are not equal.</li></ol> </div> <div class="p"><div class="fig fignone" id="sg-mobile-identity-access-mgmt__fig_v42_vjz_cgb"><span class="figcap"><span class="fig--title-label">Figure 1. </span>Abstract protocol flow</span> <img class="image" id="sg-mobile-identity-access-mgmt__image_w42_vjz_cgb" src="../image/AppAuthArch.png" alt="Flow for the authentication process for logging in to a mobile app" /> </div> </div> </div> <div class="section" id="sg-mobile-identity-access-mgmt__section_axc_kgt_ddb"><h4 class="title sectiontitle">Single sign-on</h4> <p class="p"><span class="ph">ServiceNow</span> mobile apps require multi-provider single sign-on in order to use external authentication. The multi providers SSO plugin [com.snc.integration.sso.multi.installer] provides SAML authentication support. The login process (AppAuth) uses this plugin to redirect the user to the IDP (SAML provider) login page when using SAML.</p> <p class="p">For more information on this plugin, see <a class="xref" href="../integrate/single-sign-on/concept/c_MultipleProviderSingleSignOn.dita/c_MultipleProviderSingleSignOn.html" target="_blank" rel="noopener noreferrer">External single sign-on (SSO)</a>.</p> <p class="p">For more information on configuring multi provider SSO, see <a class="xref" href="../integrate/single-sign-on/concept/c_MultipleProviderSingleSignOn.dita/c_MultipleProviderSingleSignOn.html" target="_blank" rel="noopener noreferrer">Multi-Provider Single sign-on (SSO)</a>.</p> </div> <div class="section" id="sg-mobile-identity-access-mgmt__section_rdp_3jt_ddb"><h4 class="title sectiontitle">Multifactor authentication</h4> <p class="p">Users can access the instance via Multifactor Authentication using the MFA plugin [com.snc.integration.multifactor.authentication]. Users are directed to their login page after selecting their instance in a mobile app.</p> <div class="p"><div class="fig fignone" id="sg-mobile-identity-access-mgmt__fig_ah5_vnl_m3b"><span class="figcap"><span class="fig--title-label">Figure 2. </span>Multifactor login page in the Mobile Agent app</span> <img class="image" id="sg-mobile-identity-access-mgmt__image_dg1_xnl_m3b" src="../image/mobile-mfa-redirect.png" alt="Multifactor login page in the Mobile Agent app." /> </div> </div> <p class="p">For details on configuring Multi-factor Authentication, see <a class="xref" href="../integrate/authentication/reference/mfa-properties.dita/mfa-properties.html" target="_blank" rel="noopener noreferrer">Multifactor authentication system properties</a></p> </div> <div class="section" id="sg-mobile-identity-access-mgmt__section_b5v_tjt_ddb"><h4 class="title sectiontitle">LDAP</h4> <p class="p">Use LDAP authentication to access using LDAP credentials. The user sees the same login page as the local login (DB based) but the back end to the LDAP server deletes the authentication. For more information on LDAP configuration, see <a class="xref" href="../integrate/ldap/concept/c_LDAPIntegration.dita/c_LDAPIntegration.html" target="_blank" rel="noopener noreferrer">LDAP integration</a>.</p> </div> <div class="section" id="sg-mobile-identity-access-mgmt__section_hmh_mkt_ddb"><h4 class="title sectiontitle">Local DB</h4> <p class="p">The user name and password in the user record in the instance database.</p> </div> <div class="section" id="sg-mobile-identity-access-mgmt__section_sxy_tkt_ddb"><h4 class="title sectiontitle">Not officially supported</h4> <div class="p"><ul class="ul" id="sg-mobile-identity-access-mgmt__ul_zy5_bnt_ddb"><li class="li">Kerberos</li><li class="li">Certificate-based authentication (AppAuth’s external browser may solve for some certificate based mechanisms)</li></ul> </div> </div> </div> <div class="topic concept nested3" id="sg-mobile-security-storage"> <h4 class="title topictitle4" id="ariaid-title5">Storage/Keychain</h4> <div class="body conbody"><p class="shortdesc">When you sign in to an app on your mobile device, the app uses your credentials to negotiate an OAuth Token with the instance. The <span class="ph">iOS</span> Keychain stores the token and <span class="ph">Android</span> uses KeyStore. The keychain encryption is AES 256 in Galois/Counter Mode (GCM).</p> <p class="p">The <span class="ph">ServiceNow</span> mobile apps never store the user password.</p> <p class="p">The mobile app does store the Client ID which is necessary for getting the oAuth token as part of the authentication flow.</p> </div> </div> <div class="topic concept nested3" id="sg-mobile-security-tokens"> <h4 class="title topictitle4" id="ariaid-title6">Access and Refresh Tokens</h4> <div class="body conbody"><p class="shortdesc"><span class="ph">ServiceNow</span> mobile apps use access and refresh tokens to determine valid user sessions.</p> <p class="p">At first login, a user is given an access token and a refresh token. These tokens are valid for a configurable amount of time. When the user opens a mobile app, the client checks to see if the access token is valid. If valid, the user is able to continue with the session. If not valid, the client then checks if the refresh token is valid. If valid, the refresh token is used to fetch a new valid access token for the user, and the session can continue. If the refresh token is not valid, the user must re-authenticate.</p> </div> </div> <div class="topic concept nested3" id="sg-mobile-sec-user-term"> <h4 class="title topictitle4" id="ariaid-title7">User termination</h4> <div class="body conbody"><p class="shortdesc">When an administrator deletes or removes a user from the system, the Access Token is no longer valid and any operation will log the user out.</p> </div> </div> </div> </div> <div class="topic concept nested1" id="sg-security-mobile-data-flow"> <h2 class="title topictitle2" id="ariaid-title8">Mobile data flow for <span class="ph">ServiceNow</span> mobile apps</h2> <div class="body conbody"><p class="shortdesc">Data can be retrieved, downloaded from, and written back to a mobile device.</p> </div> <div class="topic concept nested2" id="sg-mobile-security-retrieval"> <h3 class="title topictitle3" id="ariaid-title9">Retrieval</h3> <div class="body conbody"><p class="shortdesc">The following describes how data is retrieved from <span class="ph">ServiceNow</span> mobile apps.</p> <div class="section" id="sg-mobile-security-retrieval__section_nny_yqt_ddb"><h4 class="title sectiontitle">Read data</h4> <div class="p">When a user requests to view information on the mobile app, the following steps occur.<ol class="ol" id="sg-mobile-security-retrieval__ol_g1q_2st_ddb"><li class="li">The mobile app sends a request to access data from the instance. The request includes the token and any relevant data field needed for the request.</li><li class="li">The instance receives the request and checks if the Token is valid.</li><li class="li">If the token is valid, the request is directed to the relevant API to fetch the information.</li><li class="li">The information is returned to the mobile app.</li></ol> </div> </div> <div class="section" id="sg-mobile-security-retrieval__section_zgm_1rt_ddb"><h4 class="title sectiontitle">Downloading documents</h4> <div class="p">When a user requests to download documents from the app, the following steps occur.<ol class="ol" id="sg-mobile-security-retrieval__ol_y1c_kst_ddb"><li class="li">The mobile app sends a request to access the document. The request includes the Token.</li><li class="li">The instance receives the request and checks if the Token is valid.</li><li class="li">If valid, the document becomes available to view or take further actions on the device.</li></ol> </div> </div> </div> </div> <div class="topic concept nested2" id="sg-mobile-securitywrite-backs"> <h3 class="title topictitle3" id="ariaid-title10">Write-backs</h3> <div class="body conbody"><p class="shortdesc">The following describes how data is written back from <span class="ph">ServiceNow</span> mobile apps.</p> <div class="section" id="sg-mobile-securitywrite-backs__section_dx4_bm5_ddb"><h4 class="title sectiontitle">Updating fields</h4> <div class="p">When a user updates a field in a mobile app, the following steps occur. <ol class="ol" id="sg-mobile-securitywrite-backs__ol_ocj_ct5_ddb"><li class="li">The mobile app sends the Token and the action metadata, for example the ID, or the field to be updated, to the instance.</li><li class="li">The instance directs the action based on the relevant API.</li><li class="li">The instance completes the action and sends a response to the mobile app.</li><li class="li">Based on the response, the mobile app reflects the field changes and action availability in the UI.</li></ol> </div> </div> <div class="section" id="sg-mobile-securitywrite-backs__section_p3l_qt5_ddb"><h4 class="title sectiontitle">Attaching documents</h4> <div class="p">When attaching documents, the following steps occur.<ol class="ol" id="sg-mobile-securitywrite-backs__ol_jrf_st5_ddb"><li class="li">The mobile app asks the user to attach a document, for example, an image.</li><li class="li">The mobile app sends the document and Token to the instance.</li><li class="li">The instance places the document based on the relevant API.</li><li class="li">The instance sends a response back to the mobile app.</li></ol> </div> </div> </div> </div> </div> <div class="topic concept nested1" id="sg-mobile-security-app-distro"> <h2 class="title topictitle2" id="ariaid-title11">Internal mobile app distribution</h2> <div class="body conbody"><p class="shortdesc">Internal distribution of <span class="ph">ServiceNow</span> mobile apps is supported through all major EMM vendors.</p> <div class="p">Customers are able to pull the app for <span class="ph">iOS</span> or <span class="ph">Android</span> from the <span class="ph">Apple</span> App store and <span class="ph">Google</span> Play respectively, dynamically configure the apps to point to the correct <span class="ph">ServiceNow</span> instance, and distribute using the EMM hub. This way, the MDM can fully manage the app as part of a customer portfolio.<div class="note"><span class="notetitle">Note:</span> <span class="ph">ServiceNow</span> does not currently distribute the ipa files, or any other unpublished app to customers as it breaches the <span class="ph">Apple</span> Enterprise Developer License Agreement.</div> </div> <div class="p">Mobile app distribution providers:<ul class="ul" id="sg-mobile-security-app-distro__ul_sxx_3x5_ddb"><li class="li">Airwatch: For more information, see <a class="xref" href="airwatch-mdm.html" title="Use VMware WorkspaceONE UEM to distribute and manage the ServiceNow mobile app on user devices.">AirWatch Mobile Device Management (MDM)</a></li><li class="li">Blackberry: For more information, see <a class="xref" href="blackberry-uem.html" title="Use BlackBerry UEM (Unified Endpoint Management) as a mobile device management system to distribute and manage the ServiceNow mobile app on user devices.">BlackBerry Unified Endpoint Management (UEM)</a></li><li class="li">Intune: For more information, see <a class="xref" href="intune-mdm.html" title="Microsoft Intune uses Azure to manage mobile devices and apps. With some additional configuration, you can manage the ServiceNow mobile app in Intune.">Intune mobile device management (MDM)</a></li><li class="li">IBM: For more information, see <a class="xref" href="IBM-MaaS360-mdm.html" title="Use IBM Maas360 to monitor and manage smartphones, tablets, and other mobile devices from a web-based portal. Add the ServiceNow mobile app to the IBM Maas360 portal to monitor and manage distribution.">IBM Maas360 mobile device management (MDM)</a></li><li class="li">MobileIron - For more information, see <a class="xref" href="mobileiron-mdm.html" title="MobileIron is a cloud-based service you can use to manage applications for your users. Users can access apps from MobileIron while you manage and secure content on the network.">MobileIron Mobile Device Management (MDM)</a></li></ul> </div> </div> </div> <div class="topic concept nested1" id="sg-mobile-security-data"> <h2 class="title topictitle2" id="ariaid-title12">Data security for <span class="ph">ServiceNow</span> mobile apps</h2> <div class="body conbody"><p class="shortdesc"><span class="ph">ServiceNow</span> mobile apps use SSL/TLS for Over-the-Air (OTA) communication encryption for data security. The OAuth authorization endpoints are HTTPS.</p> <div class="section" id="sg-mobile-security-data__section_ofp_hwz_ddb"><h3 class="title sectiontitle">Data stored in your mobile apps</h3> <p class="p">Application preference data such as favorites, home screen, and the mobile navigator items are stored and cached locally on the mobile device. <span class="ph">ServiceNow</span> mobile apps do not store record data such as incidents and problems on the device unless your organization has specifically enabled offline syncing for <span class="ph">Field Service</span>. The record data is encrypted with AES 256.</p> <div class="p">Information stored in mobile apps<ul class="ul" id="sg-mobile-security-data__ul_kxg_dxn_dhb"><li class="li">Databases<ul class="ul" id="sg-mobile-security-data__ul_ph2_fxn_dhb"><li class="li">User defined instances</li><li class="li">Favorite application IDs</li><li class="li">Push Notifications</li><li class="li">Geolocation updates</li><li class="li">Offline data</li></ul> </li><li class="li">Preferences stored in mobile apps<ul class="ul" id="sg-mobile-security-data__ul_jvg_hxn_dhb"><li class="li">sys_id, display name, username, and initials of the current user</li><li class="li">URL and name of the current instance</li><li class="li">Last activity timestamp</li><li class="li">Encrypted PIN code</li><li class="li">Offline cache warning period</li><li class="li">Server Properties<ul class="ul" id="sg-mobile-security-data__ul_izc_4xn_dhb"><li class="li">LOCATION_PROXIMITY</li><li class="li">IS_PIN_CODE_REQUIRED</li><li class="li">IS_BLURRED_IN_BACKGROUND</li><li class="li">IS_BLOCK_ATTACHMENT_SHARING</li><li class="li">LOCATION_TRACKED</li><li class="li">IS_CLEARING_CLIPBOARD_IN_BACKGROUND</li><li class="li">IS_HIDE_APPLICATIONS_SCREEN_IMAGE</li><li class="li">IS_OFFLINE_ENABLED</li><li class="li">LOCATION_FREQUENCY</li></ul> </li><li class="li">key_analytics_initial_app_launch flag</li></ul> </li><li class="li">Information stored in the system Account Manager<ul class="ul" id="sg-mobile-security-data__ul_rlc_wxn_dhb"><li class="li">Login date</li><li class="li">Instance URL</li><li class="li">Access Token</li><li class="li">Refresh Token</li></ul> </li></ul> </div> </div> <div class="section" id="sg-mobile-security-data__section_zzh_3wz_ddb"><h3 class="title sectiontitle">Data in motion</h3> <p class="p">Data in motion is over a secure SSL/TLS channel and encrypted with HTTPS.</p> </div> <div class="section" id="sg-mobile-security-data__section_k4d_kwz_ddb"><h3 class="title sectiontitle">Offline access and data cache configuration</h3> <p class="p">Choose specific screens and actions to be enabled offline from with <span class="ph">Mobile App Builder</span>. On the mobile device, your users can select offline and choose to “cache data" from Settings. The offline flows that you designate are downloaded and cached to the device.</p> <p class="p">You can encrypt offline cached data by using native encryption. This encryption expires at a specified period of time. The default is 48 hours or when a user signs out of the mobile app.</p> <p class="p">Offline data is protected by local-auth and the app PIN that can be optionally enabled by administrators. When enabled, users are required to enter a PIN on login, or when the application is inactive for five minutes.</p> </div> <div class="section" id="sg-mobile-security-data__section_vvb_gvw_njb"><h3 class="title sectiontitle">Disabling mobile attachments</h3> <p class="p">You can disable attachments for mobile apps by using access control rules. For more details on this process see <a class="xref" href="../task/sg-disable-mobile-attach.html" title="Disable attachments for mobile apps by using access control rules.">Disable attachments in mobile apps</a>.</p> </div> </div> </div> <div class="topic concept nested1" id="sg-mobile-security-push-notif"> <h2 class="title topictitle2" id="ariaid-title13">Push notifications</h2> <div class="body conbody"><p class="shortdesc">Administrators create push notifications and users are able to receive them.</p> <div class="section" id="sg-mobile-security-push-notif__section_xq3_4yn_dhb"><h3 class="title sectiontitle">Cloud</h3> <p class="p">For more information on the push notification system including process, configuration, and architecture, see <a class="xref" href="../administer/notification/reference/r_PushMessageArchitecture.dita/r_PushMessageArchitecture.html" target="_blank" rel="noopener noreferrer">Push notification system</a>. Administrators can configure push notification delays using <a class="xref" href="../administer/reference-pages/concept/c_ScheduledJobs.dita/c_ScheduledJobs.html" target="_blank" rel="noopener noreferrer">scheduled jobs</a>. To view an example included with the base system, navigate to <span class="ph menucascade"><span class="ph uicontrol">System Scheduler</span> > <span class="ph uicontrol">Scheduled jobs</span></span>, then search for a job with the name Push. 5 seconds is the minimum time allowed for the push delay.</p> </div> </div> </div> <div class="topic concept nested1" id="sg-mobile-security-practices"> <h2 class="title topictitle2" id="ariaid-title14">Mobile security practices</h2> <div class="body conbody"><p class="shortdesc">Mobile security practices include mobile-specific system properties, attachment control, password reinforcement, security patching, and controlling shared data.</p> </div> <div class="topic concept nested2" id="sg-mobile-security-controls"> <h3 class="title topictitle3" id="ariaid-title15">Security controls</h3> <div class="body conbody"><p class="shortdesc">Configure security controls to restrict copy/paste, enforce PIN, or block attachment functionality.</p> <div class="section" id="sg-mobile-security-controls__section_kd4_1zz_ddb"><h4 class="title sectiontitle">Restrict copy/paste</h4> <p class="p">Copy/paste restrictions are defined in the system properties [sys_properties] table. There are two applicable security properties.</p> <p class="p"><span class="ph bold">glide.sg.clear_pasteboard_when_background</span>: Clears the copy/paste clipboard when a <span class="ph">ServiceNow</span> app enters the background. For more information on clearing the clipboard, see <a class="xref" href="additional-mobile-configuration.html" title="Several system properties are available for you to further configure the mobile app. For example, use system properties to require a PIN, hide the image on the app homepage, configure the blur in background option, or disable sharing attachments from the mobile app.">Configure clear clipboard</a>.</p> </div> <div class="section" id="sg-mobile-security-controls__section_wxx_yzz_ddb"><h4 class="title sectiontitle">Require an app PIN</h4> <p class="p">Require users to enter a six digit PIN each time they sign in from their mobile device, or when an app has been inactive for five minutes. Requiring an app PIN is controlled by the <span class="keyword parmname">glide.sg.require_mobile_application_pin</span> system property. For more information on requiring an app PIN, see <a class="xref" href="additional-mobile-configuration.html" title="Several system properties are available for you to further configure the mobile app. For example, use system properties to require a PIN, hide the image on the app homepage, configure the blur in background option, or disable sharing attachments from the mobile app.">Require an app PIN</a>.</p> </div> <div class="section" id="sg-mobile-security-controls__section_gvq_f11_2db"><h4 class="title sectiontitle">Disabling attachments on a mobile device</h4> <div class="p">Use an ACL to block specific access on mobile. Use the <a class="xref" href="https://developer.servicenow.com/app.do#!/api_doc?v=kingston&id=r_ScopedGS-isMobile" target="_blank" rel="noopener noreferrer">isMobile</a> method to check if a request comes from a mobile device. For example, you could add an ACL for the attachment [sys_attachment] table where the read and write scripted ACLs includes the following check. You can also add this code to any existing ACLs you have for the attachment table. If have multiple attachment ACLs, all of the need to have <span class="ph uicontrol">Admin override</span> option unchecked.<pre class="pre codeblock"><code>if( gs.isMobile() ){ answer = false; }</code></pre></div> <div class="p"><div class="note"><span class="notetitle">Note:</span> You need elevated privileges to create ACLs.</div> </div> </div> <div class="section" id="sg-mobile-security-controls__section_xwb_n1t_dhb"><h4 class="title sectiontitle">Enable the blur app option</h4> <p class="p">Blur a mobile app when not in focus on a mobile device using the following system property in the system properties [sys_properties] table.</p> <div class="p"><span class="keyword parmname">glide.sg.blur_ui_when_backgrounded</span> <div class="note important"><span class="importanttitle">Important:</span> <ul class="ul" id="sg-mobile-security-controls__ul_d2s_y3d_dwb"><li class="li">The <span class="keyword parmname">glide.sg.blur_ui_when_backgrounded</span> system property is supported on both <span class="ph">iOS</span> and <span class="ph">Android</span> devices.</li><li class="li">By default, the value for this property is set to false, which turns it off.</li><li class="li"><p class="p">For <span class="ph">Android</span> devices, when this property is enabled by setting the value to true, the following restrictions apply:</p> <ul class="ul" id="sg-mobile-security-controls__ul_zgh_qwd_dwb"><li class="li">The screen share feature isn't supported and the shared app screen appears black.</li><li class="li">Users are prevented from taking screenshots.</li></ul> <p class="p">These restrictions don't apply to <span class="ph">iOS</span> devices when the <span class="keyword parmname">glide.sg.blur_ui_when_backgrounded</span> property is enabled.</p> </li></ul> </div> </div> <p class="p">For more information, see <a class="xref" href="additional-mobile-configuration.html" title="Several system properties are available for you to further configure the mobile app. For example, use system properties to require a PIN, hide the image on the app homepage, configure the blur in background option, or disable sharing attachments from the mobile app.">Configure the blur app option</a></p> </div> <div class="section" id="sg-mobile-security-controls__section_as5_5hd_5qb"><h4 class="title sectiontitle">Block rooted and jailbroken devices</h4> <p class="p">To improve security on your mobile device, block the logging in of mobile apps when a rooted or jailbroken device is used. Use the following security property:</p> <p class="p"><span class="keyword parmname">glide.sg.allow_rooted_jailbroken_devices system</span></p> <p class="p">For more information, see <a class="xref" href="../task/configure-rooted-jailbroken-devices.html" title="Define whether jailbroken (iOS) and rooted (Android) devices are permitted on your mobile device. The default value is set to false to increase security and to minimize possible disruption to your system.">Configure the status for rooted and jailbroken devices</a>.</p> </div> <div class="section" id="sg-mobile-security-controls__section_adj_vnz_cgb"><h4 class="title sectiontitle">Penetration testing</h4> <p class="p"><span class="ph">ServiceNow</span> engages a third party to perform penetration testing of a mobile app. This typically happens annually but sometimes occurs more frequently. The results of these tests are available to customers on CORE. Customers can test the mobile application in conjunction with a pen test of their instance per the process outlined in <a class="xref" href="https://support.servicenow.com/kb_view.do?sysparm_article=KB0538598" target="_blank" rel="noopener noreferrer">KB0538598</a>.</p> </div> </div> </div> <div class="topic concept nested2" id="sg-mobile-security-patching"> <h3 class="title topictitle3" id="ariaid-title16">Security patching</h3> <div class="body conbody"><p class="shortdesc">In the event a security patch is needed, the mobile development team aligns with standard SDLC properties in order to patch.</p> </div> </div> <div class="topic concept nested2" id="sg-mobile-security-user-data"> <h3 class="title topictitle3" id="ariaid-title17">User data collection</h3> <div class="body conbody"><p class="shortdesc"><span class="ph">ServiceNow</span> mobile apps do not specifically collect any user data.</p> <div class="p">Any user transactions or usage within an app is tracked on the <span class="ph">ServiceNow</span> instance just as it is on the web. For user credentials, after a user logs in, the mobile app negotiates an OAuth Token that is stored in the <span class="ph">Apple</span> Keychain or the <span class="ph">Android</span> Keystore. User credentials are never saved. If the user opts in, the following information is collected:<ul class="ul" id="sg-mobile-security-user-data__ul_ub5_y31_2db"><li class="li">Location</li><li class="li">Access to camera</li><li class="li">Notifications</li></ul> </div> </div> </div> <div class="topic concept nested2" id="sg-mobile-security-shared-data"> <h3 class="title topictitle3" id="ariaid-title18">Shared data</h3> <div class="body conbody"><p class="shortdesc"><span class="ph">ServiceNow</span> mobile apps communicate with a third party software for app crash reporting. No customer information is shared.</p> <div class="p"><ul class="ul" id="sg-mobile-security-shared-data__ul_mfb_rbt_dhb"><li class="li"><span class="ph">iOS</span>:<p class="p">Uses Crashlytics for crash reporting.</p> </li><li class="li"><span class="ph">Android</span>:<p class="p">Uses Crashlytics for crash reporting.</p> </li></ul> </div> </div> </div> <div class="topic concept nested2" id="sg-mobile-security-incidents"> <h3 class="title topictitle3" id="ariaid-title19">Incident reporting</h3> <div class="body conbody"><p class="shortdesc"><span class="ph">ServiceNow</span> mobile app issues should be reported through the standard support channels. You can report incidents by contacting Customer Service and Support.</p> <p class="p">To report incidents, contact <a class="xref" href="https://support.servicenow.com/now?draw=case" target="_blank" rel="noopener noreferrer"><span class="ph">Customer Service and Support</span></a>.</p> </div> </div> </div> </div> </body></html></div>