Citrix ADC

半径支持重写功能

Citrix ADC表达式语言包括可从请求和响应中提取信息并操作半径消息的表达式。通过这些表达式,您可以在将半径消息发送到其目标之前使用重写功能修改其部分。您的重写策略和操作可以使用适合或与半径消息相关的任何表达式。通过可用的表达式,您可以识别半径消息类型,从连接中提取任何属性-值对(avon),并修改avon半径。您还可以为半径连接创建策略标签。

您可以在“重写“规则中使用新的半径表达式出于多种目的。例如,您可以:

  • 删除半径用户名AVP的域部分,以简化单点登录(SSO)。
  • 插入供应商特定的avon,例如电话公司操作中使用的MSISDN字段,以包含订阅者信息。

您还可以创建策略标签,以便通过一系列适用于这些请求的策略路由特定类型的半径请求。

注意

用于重写的半径有以下限制:

  • Citrix ADC不会重新签署重写的半径请求或响应。如果半径身份验证服务器需要签名的半径消息,则身份验证将失败。
  • 当前可用的半径表达式不适用于半径IPv6属性。

支持半径的表达式的Citrix ADC文档假定熟悉半径通信的基本结构和用途。如果您需要有关的半径更多信息,请参阅半径服务器文档或在线搜索,了解半径协议的简介。

配置半径的重写策略

以下过程使用Citrix ADC命令行配置重写操作和策略,并将策略绑定到特定于重写的全局绑定点。

要配置重写操作和策略并绑定策略,请执行以下操作

在命令提示符下,键入以下命令:

  • 添加重写操作
  • 添加重写策略
  • 绑定重写策略 -type ,其中< bindPoint >表示特定于重写的全局绑定点之一。

用于重写的半径表达式

在重写配置中,您可以使用以下Citrix ADC表达式来引用半径请求或响应的各个部分。

识别连接类型

  • 半径。IS_CLIENT

    如果连接是半径客户端(请求)消息,则返回现实。

  • 半径。IS_SERVER

    如果连接是半径服务器(响应)消息,则返回现实。

请求表达式

  • RADIUS.REQ.CODE

    返回与半径请求类型对应的数字。num_at类的衍生物。例如,RADIUS 访问请求将返回 1(一)。RADIUS 会计请求将返回 4。

  • RADIUS.REQ.LENGTH

    返回半径请求的长度,包括标头。num_at类的衍生物。

  • RADIUS.REQ.IDENTIFIER

    返回半径请求标识符,一个分配给每个请求的数字,允许请求与相应响应匹配。num_at类的衍生物。

  • RADIUS.REQ。AVP (< avon代码没有>)。价值

    返回此avon首次出现的值作为text_t类型的字符串。

  • RADIUS.REQ。AVP (< avon代码没有>)。实例(实例)

    以RAVP_t类型的字符串形式返回AVP的指定实例。在半径消息中可能会出现多次特定的AVP半径。实例(0)返回第一个实例,实例(1)返回第二个实例,依此类促,最多可返回16个实例。

  • RADIUS.REQ。AVP (< avon代码没有>)。价值(instance number)

    以text_t类型的字符串形式返回AVP的指定实例的值。

  • RADIUS.REQ。AVP (< avon代码没有>)。数

    以整数形式返回半径连接中特定AVP的实例数。

  • RADIUS.REQ。AVP (< avon代码没有>)。存在

    如果消息中存在指定类型的avon,则返回正确的;如果不存在,则返回错误的。

响应表达式

半径响应表达式与半径请求表达式相同,但RES替换要求。

AVP值的类型转换

ADC支持将avon半径值转换为文本,整数,无符号整数,长,无符号长,ipv4地址,ipv6地址,ipv6前缀和时间数据类型的表达式。语法与其他Citrix ADC类型转换表达式的语法相同。

例如

ADC支持将avon半径值转换为文本,整数,无符号整数,长,无符号长,ipv4地址,ipv6地址,ipv6前缀和时间数据类型的表达式。语法与其他Citrix ADC类型转换表达式的语法相同。

RADIUS.REQ.AVP (8) value(0)。typecast_ip_address_at < !——NeedCopy >

AVP类型表达式

Citrix ADC支持使用RFC2865和RFC2866中描述的分配整数代码提取avon半径值的表达式。您还可以使用文本别名来完成相同的任务。下面是一些示例。

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

    提取半径用户名值。

  • RADIUS.REQ. avp (4). VALUE或RADIUS.REQ. avp。ACCT \ _SESSION \ _ID.value

    从消息中提取会话ID AVP(代码44)。

  • RADIUS.REQ.AVP(26)。值或RADIUS.REQ.VENDOR \ _SPECIFIC.VALUE

    提取供应商特定的值。

大多数常用半径AVP的值可以以相同的方式提取。

半径绑定积分

对于包含半径表达式的策略,有四个全局绑定点可用。

  • RADIUS_REQ_OVERRIDE

    优先级/覆盖请求策略队列。

  • RADIUS_REQ_DEFAULT

    标准请求策略队列。

  • RADIUS_RES_OVERRIDE

    优先级/覆盖响应策略队列。

  • RADIUS_RES_DEFAULT

    标准响应策略队列。

半径重写特定表达式

  • 半径。NEW_AVP

    以字符串形式返回指定的AVP半径。

  • 半径。NEW_AVP_INTEGER32

    以整数形式返回指定的AVP半径。

  • 半径。NEW_AVP_UNSIGNED32

    以无符号整数形式返回指定的AVP半径。

  • 半径。NEW_VENDOR_SPEC_AVP (< ID >、< >定义)

    将指定的扩展供应商特定的AVP添加到连接中。对于<标识>, 替代了很长的数字.对于< >定义,替换包含avon数据的字符串。

  • RADIUS.REQ.AVP_START

    返回半径标头末尾和AVP开始之间的位置。用于重写操作。

    示例:

在radius.req之后添加重写操作insert1 insert_。avp_start半径。NEW AVP (33, "NEW AVP") 
  • RADIUS.REQ.AVP_END

    在半径消息中返回半径消息(或者换句话说,所有AVP的末尾)的位置。执行重写操作时使用。

    示例:

添加重写操作insert2 insert_before radius.req。avp_end”半径。“新avon”new_avp(33)”<!——NeedCopy >
  • RADIUS.REQ.AVP_LIST

    返回半径消息中AVP开始处的位置,以及半径消息的长度(不包括标头)。换句话说,返回半径消息中的所有avon。用于执行重写操作。

    示例:

添加重写操作insert3 insert_before_all radius.req。avp_list”半径。“新avon”new_avp(33)”搜索“avp(33)”<!——NeedCopy >

半径的有效重写操作类型

可与半径表达式一起使用的重写操作类型为:

  • INSERT_AFTER
  • INSERT_BEFORE
  • INSERT_AFTER_ALL
  • INSERT_BEFORE_ALL
  • 删除
  • DELETE_ALL
  • 取代
  • REPLACE_ALL

所有INSERT_行动可用于将半径avon插入到半径连接中。

用例

下面是具有重写的半径的用例。

重写用户名avon

要将重写功能配置为从半径用户名avon中删除域字符串,首先创建重写余数操作,如下例所示。在选择所有半径请求的重写策略中使用操作。将策略绑定到全局绑定点。执行此操作时,请将优先级设置为适当级别,以允许任何阻止或拒绝策略首先生效,但确保重写所有未被阻止或拒绝的请求。将转到表达式(GotopriorityExPR)设置为下以继续策略评估,并将该策略附加到RADIUS_REQ_DEFAULT队列。

示例:

添加重写操作rwactradusdomaindel替换radius.req。RADIUS.REQ.USER_NAME.VALUE user_name q / RADIUS.NEW_AVP(1。AFTER_STR(" "))/ add rewrite policy RadiusRemoveDomainPol true rwactradusdomaindel 

注意

半径的重写策略不适用于网关虚拟服务器。如果使用网关虚拟服务器进行负载平衡,则需要配置半径,并且重写策略需要绑定到半径负载平衡虚拟服务器。

插入特定于供应商的AVP

若要配置重写操作以插入包含MSISDN字段内容的供应商特定的avon,首先创建将MSISDN字段插入到请求中的重写插入操作。在重写策略中使用选择所有半径请求的操作。将策略绑定到全局,将优先级设置为适当的级别和其他参数,如以下示例所示。

示例:

添加重写操作rwactradusinsmsisdn insert_after radius.req。avp_start半径。半径NEW_VENDOR_SPEC_AVP(<供应商ID >。”NEW_AVP(, )") add rewrite policy rwPolRadiusInsMSISDN true rwActRadiusInsMSISDN bind rewrite global rwPolRadiusInsMSISDN 100 NEXT -type RADIUS_REQ_DEFAULT 
半径支持重写功能