Exporter (0) Imprimer
Développer tout

Connexion à Media Services à l’aide du Kit de développement logiciel (SDK) de Media Services

Mis à jour: février 2014

Cette rubrique décrit la manière d’obtenir une connexion par programme à Microsoft Azure Media Services lorsque vous programmez avec le Kit de développement logiciel (SDK) Services de média pour .NET.

Cette rubrique présente ce qui suit :

Connexion à Media Services

Pour vous connecter à Services de média par programme, vous devez au préalable avoir configuré un compte Azure, avoir configuré Services de média sur ce compte, puis avoir configuré un projet Visual Studio à développer avec le Kit de développement logiciel (SDK) Services de média pour .NET. Pour plus d’informations, voir Configuration pour le développement via le Kit de développement logiciel (SDK) de Media Services pour .NET.

Après avoir configuré le compte Services de média, vous avez obtenu les valeurs de connexion requises suivantes. Utilisez-les pour vous connecter par programmation à Services de média.

  • Votre nom de compte Services de média.

  • Votre clé de compte Services de média.

noteRemarque
Pour obtenir ces valeurs, accédez au Portail Windows Azure, sélectionnez votre compte Media Service, puis cliquez sur l’icône « GESTION DES CLÉS » en bas de la fenêtre du portail. Le fait de cliquer sur l’icône en regard de chaque zone de texte a pour effet de copier la valeur dans le Presse-papiers du système.

Création d'une instance CloudMediaContext

Pour démarrer la programmation dans Services de média, vous devez créer une instance CloudMediaContext qui représente le contexte du serveur. Le CloudMediaContext inclut des références à des collections importantes notamment des travaux, éléments multimédias, fichiers, stratégies d’accès, localisateurs.

noteRemarque
La classe CloudMediaContext n’est pas thread-safe. Vous devez créer un nouveau CloudMediaContext par thread ou par série d'opérations.

CloudMediaContext a cinq surcharges de constructeur. Il est recommandé d'utiliser des constructeurs qui acceptent MediaServicesCredentials comme paramètre. Pour plus d’informations, voir Reusing Access Control Service Tokens.

  • La surcharge suivante initialise une nouvelle instance de la classe CloudMediaContext avec le nom de compte Microsoft Azure Media Services spécifié et la clé de compte à utiliser pour l'authentification.

    public CloudMediaContext(string accountName, string accountKey)
    
  • La surcharge suivante initialise une nouvelle instance de la classe CloudMediaContext avec les informations d'identification Microsoft Azure Media Services spécifiées. La surcharge a été ajoutée au Kit de développement logiciel (SDK) de Media Services version 3.0.0.0.

    public CloudMediaContext(MediaServicesCredentials credentials)
    
  • La surcharge suivante initialise une nouvelle instance de la classe CloudMediaContext avec le point de terminaison Microsoft Azure Media Services et les informations d'identification Services de média spécifiés. La surcharge a été ajoutée au Kit de développement logiciel (SDK) de Media Services version 3.0.0.0.

    public CloudMediaContext(Uri apiServer, MediaServicesCredentials credentials)
    
  • La surcharge suivante initialise une nouvelle instance de la classe CloudMediaContext avec le point de terminaison Microsoft Azure Media Services spécifié et la clé de compte à utiliser pour l'authentification.

    public CloudMediaContext(Uri apiServer, string accountName, string accountKey)
    
  • La surcharge suivante initialise une nouvelle instance de la classe CloudMediaContext qui prend les paramètres suivants : Le point de terminaison Services de média, le nom de compte et la clé de compte à utiliser pour l'authentification, la portée d'autorisation, ainsi que le point de terminaison du service de contrôle d'accès servant à l'authentification.

    public CloudMediaContext(Uri apiServer, string accountName, string accountKey, string scope, string acsBaseAddress)
    

L'exemple suivant crée une nouvelle instance de CloudMediaContext et passe le nom de compte et les valeurs de chaîne clés Media Services.

CloudMediaContext context = new CloudMediaContext(MediaServicesAccountName, MediaServicesAccountKey);

La section suivante montre comment réutiliser les jetons du service de contrôle d'accès en utilisant des constructeurs CloudMediaContext qui acceptent MediaServicesCredentials comme paramètre.

Réutilisation des jetons du service de contrôle d'accès

Le contrôle d’accès Active Directory Windows Azure (appelé également service de contrôle d'accès ou ACS) est un service basé sur le Cloud qui offre un moyen pratique pour authentifier et autoriser les utilisateurs qui veulent accéder à leurs applications Web. Microsoft Azure Media Services contrôle l'accès à ses services via le protocole OAuth qui exige un jeton ACS. Services de média reçoit les jetons ACS d'un serveur d'autorisation.

Lors du développement avec le kit SDK Services de média, vous pouvez opter de ne pas traiter directement les jetons car ce sont les gestionnaires de code SDK qui s'en chargent. Cependant, le fait de laisser le kit SDK gérer entièrement les jetons ACS entraîne des demandes de jetons inutiles. Les demandes de jetons prennent du temps et consomment des ressources client et serveur. Le serveur ACS limite également les demandes si le taux est trop élevé. La limite est de 30 demandes par seconde ; consultez, Limites du service de contrôle d'accès (ACS) pour plus de détails.

Lors de la prise de main de Media Services SDK version 3.0.0.0, vous pouvez réutiliser les jetons ACS. Les constructeurs CloudMediaContext qui acceptent MediaServicesCredentials comme paramètre autorisent le partage des jetons entre de multiples contextes. La classe MediaServicesCredentials encapsule les informations d'identification Services de média. Si un jeton ACS est disponible et que sa durée d'expiration est connue, vous pouvez créer une instance MediaServicesCredentials avec le jeton et la passer au constructeur de CloudMediaContext. Il est à noter que le kit SDK Services de média actualise automatiquement les jetons chaque fois que ceux-ci expirent. Il existe deux façons de réutiliser les jetons ACS, comme le montrent les exemples ci-dessous.

  • Vous pouvez mettre en cache l'objet MediaServicesCredentials en mémoire (par exemple, dans une variable de classe statique). Ensuite, passer l'objet mis en cache au constructeur CloudMediaContext. L'objet MediaServicesCredentials contient un jeton ACS qui peut être réutilisé s'il est encore valide. Si le jeton n'est pas valide, il est réactualisé par le kit de développement logiciel (SDK) Services de média à l'aide des informations d'identification fournies au constructeur MediaServicesCredentials.

    À noter que l'objet MediaServicesCredentials obtient un jeton valide après l'appel de RefreshToken. Le CloudMediaContext appelle la méthode RefreshToken dans le constructeur. Si vous envisagez d'enregistrer les valeurs du jeton sur un support de stockage externe, veillez à vérifier si la valeur de TokenExpiration est valide avant d'enregistrer les données du jeton. Si elle n'est pas valide, appelez RefreshToken avant la mise en cache.

    // Create and cache the Media Services credentials in a static class variable. _cachedCredentials = new MediaServicesCredentials(_mediaServicesAccountName, _mediaServicesAccountKey); 
    


    // Use the cached credentials to create a new CloudMediaContext object. if(_cachedCredentials == null) {     _cachedCredentials = new MediaServicesCredentials(_mediaServicesAccountName, _mediaServicesAccountKey); }  CloudMediaContext context = new CloudMediaContext(_cachedCredentials);
    
  • Vous pouvez également mettre en cache la chaîne AccessToken et les valeurs TokenExpiration. Vous pourriez utiliser ces valeurs ultérieurement pour créer un nouvel objet MediaServicesCredentials avec les données du jeton mises en cache. Ceci est particulièrement utile dans les scénarios où le jeton peut être partagé de façon sécurisée entre plusieurs processus ou ordinateurs.

    Les extraits de code suivants appellent les méthodes SaveTokenDataToExternalStorage, GetTokenDataFromExternalStorage et UpdateTokenDataInExternalStorageIfNeeded qui ne sont pas définies dans cet exemple. Vous pourriez définir ces méthodes pour stocker, extraire et mettre à jour les données du jeton sur un support de stockage externe.

     CloudMediaContext context1 = new CloudMediaContext(_mediaServicesAccountName, _mediaServicesAccountKey);  // Get token values from the context. var accessToken = context1.Credentials.AccessToken; var tokenExpiration = context1.Credentials.TokenExpiration;  // Save token values for later use.  // The SaveTokenDataToExternalStorage method should check  // whether the TokenExpiration value is valid before saving the token data.  // If it is not valid, call MediaServicesCredentials’s RefreshToken before caching. SaveTokenDataToExternalStorage(accessToken, tokenExpiration); 
    
    Utilisez les valeurs du jeton stockées pour créer MediaServicesCredentials.

    var accessToken = ""; var tokenExpiration = DateTime.UtcNow;  // Retrieve saved token values. GetTokenDataFromExternalStorage(out accessToken, out tokenExpiration);  // Create a new MediaServicesCredentials object using saved token values. MediaServicesCredentials credentials = new MediaServicesCredentials(_mediaServicesAccountName, _mediaServicesAccountKey) {     AccessToken = accessToken,     TokenExpiration = tokenExpiration };  CloudMediaContext context2 = new CloudMediaContext(credentials);
    
    Mettez à jour la copie du jeton au cas où le jeton a été mis à jour par le kit de développement logiciel (SDK) de Media Services.

    if(tokenExpiration != context2.Credentials.TokenExpiration) {     UpdateTokenDataInExternalStorageIfNeeded(accessToken, context2.Credentials.TokenExpiration); } 
    
  • Si vous possédez plusieurs comptes Media Services (par exemple, à des fins de partage de charge ou de géodistribution), vous pouvez mettre en cache des objets MediaServicesCredentials à l'aide de la collection System.Collections.Concurrent.ConcurrentDictionary (la collection ConcurrentDictionary représente une collection thread-safe de paires clé/valeur accessible par plusieurs threads simultanément). Vous pouvez alors utiliser la méthode GetOrAdd pour obtenir les informations d'identification mises en cache.

    // Declare a static class variable of the ConcurrentDictionary type in which the Media Services credentials will be cached.   private static readonly ConcurrentDictionary<string, MediaServicesCredentials> mediaServicesCredentialsCache =      new ConcurrentDictionary<string, MediaServicesCredentials>();
    
    // Cache (or get already cached) Media Services credentials. Use these credentials to create a new CloudMediaContext object. static public CloudMediaContext CreateMediaServicesContext(string accountName, string accountKey) {     CloudMediaContext cloudMediaContext;     MediaServicesCredentials mediaServicesCredentials;      mediaServicesCredentials = mediaServicesCredentialsCache.GetOrAdd(         accountName,         valueFactory => new MediaServicesCredentials(accountName, accountKey));      cloudMediaContext = new CloudMediaContext(mediaServicesCredentials);      return cloudMediaContext; }
    

Stockage de valeurs de connexion dans la configuration

Le stockage de valeurs de connexion dans la configuration est une pratique vivement recommandée, notamment s’il s’agit de valeurs sensibles comme votre nom de compte et votre mot de passe. Il est également fortement recommandé de chiffrer les données de configuration sensibles. Vous pouvez chiffrer entièrement le fichier de configuration à l’aide du système de fichiers EFS de Windows. Pour activer le système de fichiers EFS sur un fichier, cliquez avec le bouton droit sur le fichier, sélectionnez Propriétés, puis activez le chiffrement sous l’onglet de paramètres Avancé. Vous pouvez également créer une solution personnalisée pour chiffrer des parties sélectionnées d’un fichier de configuration en utilisant une configuration protégée. Voir Chiffrement des informations de configuration à l’aide de la configuration protégée.

Le fichier App.config suivant contient les valeurs de connexion requises. Les valeurs contenues dans l'élément <appSettings> sont les valeurs requises que vous avez obtenues du processus de configuration de compte Services de média.

<?xml version="1.0" encoding="utf-8" ?> <configuration>     <startup>          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />     </startup>   <appSettings>     <add key="MediaServicesAccountName" value="Add-Media-Services-Account-Name" />     <add key="MediaServicesAccountKey" value="Add-Media-Services-Account-Key" />   </appSettings> </configuration> 

Pour récupérer les valeurs de connexion depuis la configuration, vous pouvez utiliser la classe ConfigurationManager, puis attribuer les valeurs aux champs de votre code :

private static readonly string _accountName = ConfigurationManager.AppSettings["MediaServicesAccountName"]; private static readonly string _accountKey = ConfigurationManager.AppSettings["MediaServicesAccountKey"]; 

Vous êtes désormais prêt à passer à la rubrique suivante : Réception des éléments multimédias avec le Kit de développement logiciel (SDK) de Media Services pour .NET.

Voir aussi


Date de génération :

2014-05-23

Ajouts de la communauté

Afficher:
© 2014 Microsoft