Espaces réservés avancés
Les espaces réservés tels que ${user.email} ou ${device.model} sont utilisés à plusieurs endroits dans Relution, notamment pour les noms d’appareils, les certificats, les comptes Exchange ou les configurations d’applications. Le moteur de modèles sous-jacent Freemarker met à disposition des fonctions supplémentaires permettant d’adapter davantage les espaces réservés.
Sous-chaînes (substring)
La notation [début..fin] permet de n’utiliser qu’un extrait d’une valeur. Le décompte commence à 0.
${user.givenName[0..0]}→ première lettre du prénom${device.model[0..1]}→ deux premiers caractères du modèle d’appareil
Exemple : ${user.givenName[0..0]}${user.surname[0..0]}-${device.model[0..1]}-${(device.custom1)!"00000"} donne, pour un compte utilisateur « Max Mustermann » avec une valeur custom1 de 00042 sur un iPad12,1, le résultat MM-iP-00042.
Valeur par défaut pour un champ vide
Si un champ est vide ou non défini, l’opérateur ! permet de définir une valeur par défaut : ${(device.custom1)!"00000"}. Si le champ personnalisé custom1 n’est pas renseigné, 00000 est utilisé à la place, au lieu que l’espace réservé reste vide ou provoque une erreur.
Casse et remplacement de caractères
?lower_case et ?upper_case convertissent intégralement une valeur en minuscules ou en majuscules. ?replace("ancien", "nouveau") permet de remplacer des caractères ou des chaînes de caractères, par exemple pour convertir les trémas destinés à des systèmes qui n’acceptent pas de caractères spéciaux dans le nom d’utilisateur :
${user.surname?lower_case?replace("ä","ae")?replace("ö","oe")?replace("ü","ue")?replace("ß","ss")}
Utiliser la partie locale d’une adresse e-mail
Pour n’utiliser que la partie située avant le caractère @ de ${user.username} (ou ${user.email}), plusieurs variantes équivalentes sont disponibles :
${user.username?keep_before("@")}${user.username?split("@")[0]}${user.username[0..user.username?index_of("@")-1]}
Certificats utilisateur
Nouveau dans 26.5Les espaces réservés de la forme ${user.certificate.…} insèrent les certificats enregistrés dans le profil utilisateur (section Certificats personnalisés) dans une configuration, sous forme de chaîne encodée en base64 — par exemple dans une configuration d’application gérée dont les champs attendent un certificat en base64. L’espace réservé est résolu lors de la transmission de la configuration, à partir de l’utilisateur affecté à l’appareil concerné.
Trois formes de sélection sont disponibles :
| Espace réservé | Résolution |
|---|---|
${user.certificate.EXCHANGE} | certificat du sous-type ayant la durée de validité restante la plus longue |
${user.certificate.EXCHANGE["mon-certificat"]} | certificat portant exactement ce nom |
${user.certificate.EXCHANGE[device.serialnumber]} | le nom du certificat est calculé à partir d’un autre espace réservé |
Les sous-types disponibles correspondent aux fonctions du profil utilisateur : GENERAL_CERTIFICATE, WIFI, EXCHANGE, VPN, SMIME_ENCRYPTION et SMIME_SIGNING.
Nom de certificat entre crochets
Pour les noms calculés, l’espace réservé interne s’écrit sans ${…} englobant, donc [device.serialnumber] et non [${device.serialnumber}] — les expressions ${…} imbriquées ne sont pas prises en charge. Pour les noms composés uniquement de lettres, de chiffres et de tirets bas, la forme pointée ${user.certificate.EXCHANGE.iPhone} fonctionne également.
${user.certificate.EXCHANGE.mon-certificat} est interprétée comme une opération de calcul et entraîne la livraison de l'ensemble de la configuration sans espaces réservés remplacés.Mot de passe des certificats PKCS#12
Pour les certificats PKCS#12 protégés par mot de passe (par exemple une identité S/MIME), le mot de passe d’importation est fourni via la clé réservée password :
${user.certificate.SMIME_SIGNING.password}${user.certificate.SMIME_SIGNING["mon-certificat"].password}
Pour les certificats qui ne sont pas des conteneurs PKCS#12, la valeur reste vide. password étant une clé réservée, un certificat portant lui-même le nom password ne peut pas être sélectionné via un espace réservé — dans ce cas, la forme pointée comme la forme à crochets renvoient le mot de passe. Il convient d’utiliser un autre nom pour de tels certificats.
Format de sortie
Indépendamment du format de fichier téléversé (PEM ou DER), l’espace réservé renvoie toujours la forme DER du certificat encodée en base64. Les conteneurs PKCS#12 sont livrés encodés en base64 sans modification, afin de pouvoir être importés directement par l’application destinataire avec le mot de passe.
Exemple d’une configuration d’application gérée pour un client de messagerie avec signature S/MIME :
<key>SMIMECertificate</key>
<string>${user.certificate.SMIME_SIGNING}</string>
<key>SMIMECertificatePassword</key>
<string>${user.certificate.SMIME_SIGNING.password}</string>
Disponibilité
Les espaces réservés de certificat utilisateur sont disponibles dans toutes les configurations acceptant des espaces réservés pour iOS, macOS, tvOS, Android Enterprise, Android, Windows, Samsung KNS et ChromeOS. Ils ne sont pas pris en charge pour les configurations Linux. Dans les profils de configuration personnalisés (.mobileconfig), l’espace réservé n’est possible que dans les champs de type string, et non dans les champs de type data ; dans les configurations d’applications gérées, les deux fonctionnent.
Si aucun certificat ne peut être déterminé — par exemple en cas de sous-type inconnu, de nom inexistant ou d’absence d’affectation d’utilisateur —, l’espace réservé reste vide et la configuration est tout de même livrée. Les détails sur la cause sont consignés dans le journal du serveur.
Remarques
Les espaces réservés de base disponibles dans une configuration donnée (par exemple ${user.email}, ${device.serialnumber}) sont affichés sous le champ de saisie correspondant dans le portail Relution.