ADC

Support RADIUS pour la fonctionnalité de réécriture

Le langage d’expressions NetScaler inclut des expressions permettant d’extraire des informations des messages RADIUS et de les manipuler dans les requêtes et les réponses. Ces expressions vous permettent d’utiliser la fonction de réécriture pour modifier des parties d’un message RADIUS avant de l’envoyer à sa destination. Vos politiques et actions de réécriture peuvent utiliser n’importe quelle expression appropriée ou pertinente pour un message RADIUS. Les expressions disponibles vous permettent d’identifier le type de message RADIUS, d’extraire toute paire attribut-valeur (AVP) de la connexion et de modifier les AVP RADIUS. Vous pouvez également créer des étiquettes de politique pour les connexions RADIUS.

Vous pouvez utiliser les nouvelles expressions RADIUS dans les règles de réécriture à différentes fins. Par exemple, vous pouvez :

  • Supprimez la partie domaine \ du nom d’utilisateur RADIUS AVP pour simplifier l’authentification unique (SSO).
  • Insérez un AVP spécifique au fournisseur, tel que le champ MSISDN utilisé dans les opérations de la compagnie de téléphone pour contenir les informations sur les abonnés.

Vous pouvez également créer des étiquettes de politique pour acheminer des types spécifiques de demandes RADIUS par le biais d’une série de politiques adaptées à ces demandes.

Remarque :

RADIUS for Rewrite présente les limites suivantes :

  • NetScaler ne signe pas à nouveau les demandes ou réponses RADIUS réécrites. Si le serveur d’authentification RADIUS requiert des messages RADIUS signés, l’authentification échouera.
  • Les expressions RADIUS actuellement disponibles ne fonctionnent pas avec les attributs IPv6 de RADIUS.

La documentation de NetScaler relative aux expressions qui prennent en charge RADIUS suppose une connaissance de la structure et de l’objectif de base des communications RADIUS. Si vous avez besoin de plus amples informations sur RADIUS, consultez la documentation de votre serveur RADIUS ou recherchez en ligne une introduction au protocole RADIUS.

Configuration des politiques de réécriture pour RADIUS

La procédure suivante utilise la ligne de commande NetScaler pour configurer une action et une politique de réécriture et lier la politique à un point de liaison global spécifique à la réécriture.

Pour configurer une action et une politique de réécriture, et lier la politique,procédez comme suit :

À l’invite de commandes, tapez les commandes suivantes :

  • add rewrite action <actName> <actType>
  • add rewrite policy <polName> <rule> <actName>
  • bind rewrite policy <polName> <priority> <nextExpr> -type <bindPoint><bindPoint> représente l’un des points de liaison globaux spécifiques à la réécriture.

Expressions RADIUS pour la réécriture

Dans une configuration de réécriture, vous pouvez utiliser les expressions NetScaler suivantes pour faire référence à différentes parties d’une demande ou d’une réponse RADIUS.

Identification du type de connexion :

  • RADIUS.IS_CLIENT

    Renvoie TRUE si la connexion est un message client RADIUS (demande).

  • RADIUS.IS_SERVER

    Renvoie TRUE si la connexion est un message de serveur RADIUS (réponse).

Expressions de demande :

  • RADIUS.REQ.CODE

    Renvoie le numéro qui correspond au type de demande RADIUS. Un dérivé de la classe num_at. Par exemple, une demande d’accès RADIUS renverrait 1 (un). Une demande de comptabilité RADIUS renverrait 4.

  • RADIUS.REQ.LENGTH

    Renvoie la longueur de la requête RADIUS, y compris l’en-tête. Un dérivé de la classe num_at.

  • RADIUS.REQ.IDENTIFIER

    Renvoie l’identifiant de demande RADIUS, un numéro attribué à chaque demande qui permet de faire correspondre la demande à la réponse correspondante. Un dérivé de la classe num_at.

  • RADIUS.REQ.AVP(<AVP Code No>).VALUE

    Renvoie la valeur de la première occurrence de cet AVP sous la forme d’une chaîne de type text_t.

  • RADIUS.REQ.AVP(<AVP code no>).INSTANCE(instance number)

    Renvoie l’instance spécifiée de l’AVP sous la forme d’une chaîne de type RAVP_t. Un AVP RADIUS spécifique peut apparaître plusieurs fois dans un message RADIUS. INSTANCE (0) renvoie la première instance, INSTANCE (1) renvoie la deuxième instance, et ainsi de suite, jusqu’à seize instances.

  • RADIUS.REQ.AVP(<AVP code no>).VALUE(instance number)

    Renvoie la valeur de l’instance spécifiée de l’AVP sous forme de chaîne de type text_t.

  • RADIUS.REQ.AVP(<AVP code no>).COUNT

    Renvoie le nombre d’instances d’un AVP spécifique dans une connexion RADIUS, sous forme d’entier.

  • RADIUS.REQ.AVP(<AVP code no>).EXISTS

    Renvoie TRUE si le type d’AVP spécifié existe dans le message, ou FALSE dans le cas contraire.

Expressions de réponse :

Les expressions de réponse RADIUS sont identiques aux expressions de demande RADIUS, sauf que RES remplace REQ.

Typecasts des valeurs AVP :

L’ADC prend en charge les expressions permettant de convertir les valeurs RADIUS AVP sous forme de texte, d’entier, d’entier non signé, de type long, de type long non signé, d’adresse ipv4, d’adresse ipv6, de préfixe ipv6 et de types de données temporelles. La syntaxe est la même que pour les autres expressions NetScaler typecast.

Exemple :

L’ADC prend en charge les expressions permettant de convertir les valeurs RADIUS AVP sous forme de texte, d’entier, d’entier non signé, de type long, de type long non signé, d’adresse ipv4, d’adresse ipv6, de préfixe ipv6 et de types de données temporelles. La syntaxe est la même que pour les autres expressions NetScaler typecast.

RADIUS.REQ.AVP(8).VALUE(0).typecast_ip_address_at
<!--NeedCopy-->

Expressions de type AVP :

NetScaler prend en charge les expressions permettant d’extraire les valeurs RADIUS AVP à l’aide des codes entiers assignés décrits dans les RFC2865 et RFC2866. Vous pouvez également utiliser des alias de texte pour effectuer la même tâche. Voici quelques exemples.

  • RADIUS.REQ.AVP (1).VALUE or RADIUS.REQ.USERNAME.value

    Extrait la valeur du nom d’utilisateur RADIUS.

  • RADIUS.REQ.AVP (4). VALUE or RADIUS.REQ. ACCT\_SESSION\_ID.value

    Extrait le Acct-Session-ID AVP (code 44) du message.

  • RADIUS.REQ.AVP (26). VALUE or RADIUS.REQ.VENDOR\_SPECIFIC.VALUE

    Extrait la valeur spécifique au fournisseur.

Les valeurs des AVP RADIUS les plus couramment utilisées peuvent être extraites de la même manière.

Points de liaison RADIUS :

Quatre points de liaison globaux sont disponibles pour les politiques contenant des expressions RADIUS.

  • RADIUS_REQ_OVERRIDE

    File d’attente des politiques relatives aux demandes de priorité/de dérogation.

  • RADIUS_REQ_DEFAULT

    File d’attente de règles de demande standard.

  • RADIUS_RES_OVERRIDE

    File d’attente des politiques de priorité/d’annulation des réponses.

  • RADIUS_RES_DEFAULT

    File d’attente de politiques de réponse standard.

Expressions spécifiques à la réécriture RADIUS :

  • RADIUS.NEW_AVP

    Renvoie le RADIUS AVP spécifié sous forme de chaîne.

  • RADIUS.NEW_AVP_INTEGER32

    Renvoie le RADIUS AVP spécifié sous la forme d’un entier.

  • RADIUS.NEW_AVP_UNSIGNED32

    Renvoie le RADIUS AVP spécifié sous la forme d’un entier non signé.

  • RADIUS.NEW_VENDOR_SPEC_AVP(<ID>, <definition>)

    Ajoute les AVP étendus spécifiques au fournisseur à la connexion. Remplacez par un nombre long. <ID> Remplacez par une chaîne contenant les données de l’AVP. <definition>

  • RADIUS.REQ.AVP_START

    Renvoie l’emplacement entre la fin de l’en-tête RADIUS et le début des AVP. Utilisé dans les actions de réécriture.

    Exemple :

    add rewrite action insert1 insert_after radius.req.avp_start radius.new_avp(33, "NEW AVP")
<!--NeedCopy-->
  • RADIUS.REQ.AVP_END

    Renvoie l’emplacement à la fin du message Radius (ou en d’autres termes, fin de tous les AVP) dans le message Radius. Utilisé lors de l’exécution d’actions de réécriture.

    Exemple :

    add rewrite action insert2 insert_before radius.req.avp_end "radius.new_avp(33, "NEW AVP")"
<!--NeedCopy-->
  • RADIUS.REQ.AVP_LIST

    Renvoie l’emplacement au début des AVP dans un message RADIUS, ainsi que la longueur du message RADIUS, à l’exclusion de l’en-tête. En d’autres termes, renvoie tous les AVP dans un message RADIUS. Utilisé pour effectuer des actions de réécriture.

    Exemple :

    add rewrite action insert3 insert_before_all radius.req.avp_list "radius.new_avp(33, "NEW AVP")" -search "avp(33)"
<!--NeedCopy-->

Types d’actions de réécriture valides pourRADIUS :

Les types d’actions de réécriture qui peuvent être utilisés avec les expressions RADIUS sont les suivants :

  • INSERT_AFTER
  • INSERT_BEFORE
  • INSERT_AFTER_ALL
  • INSERT_BEFORE_ALL
  • SUPPRIMER
  • DELETE_ALL
  • REMPLACER
  • REPLACE_ALL

Tous INSERT_ actions peuvent être utilisés pour insérer un RADIUS AVP dans une connexion RADIUS.

Cas d’utilisation

Vous trouverez ci-dessous des cas d’utilisation de RADIUS avec réécriture.

Réécriture du nom d’utilisateur AVP

Pour configurer la fonctionnalité de réécriture afin de supprimer le domaine \ string du nom d’utilisateur RADIUS AVP, commencez par créer une action de réécriture REPLACE comme indiqué dans l’exemple ci-dessous. Utilisez cette action dans une politique de réécriture qui sélectionne toutes les demandes RADIUS. Liez la politique à un point de liaison global. Pour ce faire, définissez le niveau de priorité approprié pour permettre aux politiques de blocage ou de rejet d’entrer en vigueur en premier, tout en veillant à ce que toutes les demandes qui ne sont pas bloquées ou rejetées soient réécrites. Définissez l’expression Goto (GoToPriorityExpr) sur NEXT pour poursuivre l’évaluation de la politique et attachez la politique à la file d’attente RADIUS_REQ_DEFAULT.

Exemple :

add rewrite action rwActRadiusDomainDel replace radius.req.user_name q/RADIUS.NEW_AVP(1,RADIUS.REQ.USER_NAME.VALUE.AFTER_STR(" "))/
add rewrite policy RadiusRemoveDomainPol true rwActRadiusDomainDel
<!--NeedCopy-->

Remarque :

La politique de réécriture pour RADIUS ne s’applique pas à un serveur virtuel de passerelle. Si un serveur virtuel de passerelle est utilisé comme équilibrage de charge, RADIUS doit être configuré et la politique de réécriture doit être liée à un serveur virtuel d’équilibrage de charge RADIUS.

Insertion d’un AVP spécifique au fournisseur

Pour configurer l’action de réécriture afin d’insérer un AVP spécifique au fournisseur contenant le contenu du champ MSISDN, commencez par créer une action de réécriture INSERT qui insère le champ MSISDN dans la demande. Utilisez l’action dans une politique de réécriture qui sélectionne toutes les demandes RADIUS. Liez la politique à globale, en définissant la priorité à un niveau approprié et les autres paramètres, comme indiqué dans l’exemple suivant.

Exemple :

add rewrite action rwActRadiusInsMSISDN insert_after radius.req.avp_start RADIUS.NEW_VENDOR_SPEC_AVP(<VENDOR ID>, "RADIUS.NEW_AVP(<Attribute Code>, <MSISDN>)")
add rewrite policy rwPolRadiusInsMSISDN true rwActRadiusInsMSISDN
bind rewrite global rwPolRadiusInsMSISDN 100 NEXT -type RADIUS_REQ_DEFAULT
<!--NeedCopy-->
Support RADIUS pour la fonctionnalité de réécriture