RADIUS-Unterstützung für das Rewrite-Feature
Die Citrix ADC Ausdruckssprache enthält Ausdrücke, die Informationen aus RADIUS-Nachrichten in Anforderungen und Antworten extrahieren und bearbeiten können. Mit diesen Ausdrücken können Sie die Funktion Umschreiben verwenden, um Teile einer RADIUS-Nachricht zu ändern, bevor sie an ihr Ziel gesendet wird. Ihre Umschreibungsrichtlinien und -aktionen können einen beliebigen Ausdruck verwenden, der für eine RADIUS-Nachricht geeignet oder relevant ist. Mit den verfügbaren Ausdrücken können Sie den RADIUS-Nachrichtentyp identifizieren, ein beliebiges Attributwertpaar (AVP) aus der Verbindung extrahieren und RADIUS-AVPs ändern. Sie können auch Richtlinienbeschriftungen für RADIUS-Verbindungen erstellen.
Sie können die neuen RADIUS-Ausdrücke in Rewrite-Regeln für eine Reihe von Zwecken verwenden. Zum Beispiel könnten Sie:
- Entfernen Sie den Domänenbereich des RADIUS-Benutzernamens AVP, um Single Sign-On (SSO) zu vereinfachen.
- Fügen Sie einen herstellerspezifischen AVP ein, z. B. das MSISDN-Feld, das im Telefonbetriebsbetrieb verwendet wird, um Teilnehmerinformationen zu enthalten.
Sie können auch Richtlinienbeschriftungen erstellen, um bestimmte Arten von RADIUS-Anforderungen durch eine Reihe von Richtlinien weiterzuleiten, die für diese Anforderungen geeignet sind.
Hinweis:
RADIUS for Rewrite hat folgende Einschränkungen:
- Das Citrix ADC signiert nicht neu geschriebene RADIUS-Anforderungen oder Antworten neu. Wenn der RADIUS-Authentifizierungsserver signierte RADIUS-Nachrichten erfordert, schlägt die Authentifizierung fehl.
- Die aktuell verfügbaren RADIUS-Ausdrücke funktionieren nicht mit RADIUS-IPv6-Attributen.
Die Citrix ADC Dokumentation für Ausdrücke, die RADIUS unterstützen, setzt voraus, dass sie mit der grundlegenden Struktur und dem Zweck der RADIUS-Kommunikation vertraut sind. Wenn Sie weitere Informationen zu RADIUS benötigen, lesen Sie Ihre RADIUS-Serverdokumentation oder suchen Sie online nach einer Einführung in das RADIUS-Protokoll.
Konfigurieren von Rewrite-Richtlinien für RADIUS
Das folgende Verfahren verwendet die Citrix ADC Befehlszeile, um eine Umschreibungsaktion und -richtlinie zu konfigurieren und die Richtlinie an einen neu schreibspezifischen globalen Bindungspunkt zu binden.
So konfigurieren Sie eine Umschreibungsaktion und -richtlinie und binden die Richtlinie:
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein:
add rewrite action <actName> <actType>
add rewrite policy <polName> <rule> <actName>
- bind rewrite policy <polName> <priority> <nextExpr> -type <bindPoint><bindPoint>```` wobei einen der Wiederbeschreibungsspezifischen globalen Bindungspunkte darstellt.
RADIUS-Ausdrücke für Umschreiben
In einer Rewrite-Konfiguration können Sie die folgenden Citrix ADC Ausdrücke verwenden, um auf verschiedene Teile einer RADIUS-Anforderung oder -Antwort zu verweisen.
Identifizieren der Art der Verbindung:
-
RADIUS.IS_CLIENT
Gibt TRUE zurück, wenn die Verbindung eine RADIUS-Client-Meldung (Anfrage) ist.
-
RADIUS.IS_SERVER
Gibt TRUE zurück, wenn die Verbindung eine RADIUS-Servermeldung (Antwort) ist.
Anforderungsausdrücke:
-
RADIUS.REQ.CODE
Gibt die Nummer zurück, die dem RADIUS-Anforderungstyp entspricht. Eine Ableitung der num_at-Klasse. Beispielsweise würde eine RADIUS-Zugriffsanforderung 1 (eins) zurückgeben. Eine RADIUS-Buchhaltungsanforderung würde 4 zurückgeben.
-
RADIUS.REQ.LENGTH
Gibt die Länge der RADIUS-Anforderung einschließlich des Headers zurück. Eine Ableitung der num_at-Klasse.
-
RADIUS.REQ.IDENTIFIER
Gibt die RADIUS-Anforderungskennung zurück, eine Nummer, die jeder Anforderung zugewiesen ist, die es ermöglicht, die Anforderung mit der entsprechenden Antwort abzugleichen. Eine Ableitung der num_at-Klasse.
-
RADIUS.REQ.AVP(<AVP Code No>).VALUE
Gibt den Wert des ersten Vorkommens dieses AVP als Zeichenfolge vom Typ text_t zurück.
-
RADIUS.REQ.AVP(<AVP code no>).INSTANCE(instance number)
Gibt die angegebene Instanz des AVP als Zeichenfolge vom Typ RAVP_t zurück. Ein bestimmter RADIUS-AVP kann mehrmals in einer RADIUS-Meldung auftreten. INSTANCE (0) gibt die erste Instanz zurück, INSTANCE (1) gibt die zweite Instanz zurück usw. bis zu sechzehn Instanzen.
-
RADIUS.REQ.AVP(<AVP code no>).VALUE(instance number)
Gibt den Wert der angegebenen Instanz des AVP als Zeichenfolge vom Typ text_t zurück.
-
RADIUS.REQ.AVP(<AVP code no>).COUNT
Gibt die Anzahl der Instanzen eines bestimmten AVP in einer RADIUS-Verbindung als Ganzzahl zurück.
-
RADIUS.REQ.AVP(<AVP code no>).EXISTS
Gibt TRUE zurück, wenn der angegebene Typ von AVP in der Nachricht vorhanden ist, oder FALSE, wenn dies nicht der Fall ist.
Response-Ausdrücke:
RADIUS-Antwortausdrücke sind identisch mit RADIUS-Anforderungsausdrücken, mit der Ausnahme, dass RES REQ ersetzt.
Typecasts von AVP-Werten:
Der ADC unterstützt Ausdrücke, um RADIUS-AVP-Werte für Text, Ganzzahl, Ganzzahl ohne Vorzeichen, lang, unsigned long, ipv4-Adresse, ipv6-Adresse, ipv6-Präfix und Zeitdatentypen zu typisieren. Die Syntax ist die gleiche wie bei anderen Citrix ADC -Typecast-Ausdrücken.
Beispiel:
Der ADC unterstützt Ausdrücke, um RADIUS-AVP-Werte für Text, Ganzzahl, Ganzzahl ohne Vorzeichen, lang, unsigned long, ipv4-Adresse, ipv6-Adresse, ipv6-Präfix und Zeitdatentypen zu typisieren. Die Syntax ist die gleiche wie bei anderen Citrix ADC -Typecast-Ausdrücken.
RADIUS.REQ.AVP(8).VALUE(0).typecast_ip_address_at
AVP-Typausdrücke:
Citrix ADC unterstützt Ausdrücke zum Extrahieren von RADIUS-AVP-Werten mit der zugewiesenen Ganzzahlcodes, die in RFC2865 und RFC2866 beschrieben sind. Sie können auch Textaliase verwenden, um dieselbe Aufgabe auszuführen. Einige Beispiele folgen.
-
RADIUS.REQ.AVP (1).VALUE or RADIUS.REQ.USERNAME.value
Extrahiert den RADIUS-Benutzernamenwert.
-
RADIUS.REQ.AVP (4). VALUE or RADIUS.REQ. ACCT\_SESSION\_ID.value
Extrahiert die Acct-Session-ID AVP (Code 44) aus der Nachricht.
-
RADIUS.REQ.AVP (26). VALUE or RADIUS.REQ.VENDOR\_SPECIFIC.VALUE
Extrahiert den herstellerspezifischen Wert.
Die Werte der am häufigsten verwendeten RADIUS-AVPs können auf die gleiche Weise extrahiert werden.
RADIUS-Bindepunkte:
Für Richtlinien, die RADIUS-Ausdrücke enthalten, stehen vier globale Bindpunkte zur Verfügung.
-
RADIUS_REQ_OVERRIDE
Priorität/Überschreiben der Anforderungsrichtlinienwarteschlange.
-
RADIUS_REQ_DEFAULT
Standardanforderungsrichtlinienwarteschlange.
-
RADIUS_RES_OVERRIDE
Priorität/Überschreiben der Antwortrichtlinienwarteschlange.
-
RADIUS_RES_DEFAULT
Standardwarteschlange für Antwortrichtlinien.
RADIUS-Rewrite-spezifische Ausdrücke:
-
RADIUS.NEW_AVP
Gibt den angegebenen RADIUS AVP als String zurück.
-
RADIUS.NEW_AVP_INTEGER32
Gibt den angegebenen RADIUS AVP als Ganzzahl zurück.
-
RADIUS.NEW_AVP_UNSIGNED32
Gibt den angegebenen RADIUS AVP als Ganzzahl ohne Vorzeichen zurück.
-
RADIUS.NEW_VENDOR_SPEC_AVP(<ID>, <definition>)
Fügt der Verbindung die angegebenen erweiterten herstellerspezifischen AVPs hinzu. Für
<ID>
, ersetzen Sie eine lange Zahl. Ersetzen Sie für<definition>
eine Zeichenfolge, die die Daten für den AVP enthält. -
RADIUS.REQ.AVP_START
Gibt die Position zwischen dem Ende des RADIUS-Headers und dem Anfang der AVPs zurück. Wird in Umschreibaktionen verwendet.
Beispiel:
add rewrite action insert1 insert_after radius.req.avp_start radius.new_avp(33, "NEW AVP")
-
RADIUS.REQ.AVP_END
Gibt die Position am Ende der Radiusnachricht (oder das Ende aller AVPs) in Radiusnachricht zurück. Wird beim Ausführen von Rewrite-Aktionen verwendet.
Beispiel:
add rewrite action insert2 insert_before radius.req.avp_end "radius.new_avp(33, "NEW AVP")"
-
RADIUS.REQ.AVP_LIST
Gibt die Position am Anfang der AVPs in einer RADIUS-Nachricht und die Länge der RADIUS-Nachricht zurück, ohne den Header. Mit anderen Worten, gibt alle AVPs in einer RADIUS-Nachricht zurück. Wird verwendet, um Rewrite-Aktionen auszuführen.
Beispiel:
add rewrite action insert3 insert_before_all radius.req.avp_list "radius.new_avp(33, "NEW AVP")" -search "avp(33)"
Gültige Rewrite-Aktionstypen für RADIUS:
Die Aktionstypen Umschreiben, die mit RADIUS-Ausdrücken verwendet werden können, sind:
- INSERT_AFTER
- INSERT_BEFORE
- INSERT_AFTER_ALL
- INSERT_BEFORE_ALL
- Löschen
- DELETE_ALL
- REPLACE
- REPLACE_ALL
AlleINSERT_ actions
können verwendet werden, um einen RADIUS AVP in eine RADIUS-Verbindung einzufügen.
Anwendungsfälle
Im Folgenden sind Anwendungsfälle für RADIUS mit Rewrite.
Benutzername AVP neu schreiben
Um das Rewrite-Feature so zu konfigurieren, dass die Domain-Zeichenfolge aus dem RADIUS-Benutzernamen AVP entfernt wird, erstellen Sie zunächst eine Rewrite REPLACE -Aktion, wie im folgenden Beispiel dargestellt. Verwenden Sie die Aktion in einer Richtlinie Umschreiben, die alle RADIUS-Anforderungen auswählt. Binden Sie die Richtlinie an einen globalen Bindungspunkt. Legen Sie dabei die Priorität auf die entsprechende Ebene fest, damit alle Blockierungs- oder Ablehnungsrichtlinien zuerst wirksam werden. Stellen Sie jedoch sicher, dass alle Anforderungen, die nicht blockiert oder abgelehnt werden, neu geschrieben werden. Setzen Sie den Goto Expression (gotoPriorityExpr) auf NEXT, um die Richtlinienbewertung fortzusetzen, und fügen Sie die Richtlinie an die RADIUS_REQ_DEFAULT Warteschlange an.
Beispiel:
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
Hinweis:
Die Richtlinie zum Umschreiben von RADIUS gilt nicht für einen virtuellen Gateway server. Wenn ein virtueller Gateway server ein Lastenausgleich verwendet wird, muss RADIUS konfiguriert werden, und die Rewrite-Richtlinie muss an einen virtuellen RADIUS-Lastausgleichsserver gebunden werden.
Einfügen eines herstellerspezifischen AVP
Um die Aktion Umschreiben so zu konfigurieren, dass ein herstellerspezifischer AVP eingefügt wird, der den Inhalt des MSISDN-Felds enthält, erstellen Sie zunächst eine neu schreibende INSERT-Aktion, die das MSISDN-Feld in die Anforderung einfügt. Verwenden Sie die Aktion in einer Richtlinie Umschreiben, die alle RADIUS-Anforderungen auswählt. Binden Sie die Richtlinie an global, indem Sie die Priorität auf eine entsprechende Ebene und die anderen Parameter festlegen, wie im folgenden Beispiel gezeigt.
Beispiel:
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
```