ADC

Anwendungsfall: Benutzerrechte zwischenspeichern

In diesem Anwendungsfall müssen Benutzerberechtigungen (GOLD, SILVER usw.) von einem externen Webdienst 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 wird, 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: Benutzerrechte zwischenspeichern