Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 授权与ABAC/XACML验证_Validation_Authorization_Access Control_Xacml_Abac - Fatal编程技术网

Validation 授权与ABAC/XACML验证

Validation 授权与ABAC/XACML验证,validation,authorization,access-control,xacml,abac,Validation,Authorization,Access Control,Xacml,Abac,我不确定ABAC/XACML的授权边界在哪里,我应该在哪里使用验证 例1 我有一个class用户和一个class消息。当用户U1创建新消息M1时,M1的创建者属性必须是U1 例2 我有一个class用户。当有人创建一个新用户U2时,密码大小应该大于8 例3 我有一个class用户。当有人创建一个新用户U3时,用户名应该是唯一的 但是我应该在哪里检查呢。我应该以编程方式验证它还是通过向PEP发出请求来授权它。特别是示例2并不是一个“您不允许这样做”的问题(授权),更多的是一个“您做错了什么”的

我不确定ABAC/XACML的授权边界在哪里,我应该在哪里使用验证


例1 我有一个class用户和一个class消息。当用户U1创建新消息M1时,M1的创建者属性必须是U1

例2 我有一个class用户。当有人创建一个新用户U2时,密码大小应该大于8

例3 我有一个class用户。当有人创建一个新用户U3时,用户名应该是唯一的



但是我应该在哪里检查呢。我应该以编程方式验证它还是通过向PEP发出请求来授权它。特别是示例2并不是一个“您不允许这样做”的问题(授权),更多的是一个“您做错了什么”的问题(验证)。

您陈述的示例中没有一个是ABAC/XACML的好例子

示例#1 当用户U1创建新消息M1时,M1的创建者属性必须是U1

这完全是商业逻辑。创建消息的行为将M1的所有者属性设置为U1。它与XACML无关。XACML涉及授权,即是否允许用户执行操作。在本例中,您可以编写一条XACML规则,说明用户U1是否可以创建消息;用户U1是否可以查看或编辑属于U2的消息

示例2 我有一个类用户。当有人创建新用户U2时,密码大小应大于8

这是从应用程序的PoV进行的验证。你的应用程序与身份验证或密码无关。它依赖于密码管理器。密码管理器本身(例如LDAP、AD…)具有关于密码强度/生存期/格式的策略。这些策略可能在XACML中,但到目前为止,我只看到了专有格式

例3 我有一个类用户。当有人创建新用户U3时,用户名应该是唯一的


同样,这是关于验证的。这与您的应用程序无关,而是与您使用的用户帐户管理解决方案有关,例如LDAP。在这里,您可以决定制定规则,禁止使用相同的用户名或某些字符,例如@符号。用户管理解决方案当然可以使用XACML,但从应用程序的PoV来看,这是正交的。

谢谢!您回答了这个问题,但我认为我的错误是在示例中使用了
Users
。例如,示例1是一个REST接口,
Creator
是它的一个属性。只有管理员可以选择其他
创建者
然后选择自己。示例2可以是
银行账户
,创建时必须有正余额。示例3可以是类
建筑
,它必须具有唯一的
地址
。我认为所有三个例子都可以用ABAC/XACML解决,但我不确定它们是否应该解决。如何区分授权和验证?ABAC/XACML业务逻辑不是也一样吗?长话短说,当我们在字段级别工作时,它是授权还是验证(一个
主题
可以做一个
操作
比如创建一个
资源
的特定字段的更改删除,这取决于该字段的值和其他约束)?这就是授权。一句话:您是否关心报告用户试图对给定资源执行给定操作的事实?如果是,那就是授权