首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用XACML中的义务跟踪属性的值

如何使用XACML中的义务跟踪属性的值
EN

Stack Overflow用户
提问于 2016-01-27 20:31:38
回答 1查看 182关注 0票数 0

想知道是否有方法加载以前由PIP扩展属性查找器加载的属性值,并将其($myattr1)转换为义务,以便获得明文打印出的消息,主要用于执行调试任务。

下面是我想要添加到我的规则中的XACML义务(用抽象表示法编写):

代码语言:javascript
复制
  <xacml2:Obligations>
    <xacml2:Obligation FulfillOn="Permit" ObligationId="debug1">
      $myattr1 = AttributeId="http://red.com/subject/groupsUserBelong"
      <xacml2:AttributeAssignment AttributeId="debug1" DataType="http://www.w3.org/2001/XMLSchema#string">Attribute found: $myattr1</xacml2:AttributeAssignment>
    </xacml2:Obligation>
  </xacml2:Obligations>

更新代码部分

下面是一个示例,说明如何将文本消息与来自PIP查找的动态数据结合起来,通过ObligationExpressions生成输出:

代码语言:javascript
复制
   <Rule Effect="Deny" RuleId="Deny-Rule1">
      <Target></Target>
      <Condition>
         <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:not">
            <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-is-in">
               <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">myGroup</AttributeValue>
               <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="http://red.com/subject/groupsUserBelong" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
            </Apply>
         </Apply>
      </Condition>
      <ObligationExpressions>
         <ObligationExpression FulfillOn="Deny" ObligationId="groupscheck">
            <AttributeAssignmentExpression AttributeId="urn:oasis:names:tc:xacml:3.0:example:attribute:text">
               <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Rule 1 - The groups validation error</AttributeValue>
            </AttributeAssignmentExpression>
         </ObligationExpression>
         <ObligationExpression ObligationId="debug1" FulfillOn="Deny"> 
            <AttributeAssignmentExpression AttributeId="debug1">
            <AttributeDesignator AttributeId="http://red.com/subject/groupsUserBelong" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/> 
            </AttributeAssignmentExpression> 
         </ObligationExpression> 
      </ObligationExpressions>
   </Rule>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-27 21:44:49

不,这在WSO2 is和XACML2.0中是不可能的。为此,您需要使用XACML3.0。在义务中添加变量的能力(在XACML规范中称为属性赋值)是添加到XACML3.0中的。

公理化政策服务器确实支持这一点。正如您所指出的,这是一个非常好的特性,用于调试目的,但也适用于其他情况。

  • 拒绝用户将资金转移给自己的权利+通知经理的义务。

在本例中,该义务将包含经理的电子邮件。下面是一个使用阿尔法语法的示例。

代码语言:javascript
复制
    policy transferMoney{
        target clause actionId == "transfer"
        apply firstApplicable
        rule denySelfTransfer{
            condition requestor==recipient
            deny
            on deny {
                obligation notifyManager{
                    message = "An employee tried to transfer money to themselves"
                    employee = employeeId
                    email = managerEmail
                }
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35047435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档