我不确定ABAC/XACML的授权边界在哪里,我应该在哪里使用验证。
示例1
我有一个类用户和一个类消息。当用户U1创建新消息M1时,M1的创建者属性必须是U1。
示例2
我有一个类用户。当某人创建一个新用户U2时,密码大小应该大于8。
示例3
我有一个类用户。当某人创建一个新用户U3时,用户名应该是唯一的。
但我该去哪查呢。我是以编程方式验证它,还是通过对PEP的请求来授权它。特别是示例2并不是真正的“您不允许这样做”-problem(授权),而更多的是“您做错了什么”-problem(验证)。
发布于 2017-11-20 17:45:03
您所述的示例中没有一个是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来看,这是正交的。
https://stackoverflow.com/questions/47242051
复制相似问题