Certificate authentication from AppConnect apps to enterprise services
An AppConnect app can send a certificate to identify and authenticate the app user to an enterprise service. The AppConnect library, which is part of every AppConnect app, makes sure the connection uses the certificate. No additional development is required for the app.
When an AppConnect app uses a certificate to authenticate the app user to an enterprise service using HTTPS:
-
The authentication occurs without interaction from the app user.
The app user does not need to enter a user name and password to log into enterprise services, resulting in a better user experience.
-
Access to the enterprise service is more secure.
The AppConnect app must use networking methods that this feature supports. Contact the application vendor or developer to find out if the app supports certificate authentication to enterprise services.
You configure which certificate to use and when to use it on MobileIron Core as described in Setting up certificate authentication from an AppConnect app. When using this feature, you can also use Certificate pinning for AppConnect apps. Certificate pinning ensures that the certificate presented by the enterprise service in response to the app's connection request is in a trusted set of certificates that you configure.
Certificate authentication from AppConnect apps to enterprise services:
- is for HTTPS connections only.
- does not work if you are using AppTunnel with HTTP/S tunneling for the connection.
- does work if you are using AppTunnel with TCP tunneling for the connection.
Authenticating users to enterprise servers using Kerberos Constrained Delegation (KCD) with AppTunnel has been available for some time. This feature does not use KCD or AppTunnel.
Impact on AppTunnel use
If an AppConnect app uses a certificate to authenticate the app user to an enterprise service:
- The app can use AppTunnel with TCP tunneling (provided with the Tunnel app) to access an enterprise service.
-
The app cannot use AppTunnel with HTTP/S tunneling for accessing the same URL to which the certificate authenticates.
The app can use AppTunnel for HTTP/S tunneling for accessing a different URL than the one that the certificate authenticates to.
Setting up certificate authentication from an AppConnect app
To set up certificate authentication from an AppConnect app to an enterprise service, you configure the app’s AppConnect app configuration on MobileIron Core. You add sets of two key-value pairs to the AppConnect app configuration. The two key-value pairs in each set specify:
-
a certificate
-
a URL matching rule
You can have any number of sets of these key-value pairs, but keep the number to a minimum to preserve Core performance.
When the app makes a web request to a URL that matches a URL matching rule, the connection uses the certificate.
Before you begin
Configure MobileIron Core with the certificate that the app will use to authenticate to the enterprise service. You specify the certificate in a Certificate Enrollment.
See “Certificate Enrollment settings” in the Core Device Management Guide for iOS and macOS Devices.
It is not necessary to assign labels to the Certificate Enrollment setting to distribute certificates to the appropriate devices. You will configure and apply labels to an AppConnect app configuration that refers to the certificate enrollment setting. That action distributes the certificates to the appropriate devices.
-
Creating an AppConnect app configuration for the app if one does not already exist.
-
Configuring the key-value pairs for the certificate and URL matching rule.
Creating an AppConnect app configuration for the app if one does not already exist
Check if you already created an AppConnect app configuration for the app. If one does not exist, create an app configuration for the AppConnect app.
Procedure
-
Go to Policies & Configs > Configurations.
-
Look for an APPCONFIG setting type for the app.
-
If found, continue to Configuring the key-value pairs for the certificate and URL matching rule.
If not found, create the AppConnect app configuration:
-
Click Add New > AppConnect > App Configuration.
-
For Name, enter a name for the AppConnect app configuration.
-
For Description, enter a description for the AppConnect app configuration.
-
For Application, enter the bundle ID of the app, or select the app from the drop-down list if it is in the App Catalog.
-
Click Save.
-
Select More Actions > Apply to Label.
-
Select the appropriate label and click Apply.
Configuring the key-value pairs for the certificate and URL matching rule
Configure key-value pairs for the certificate and URL matching rule in the AppConnect app configuration in the Core Admin Portal.
Procedure
-
Go to Policies & Configs > Configurations.
-
Select the AppConnect app configuration for the app (the Setting Type is APPCONFIG).
-
Click Edit.
-
Scroll down to App-specific Configurations.
-
Click Add+.
-
In the KEY field, enter MI_AC_CLIENT_CERT_#, substituting digits of your choice for #. The key is case-sensitive.
Example
MI_AC_CLIENT_CERT_1
MI_AC_CLIENT_CERT_2
MI_AC_CLIENT_CERT_15
You can have many MI_AC_CLIENT_CERT_# keys, each with a different digit substitution.
- In the VALUE field, select the Certificate Enrollment setting from the drop-down list.
- Click Add+.
-
In the KEY field, enter MI_AC_CLIENT_CERT_#_RULE, substituting the same digits for # that you used in MI_AC_CLIENT_CERT_#. The key is case-sensitive.
Example
MI_AC_CLIENT_CERT_15_RULE
-
In the VALUE field, enter the URL that will use the certificate for authentication.
Example
*.mycompany.com/sales
myserver.mycompany.com/hr/benefits
-
Click Save.
Details about MI_AC_CLIENT_CERT_#_RULE
The following describes the rule format and matching logic for the certificate key-value pair.
Rule format
The value for the key MI_AC_CLIENT_CERT_#_RULE is a URL matching rule. The rule has one of these formats:
- <host >
- <host >/<path>
The <host > component specifies a host within a domain. It can include one or more wildcard characters *.
Example
- myserver.mycompany.com
- anotherserver.mycompany.com
- *.mycompany.com
The <path > component specifies a path within the host. It cannot include the wildcard character *. It can contain multiple <subpath> components.
Example
- sales
- sales/west
- sales/west/california
The <subpath> components are sales, west, and california.
Matching logic
When the app makes a URL request, the AppConnect library within the app compares the URL request with the values of the MI_AC_CLIENT_CERT_#_RULE keys. If the rule matches the URL request, the connection uses the certificate.
A match occurs if all of the following are true:
-
the rule’s <host> matches the URL request’s <host>.
-
Any <subpath> in the rule matches the URL request’s <subpath>, in the same order.
More <subpath> components can be in the URL request than are in the rule.
The matching logic ignores any port number or query parameters in the URL request.
Example
URL Request |
Match? |
Comments |
https://myserver.mycompany.com |
Yes |
Exact match |
https://myserver.mycompany.com/sales |
Yes |
Matches <host> |
https://myserver.mycompany.com:8080 |
Yes |
Matches -- port is ignored |
https://myserver.mycompany.com:sales? |
Yes |
Matches -- query parameters are ignored |
https://anotherserver.mycompany.com |
No |
<host> does not match |
http://anotherserver.mycompany.com |
No |
HTTP, not HTTPS |
URL Request |
Match? |
Comments |
https://myserver.mycompany.com/sales |
Yes |
<host> and <subpath> match. |
https://myserver.mycompany.com/sales/west |
Yes |
<host> and <subpath> match |
https://anotherserver.mycompany.com/sales |
Yes |
<host> and <subpath> match |
https://myserver.mycompany.com/salesmeeting |
No |
Entire <subpath> must match. |
https://myserver.mycompany.com |
No |
Missing required <subpath> |
https://myserver.mycompany.com/s |
No |
Entire <subpath> must match. |
If more than one MI_AC_CLIENT_CERT_#_RULE value matches the URL request, the rule with the most number of non-wildcard characters is chosen.
For example, consider four MI_AC_CLIENT_CERT_#_RULE keys with the following values:
Key |
Value |
MI_AC_CLIENT_CERT_1_RULE |
*.mycompany.com |
MI_AC_CLIENT_CERT_2_RULE |
*.mycompany.com/sales/west |
MI_AC_CLIENT_CERT_3_RULE |
myserver.mycompany.com/sales |
MI_AC_CLIENT_CERT_4_RULE |
myserver.mycompany.com/sales/west |
If the app requests URL https://myserver.mycompany.com/sales/west, the request matches all the values, but only one match is chosen. The chosen match is myserver.mycompany.com/sales/west, and the connection uses the corresponding certificate in MI_AC_CLIENT_CERT_4.