Citrix ADC

Cas d’utilisation : mise en cache des privilèges utilisateur

Dans ce cas d’utilisation, les privilèges utilisateur (« GOLD », « SILVER », etc.) doivent être récupérés à partir d’un service Web externe.

Pour réaliser ce cas d’utilisation, effectuez les opérations suivantes

Créez une légende HTTP pour récupérer les privilèges utilisateur à partir du service Web externe.

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)'

Stockez les privilèges dans une variable.

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)

Créez une stratégie pour vérifier s’il existe déjà une entrée mise en cache pour l’adresse IP du client ; sinon, il appelle la légende HTTP pour définir une entrée de mappage pour le client.

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>

Créez une stratégie qui compresse si l’entrée de privilège mise en cache pour le client est « GOLD ».

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

Liez les stratégies de compression globalement.

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

Cas d’utilisation : mise en cache des privilèges utilisateur