【发布时间】:2018-05-25 20:36:14
【问题描述】:
2015 年 3 月 10 日的 ALFA OASIS 工作草案 01 (alfa-for-xacml-v1.0-wd01) 提到了常量值
3.15 常数值
常量值可以出现在策略表达式中。 ALFA 支持字符串、整数、 直接双打和布尔值。字符串用单引号或 双引号。整数由一个数字和可选的减号组成 符号。 Double 由一个带小数点的数字和可选的 减号。布尔值由值 true 和 false 组成,没有 引号。其他数据类型使用字符串表示,后跟 冒号和数据类型的名称..
这意味着,您可以使用该示例中的常量值(而 report 是常量值):
target clause requestedType == "report"
但问题是,一旦 ALFA 文件增长并且您已将常量值 report 全部写入,您可能希望将常量值更改为假设为 my.company.attributes.medicalReport。为此,您必须查找并替换所有出现的常量值。
因此(为了避免冗余)constants 已在其他语言中被发明,您可以在其中定义 smth。喜欢
const string REPORT_TYPE = "my.company.attributes.medicalReport"
甚至更高性能:
const integer REPORT_TYPE_ID = 3
甚至更优雅:
const enum SUBJECT_TYPES { PATIENT, USER, EXAM, REPORT }
定义了这些常量后,我可以编写如下目标:
target clause requestedType == REPORT_TYPE_ID
ALFA 是否支持常量或有办法“模拟”它们(可能是返回所需值的函数)?
【问题讨论】:
标签: authorization abac alfa