API pour Android

L’API pour Android est basée sur Java. Cet article décrit les API Citrix Endpoint Management par fonctionnalité et fournit les définitions de l’API.

Gestion des applications :

  • isManaged
  • isWrapped

Stratégies MDX :

  • getPoliciesXML
  • getPolicyValue
  • setPolicyChangeMessenger

Coffre partagé :

  • MDXDictionary

Données utilisateur :

  • getUserName

Class com.citrix.worx.sdk.MDXApplication

Méthodes

  • isManaged

    public static boolean isManaged (Context context)

    Vérifie si l’application est actuellement gérée par MDX, ce qui signifie que l’application Citrix Secure Hub est installée sur l’appareil et que les stratégies Citrix Endpoint Management sont appliquées sur l’application. L’infrastructure principale de Endpoint Management (coffres de clés) est interrogée pour obtenir les clés partielles de cryptage des données (secrets) que MDX utilisera pour crypter les données de fichier de l’application. Renvoie true si l’application est gérée.

    Les applications Premium non gérées utilisent les valeurs par défaut de stratégie Endpoint Management spécifiées dans Applications/Citrix/MDXToolkit/data/MDXSDK_Android/default_sdk_policies.xml. Les stratégies ne sont pas appliquées pour les applications General non gérées.

    Paramètres

    context – contexte Android qui effectue cet appel.

    Exemple

    boolean bIsManaged = MDXApplication.isManaged(context);

  • isWrapped

    public static boolean isWrapped (Context context)

    Renvoie true si l’application est encapsulée avec le MDX Toolkit.

    Paramètres

    context – contexte Android qui effectue cet appel.

    Exemple

    boolean bIsWrapped = MDXApplication.isWrapped(context);

  • getUserName

    public static String getUserName (Context context)

    Renvoie une chaîne contenant le nom d’utilisateur de l’utilisateur inscrit exécutant une application gérée par MDX, quel que soit l’état de connexion de l’utilisateur. Ne renvoie aucune valeur si l’utilisateur n’est pas inscrit, l’application n’est pas gérée, ou l’application n’est pas encapsulée.

    Paramètres

    context – contexte Android qui effectue cet appel.

    Exemple

    String userName = MDXApplication.getUserName(context);

Class com.citrix.worx.sdk.MDXPolicies

Méthodes

  • getPoliciesXML

    public static String getPoliciesXML (Context context)

    Renvoie le contenu de default_sdk_policies.xml, avec une ligne par stratégie, précédé de (match) pour indiquer que la valeur dans le fichier XML de données correspond à la valeur renvoyée par MDXPolicies.getPolicyValue(). Renvoie une chaîne vide en cas d’échec.

    Paramètres

    context – contexte Android qui effectue cet appel.

    Exemple

    String policiesXML = MDXPolicies.getPoliciesXML(context);

  • getPolicyValue

    public static String getPolicyValue (Context context, String policyName)

    Renvoie une chaîne qui contient la valeur courante de la stratégie nommée. Renvoie null si aucune valeur n’est trouvée.

    Paramètres

    context – contexte Android qui effectue cet appel.

    policyName – nom de la stratégie à rechercher. Le nom de la stratégie correspond à la valeur de l’élément PolicyName dans un fichier XML de stratégie.

    Exemple

    String value = MDXPolicies.getPolicyValue(context"DisableCamera");

  • setPolicyChangeMessenger

    public static String setPolicyChangeMessenger (Context context, String policyName. Messenger messenger)

    Enregistre une messagerie pour recevoir un message lorsque la valeur de la stratégie donnée est modifiée. Lorsque MDX détecte qu’une valeur de stratégie a été modifiée dans la console Citrix Endpoint Management, MDX avertit cette messagerie. Vous pouvez utiliser les autres API pour relire les valeurs de stratégie et modifier l’application. Renvoie null.

    Paramètres

    context – contexte Android qui effectue cet appel.

    policyName – nom de stratégie à contrôler. Le nom de la stratégie correspond à la valeur de l’élément PolicyName dans un fichier XML de stratégie.

    messenger – messagerie qui recevra des messages lorsque la valeur de stratégie sera modifiée.

    Exemple

    MDXPolicies.setPolicyChangeMessenger(context, "DisableCamera", messenger);

Classe com.citrix.mdx.common.MDXDictionary

MDXDictionary est un conteneur qui lit et stocke les bundles Android cryptés de paires clé-valeur. Les applications de productivité mobiles dans le même groupe de sécurité MDX partagent un dictionnaire. Utilisez l’API de coffre sécurisé pour partager le contenu géré entre les applications qui ont le même dictionnaire MDX. Par exemple, vous pouvez partager des certificats et des clés privées par le biais d’une application inscrite de façon à ce que les applications puissent obtenir un certificat depuis le coffre sécurisé plutôt que depuis Secure Hub.

Les dictionnaires sont stockés sans cryptage quels que soient les paramètres de stratégie de cryptage de fichiers privés et de stratégie de cryptage de fichiers publics. Les développeurs doivent déverrouiller le coffre avant de récupérer les dictionnaires.

Constructeurs

  • public MDXDictionary( MDXDictionary source )

    Construit une copie d’un MDXDictionary existant.

    Paramètres

    source – MDXDictionary qui doit être copié.

  • public MDXDictionary( String name, Bundle bundle, long sequence )

    Construit un MDXDictionary à partir d’un nom, d’un bundle et d’un numéro de séquence. Si vous ne connaissez pas le numéro de séquence, utilisez la méthode create() factory.

    Paramètres

    name – nom du dictionnaire.

    bundle – bundle Android.

    sequence – numéro de séquence.

Méthodes

  • public static MDXDictionary create( Context context, String name )

    Crée un dictionnaire en commençant par vérifier si un dictionnaire avec le même nom existe déjà. Si le dictionnaire n’existe pas, un nouveau dictionnaire est renvoyé. Sinon, le dictionnaire existant est renvoyé. Cette méthode ne renvoie jamais la valeur null.

    Paramètres

    context – contexte Android qui effectue cet appel.

    name – nom du dictionnaire.

    Exemple

    // Crée une instance d’un dictionnaire.

    MDXDictionary dict = MDXDictionary.create(getContext(), "app-settings");

  • public static boolean delete( Context context, String name )

    Supprime un dictionnaire par nom. Renvoie true en cas de succès ; renvoie false en cas d’échec.

    Paramètres

    context – contexte Android qui effectue cet appel.

    name – nom du dictionnaire.

    Exemple

    // Crée une instance d’un dictionnaire.

    MDXDictionary.delete(getContext(), "app-settings");

  • public static MDXDictionary find( Context context, String name )

    Recherche un dictionnaire existant. Renvoie un dictionnaire existant ; renvoie une valeur null si aucun dictionnaire n’est trouvé.

    Paramètres

    context – contexte Android qui effectue cet appel.

    name – nom du dictionnaire.

    Exemple

    MDXDictionary dict = MDXDictionary.find(getContext(),"app-settings");

     if( dict != null )
         {
             // Use dictionary
         }
    
  • public boolean isNew( )

    Vérifie s’il s’agit d’un nouveau dictionnaire ou d’un dictionnaire existant. Renvoie true si un dictionnaire n’existe pas déjà.

    Exemple

    MDXDictionary dict = MDXDictionary.create(getContext(), "app-settings");

     if (dict.isNew())
         {
             // Dictionary was not found.
         }
     else
         {
             // Existing dictionary was found.
         }
    
  • public boolean save( Context context )

    Stocke un dictionnaire crypté. Si un dictionnaire avec le même nom existe, il sera remplacé. Renvoie true en cas de succès ; renvoie false en cas d’échec.

    Paramètres

    context – contexte Android qui effectue cet appel.

    Exemple

    MDXDictionary dict = MDXDictionary.find(getContext(), "app-settings");

     if( dict != null )
         {
             String certificate = getCertificate();
             dict.bundle.putString( "secret-certificate", certificate );
             // Update bundle by overwriting the existing bundle.
             dict.save( getContext() );
         }
    
  • public boolean append( Context context )

    Ajoute un dictionnaire crypté à un dictionnaire existant. Si aucun dictionnaire n’existe, le dictionnaire spécifié est stocké. Renvoie true en cas de succès ; renvoie false en cas d’échec.

    Paramètres

    context – contexte Android qui effectue cet appel.

    Exemple

    MDXDictionary dict = MDXDictionary.find(getContext(), ";app-settings");

     if( dict != null )
         {
             String certificate = getCertificate();
             Bundle bundle = new Bundle();
             bundle.putString( "secret-certificate", certificate );
             dict.bundle = bundle;
             dict.append( getContext() );
             // Note that dict.bundle may not match the state of the
             // bundle that was stored. The stored bundle could be
             // larger.
         }
    
  • public boolean delete( Context context )

    Supprime le dictionnaire. Renvoie true en cas de succès ; renvoie false en cas d’échec.

    Paramètres

    context – contexte Android qui effectue cet appel.

    Exemple

    MDXDictionary dict = MDXDictionary.find(getContext(), "app-settings");

     if( dict != null )
         {
             dict.delete( getContext() );
         }
    

Notes et considérations

  • Les constructeurs renvoient une exception IllegalArgumentException lorsque des paramètres incorrects sont transmis.
  • L’opération create() ne renvoie jamais la valeur null. Si la stratégie de cryptage est activée, l’utilisateur doit s’assurer qu’elle est déverrouillée avant l’appel de create().
  • L’opération append() peut échouer si un objet stocké qui peut être analysé ou sérialisé n’est pas un type de données Java ou Android connu. Secure Hub ne peut pas rétablir le dictionnaire car la classe n’est pas connue en interne par Secure Hub.
  • L’opération append() ajoute son bundle à un bundle de dictionnaire existant. Si le bundle stocké est différent du bundle du dictionnaire, le bundle local ne reflète pas l’état du bundle stocké. Une opération find() ou create() est nécessaire pour interroger l’état du bundle stocké précédemment.
API pour Android