L'authentification distante est une fonctionnalité de contrôle d'accès qui protège vos ressources. Lorsqu'une requête utilisateur arrive sur un point de présence (PoP) Alibaba Cloud CDN, le PoP la transfère à votre serveur d'authentification pour validation et traite la requête en fonction du résultat. Seuls les utilisateurs autorisés peuvent accéder à votre contenu.
Fonctionnement
ApsaraVideo VOD prend en charge la signature d'URL et l'authentification distante afin d'éviter le téléchargement illégal ou le hotlinking de votre contenu. Ces deux fonctionnalités diffèrent par leur mise en œuvre :
Signature d'URL : vous définissez des règles d'authentification pour un nom de domaine et les distribuez aux POP CDN. Les POP CDN gèrent ensuite l'intégralité du processus d'authentification. Pour plus d'informations, consultez Signature d'URL.
Authentification distante : vous devez fournir et gérer votre propre serveur d'authentification. Lorsqu'un POP CDN reçoit une requête nécessitant une authentification, il transfère la requête à votre serveur pour validation.
Le schéma suivant illustre le processus d'authentification distante :
Un utilisateur envoie une requête de ressource à un POP CDN. La requête inclut des paramètres d'authentification.
Le POP CDN reçoit la requête de l'utilisateur et la transfère à votre serveur d'authentification.
Le serveur d'authentification valide les paramètres de la requête et renvoie le résultat au POP CDN.
-
Le POP CDN traite la requête de l'utilisateur selon le résultat de l'authentification. Si l'authentification réussit, le PoP autorise la requête. En cas d'échec, le PoP refuse ou restreint la requête. Voici quelques exemples :
Exemple 1 : l'authentification réussit. Le POP CDN sert le contenu mis en cache à l'utilisateur.
Exemple 2 : l'authentification échoue. Le POP CDN renvoie un code d'état 403 à l'utilisateur.
Exemple 3 : l'authentification échoue. Le POP CDN limite l'accès de l'utilisateur.
Exemple 4 : l'authentification expire. Le POP CDN autorise la requête de l'utilisateur, ce qui constitue l'action par défaut.
Notes d'utilisation
Après avoir activé l'authentification distante, chaque requête utilisateur doit être authentifiée. Si vous prévoyez un trafic élevé, assurez-vous que votre serveur d'authentification peut supporter la charge.
Procédure
Connectez-vous à la console ApsaraVideo VOD.
Dans le volet de navigation de gauche, choisissez Configuration Management.
Choisissez CDN Configuration > Domain Names.
Recherchez le nom de domaine que vous souhaitez configurer et cliquez sur Configure dans la colonne Actions.
Cliquez sur Resource Access Control.
Cliquez sur l'onglet Remote Authentication.
-
Activez l'interrupteur Remote Authentication et configurez les paramètres.
Le tableau suivant décrit les paramètres.
Paramètre
Description
Adresse du serveur d'authentification
L'adresse publiquement accessible de votre serveur d'authentification. L'adresse doit respecter les exigences de format et de valeur suivantes.
-
Exigences de format
L'adresse doit être dans l'un des formats suivants :
-
http://example.com/auth
-
https://example.com/auth
-
http://192.0.2.1/auth
-
https://192.0.2.1/auth
-
-
Exigences de valeur
La valeur ne peut pas être
127.0.0.1nilocalhost. Ces adresses locales sont invalides.
Méthode de requête
La méthode de requête prise en charge par votre serveur d'authentification. Valeurs valides : GET, HEAD et POST.
-
POST
-
Les paramètres sont transmis dans le corps de la requête et l'URL de la barre d'adresse ne change pas.
-
Aucune limite pratique sur la quantité de données transmises.
-
Les requêtes ne sont pas mises en cache ni enregistrées dans l'historique du navigateur.
-
La sécurité est relativement élevée.
-
-
GET
-
Les paramètres sont transmis dans la ligne de requête et leurs valeurs sont visibles dans la barre d'adresse.
-
Les limitations du navigateur plafonnent la quantité de données transmissibles à 1 024 octets.
-
Les requêtes peuvent être mises en cache et sont enregistrées dans l'historique du navigateur.
-
La sécurité est relativement faible.
-
-
HEAD
La méthode HEAD est identique à la méthode GET, sauf que le serveur ne renvoie pas de corps de message dans la réponse.
Types de fichiers
-
Tous les types de fichiers : authentifie les requêtes pour tous les types de fichiers.
-
Types de fichiers spécifiés : authentifie les requêtes uniquement pour les fichiers des types spécifiés.
-
Pour spécifier plusieurs types de fichiers, séparez-les par une barre verticale (|), par exemple
mp4|flv. -
Les types de fichiers sont sensibles à la casse. Par exemple,
jpgetJPGsont considérés comme des types de fichiers différents.
-
Conserver les paramètres
Contrôle quels paramètres de l'URL de la requête utilisateur sont utilisés pour l'authentification. Vous pouvez sélectionner Retain all parameters, Retain specified parameters ou Delete all URL parameters.
-
Si vous choisissez de conserver des paramètres spécifiques, séparez plusieurs paramètres par une barre verticale (|), par exemple
user|token. -
Les paramètres sont sensibles à la casse. Par exemple,
keyetKEYsont considérés comme des paramètres différents.
Ajouter des paramètres personnalisés
Ajoute des paramètres personnalisés à l'URL de la requête que le POP CDN transfère au serveur d'authentification.
Vous pouvez sélectionner Custom pour définir des paramètres et des valeurs personnalisés, ou sélectionner Select Parameter pour utiliser des variables prédéfinies depuis la console.
-
Lorsque vous définissez des paramètres et des valeurs personnalisés :
-
Séparez plusieurs paramètres par une barre verticale (|), par exemple
token=$arg_token|vendor=ali_cdn. -
Les paramètres sont sensibles à la casse. Par exemple,
keyetKEYsont considérés comme des paramètres différents.
-
-
Lorsque vous utilisez des variables prédéfinies, vous pouvez extraire leurs valeurs et les ajouter à la requête transférée par le POP CDN.
Par exemple, si vous sélectionnez la variable
$http_host,host=$http_hostest ajouté à l'URL de la requête, où$http_hostcorrespond à la valeur de l'en-tête Host dans la requête utilisateur. Pour obtenir la liste des variables et leurs descriptions, consultez Noms des variables.
Conserver les en-têtes de requête
Contrôle quels en-têtes de la requête utilisateur sont utilisés pour l'authentification. Vous pouvez sélectionner Retain all headers, Retain specified headers ou Delete all request headers.
-
Si vous choisissez de conserver des en-têtes spécifiques, séparez plusieurs en-têtes par une barre verticale (|), par exemple
user_agent|referer|cookies. -
Les en-têtes de requête ne sont pas sensibles à la casse. Par exemple,
http_remote_addretHTTP_Remote_Addrsont considérés comme le même en-tête.
RemarquePar défaut, le POP CDN supprime l'en-tête
Host. En effet, l'en-têteHostde la requête transférée contient le nom de domaine accéléré, que votre serveur d'authentification pourrait ne pas reconnaître, provoquant potentiellement des erreurs 404 ou des échecs d'authentification. Pour conserver l'en-têteHost, utilisez Retain specified headers ou Add Custom Parameters.Ajouter des en-têtes personnalisés
Ajoute des en-têtes personnalisés à la requête que le POP CDN transfère au serveur d'authentification.
Vous pouvez sélectionner Custom pour définir des en-têtes et des valeurs personnalisés, ou sélectionner Select Parameter pour utiliser des variables prédéfinies depuis la console.
-
Lorsque vous définissez des paramètres et des valeurs personnalisés :
-
Séparez plusieurs en-têtes par une barre verticale (|), par exemple
User-Agent=$http_user_agent|vendor=ali_cdn. -
Les en-têtes de requête ne sont pas sensibles à la casse. Par exemple,
http_remote_addretHTTP_Remote_Addrsont considérés comme le même en-tête.
-
-
Lorsque vous utilisez des variables prédéfinies, vous pouvez extraire leurs valeurs et les ajouter à la requête transférée par le POP CDN.
Par exemple, si vous sélectionnez la variable
$http_host,host=$http_hostest ajouté à l'en-tête de la requête, où$http_hostcorrespond à la valeur de l'en-tête Host dans la requête utilisateur. Pour obtenir la liste des variables et leurs descriptions, consultez Noms des variables.
Code d'état de succès
Le code d'état HTTP de votre serveur d'authentification indiquant un succès. Nous vous recommandons d'utiliser un code d'état 2xx.
Par exemple, si vous définissez ce paramètre sur 200, une réponse 200 de votre serveur d'authentification signifie un succès. Si le serveur renvoie un code d'état qui ne correspond ni au code de succès ni au code d'échec, la requête est traitée comme ayant expiré.
Code d'état d'échec
Le code d'état HTTP de votre serveur d'authentification indiquant un échec. Nous vous recommandons d'utiliser un code d'état 4xx.
Par exemple, si vous définissez ce paramètre sur 403, une réponse 403 de votre serveur d'authentification signifie un échec. Si le serveur renvoie un code d'état qui ne correspond ni au code de succès ni au code d'échec, la requête est traitée comme ayant expiré.
Code d'état de réponse personnalisé
Le code d'état que le POP CDN renvoie à l'utilisateur si la requête échoue à l'authentification.
Par exemple, si vous définissez cette valeur sur 403, le POP CDN renvoie un code d'état 403 à l'utilisateur lorsque sa requête échoue à l'authentification.
Délai d'expiration
Le temps maximal qu'un POP CDN attendra une réponse du serveur d'authentification.
Unité : millisecondes. La valeur maximale est 3000.
Action en cas d'expiration
L'action entreprise par le POP CDN si la requête d'authentification vers votre serveur expire. Valeurs valides :
-
allow : en cas d'expiration, le POP CDN autorise la requête de l'utilisateur.
-
reject : en cas d'expiration, le POP CDN renvoie le Custom Response Status Code spécifié à l'utilisateur.
-
-
Cliquez sur OK pour enregistrer la configuration.
Après avoir configuré l'authentification distante, vous pouvez revenir à l'onglet Remote Authentication pour modifier les paramètres ou désactiver la fonctionnalité.
Noms des variables
Lorsque vous ajoutez des paramètres personnalisés, vous pouvez utiliser les variables prédéfinies suivantes.
|
Paramètre |
Description |
|
$http_host |
La valeur de l'en-tête Host dans la requête. |
|
$http_user_agent |
La valeur de l'en-tête User-Agent dans la requête. |
|
$http_referer |
La valeur de l'en-tête Referer dans la requête. |
|
$http_content_type |
La valeur de l'en-tête Content-Type dans la requête. |
|
$http_x_forward_for |
La valeur de l'en-tête X-Forwarded-For dans la requête. |
|
$remote_addr |
L'adresse IP client de la requête. |
|
$scheme |
Le protocole de la requête, tel que |
|
$server_protocol |
La version du protocole de la requête, telle que |
|
$uri |
L'URI d'origine de la requête. |
|
$args |
La chaîne de requête de la requête. Cela n'inclut pas le point d'interrogation ( |
|
$request_method |
La méthode de requête. |
|
$request_uri |
L'URI complet de la requête incluant la chaîne de requête ( |