ADC

Anwendungsfall für das Zwischenspeichern von Benutzerrechten

In diesem Anwendungsfall müssen Benutzerrechte („GOLD“, „SILVER“ usw.) von einem externen Webservice abgerufen werden.

Führen Sie die folgenden Operationen aus, um diesen Anwendungsfall zu erreichen

Erstellen Sie ein HTTP-Callout, um die Benutzerrechte vom externen Webservice abzurufen.

add policy httpcallout <name> [-IPAddress <ip_addr|ipv6_addr>] [-port <port>] [-vServer <string>] [-returnType <returnType>] [-httpMethod (GET | POST )] [-hostExpr <string>] [-urlStemExpr <string>] [-headers <name(value)> ...] [-parameters <name(value)> ...] [-bodyExpr <string>][-fullReqExpr <string>] [-scheme ( http | https )] [-resultExpr <string>] [-cacheForSecs <secs>] [-comment <string>]

add policy httpcallout get_user_privilege -ipaddress 10.217.193.84 -port 80 -returnType text -httpMethod GET -hostExpr '"/get_user_privilege"' -resultExpr 'http.res.body(5)'
<!--NeedCopy-->

Speichern Sie die Rechte in einer Variablen.

add ns variable <name> -type <string> [-scope ( global | transaction )][-ifFull ( undef | lru )] [-ifValueTooBig ( undef | truncate )][-ifNoValue ( undef | init )] [-init <string>] [-expires <positive_integer>] [-comment <string>]

add ns variable user_privilege_map -type map(text(15),text(10),10000) -expires 1200

add ns assignment set_user_privilege -variable $user_privilege_map[client.ip.src] -set sys.http_callout(get_user_privilege)
<!--NeedCopy-->

Erstellen Sie eine Richtlinie, um zu überprüfen, ob bereits ein zwischengespeicherter Eintrag für die IP-Adresse des Clients vorhanden ist. Andernfalls wird das HTTP-Callout aufgerufen, um einen Karteneintrag für den Client festzulegen.

add cmp policy <name> -rule <expression> -resAction <string>

add cmp policy set_user_privilege_pol -rule $user_privilege_map.valueExists(client.ip.src).not -resAction set_user_privilege>
<!--NeedCopy-->

Erstellen Sie eine Richtlinie, die komprimiert, wenn der zwischengespeicherte Berechtigungseintrag für den Client „GOLD“ lautet.

add cmp policy <name> -rule <expression> -resAction <string>

add cmp policy compress_if_gold_privilege_pol -rule '$user_privilege_map[client.ip.src].eq("GOLD")' -resAction compress
<!--NeedCopy-->

Binden Sie die Komprimierungsrichtlinien global.

bind cmp global <policyName> [-priority <positive_integer>] [-state (ENABLED | DISABLED )] [-gotoPriorityExpression <expression>] [-type <type>] [-invoke (<labelType> <labelName>) ]

bind cmp global set_user_privilege_pol -priority 10 NEXT

bind cmp global compress_if_gold_privilege_pol -priority 20 END
<!--NeedCopy-->
Anwendungsfall für das Zwischenspeichern von Benutzerrechten