﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.smartlegalcontract.cn/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=20260503</id>
	<title>智能法律合约 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://www.smartlegalcontract.cn/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=20260503"/>
	<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/20260503"/>
	<updated>2026-09-27T02:39:03Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=MediaWiki:Sidebar&amp;diff=550</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=MediaWiki:Sidebar&amp;diff=550"/>
		<updated>2026-09-14T15:30:40Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* 导航&lt;br /&gt;
** http://39.106.77.250:8090/index.html|crypto202&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|智能合约&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** SPESC|SPESC&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* 语言&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/%E5%8C%BA%E5%9D%97%E9%93%BE%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E5%BD%A2%E5%BC%8F%E5%8C%96%E8%A1%A8%E8%BE%BE|智能法律合约&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/T/CIE_095-2020|Smart Legal Contract&lt;br /&gt;
** http://39.107.64.13:8080/spescabac/ | SPESC-ABAC 托管合约语言设计&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 应用&lt;br /&gt;
**http://123.56.246.148:8080/ |公益遗嘱链&lt;br /&gt;
**http://smpc.smartlegalcontract.cn/ |计算管理平台&lt;br /&gt;
**https://api.smartlegalcontract.cn/web/index.html |畜牧问答平台&lt;br /&gt;
*样例&lt;br /&gt;
**https://www.smartlegalcontract.cn/mediawiki/index.php/Examples|智能法律合约样例&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=549</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=549"/>
		<updated>2026-09-05T08:55:01Z</updated>

		<summary type="html">&lt;p&gt;20260503：/* 概览 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿﻿&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;bb6a5ee2dfaec6abb09392096a33b2bf618e9c0e&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-09-04T19:16:40.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]&amp;lt;title&amp;gt;CBAC&amp;lt;/title&amp;gt;&amp;lt;base href=&amp;quot;https://www.smartlegalcontract.cn/mediawiki/index.php/&amp;quot; /&amp;gt;[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&amp;lt;!--[if lt IE 9]&amp;gt;&amp;lt;script src=&amp;quot;/mediawiki/load.php?modules=html5shiv&amp;amp;only=scripts&amp;amp;skin=vector&amp;amp;sync=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script&amp;gt;html5.addElements('figure-inline');&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
更新时间：2026.9.5&lt;br /&gt;
&lt;br /&gt;
将语言最简化，去除了将combination逻辑中，使用evalterm和逻辑谓词表达的方法。理由：在没有ifelse的情况下，无法表达其中某种组合逻辑。obligation的选取完全无法脱离if-else完成。&lt;br /&gt;
&lt;br /&gt;
成功转换了27个从oasis官网获取的example&lt;br /&gt;
&lt;br /&gt;
下一步安排：寻找一些更复杂的例子（实战，官网没更多了）（周六）&lt;br /&gt;
&lt;br /&gt;
下一步安排：简单判决测试，完善例子的输入，寻找xacml执行器并进行对比，在确认正确后进行效率测试（周六）&lt;br /&gt;
&lt;br /&gt;
一、基本结构&lt;br /&gt;
&lt;br /&gt;
PolicySet（可选；一整套策略集，此处不转化）&lt;br /&gt;
&lt;br /&gt;
│  ← 策略集组合算法（deny-overrides / permit-overrides / only-one-applicable…）（此处不转化）&lt;br /&gt;
&lt;br /&gt;
└── Policy（一份策略 = 一份 SPESC 合约）&lt;br /&gt;
&lt;br /&gt;
    │  ← 规则组合算法 RuleCombiningAlg（permit/deny-overrides、first-applicable、t-of-n）&lt;br /&gt;
&lt;br /&gt;
    │&lt;br /&gt;
&lt;br /&gt;
    ├── Target（策略级过滤器 = 匹配条款，如 no0）&lt;br /&gt;
&lt;br /&gt;
    │    └── AnyOf（OR） → AllOf（AND） → Match ×n（单条匹配条件）&lt;br /&gt;
&lt;br /&gt;
    │&lt;br /&gt;
&lt;br /&gt;
    ├── Rule ×n（一条规则 = 一个子条款，如 no1_1~no1_4）&lt;br /&gt;
&lt;br /&gt;
    │    ├── Target（规则级过滤器，可选，规则如上）&lt;br /&gt;
&lt;br /&gt;
    │    ├── Condition（= when 前置条件）→ Apply（and/or/not/比较）→ 叶子（值/属性）&lt;br /&gt;
&lt;br /&gt;
    │    ├── Effect（= can → Permit / cannot → Deny）&lt;br /&gt;
&lt;br /&gt;
    │    └──  Obligation（可选义务；SLA 阶梯「允许但限流」的挂点）&lt;br /&gt;
&lt;br /&gt;
    │&lt;br /&gt;
&lt;br /&gt;
    └── Obligation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
二、执行顺序：&lt;br /&gt;
&lt;br /&gt;
（1）Target Term，只做资源级适用性判断，包含when逻辑并调用&lt;br /&gt;
&lt;br /&gt;
（2）Authentic  Term：在运行前临时进行变量赋值逻辑&lt;br /&gt;
&lt;br /&gt;
    ├── when 条件&lt;br /&gt;
&lt;br /&gt;
    └── while 赋值&lt;br /&gt;
&lt;br /&gt;
（3）rule_term&lt;br /&gt;
&lt;br /&gt;
    ├── when：rule级target&lt;br /&gt;
&lt;br /&gt;
    ├── where：condition&lt;br /&gt;
&lt;br /&gt;
    └── while：rule级obligation&lt;br /&gt;
&lt;br /&gt;
(4)   obligation_term：policy级的义务，在最后执行&lt;br /&gt;
&lt;br /&gt;
    └── 使用while调用platform的函数&lt;br /&gt;
=例1：sample6=&lt;br /&gt;
来源：https://is.docs.wso2.com/en/6.0.0/references/extend/access-control/xacml3-sample6/&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot; PolicyId=&amp;quot;testOr&amp;quot; &lt;br /&gt;
RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot; Version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Description&amp;gt;Test Or&amp;lt;/Description&amp;gt;&lt;br /&gt;
   &amp;lt;Target&amp;gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-group-emps-rule&amp;quot;&amp;gt;  &lt;br /&gt;
      &amp;lt;Target&amp;gt;&lt;br /&gt;
         &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
               &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;read&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:action:action-id&amp;quot; &lt;br /&gt;
                  Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:action&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
         &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
      &amp;lt;/Target&amp;gt;&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;group&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:group&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin_emps&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-user-rule&amp;quot;&amp;gt; &lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:resource:resource-id&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Deny&amp;quot; RuleId=&amp;quot;deny-rule&amp;quot;&amp;gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy (组合: first-applicable) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空&lt;br /&gt;
&lt;br /&gt;
├── Rule1 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: action-id = read&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: group 属性 (类别 group)与 {admin_emps, admin} 有交集&lt;br /&gt;
&lt;br /&gt;
├── Rule2 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: 无&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: resource-id 与 {&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2}&amp;lt;/nowiki&amp;gt; 有交集&lt;br /&gt;
&lt;br /&gt;
└── Rule3 (Deny) 兜底&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;subjectId&amp;quot;: &amp;quot;anyone&amp;quot;,&lt;br /&gt;
     &amp;quot;groups&amp;quot;: []&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;resourceId&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
contract Sample6_RoleAccess {&lt;br /&gt;
&lt;br /&gt;
    party Sub {&lt;br /&gt;
&lt;br /&gt;
        subjectId: String&lt;br /&gt;
&lt;br /&gt;
        groups: set String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition fn {&lt;br /&gt;
&lt;br /&gt;
        regexpMatch(value: String, pattern: String): Boolean&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    combineAlgorithm = first-applicable&lt;br /&gt;
&lt;br /&gt;
    ## Type(target)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
    term primaryGroupEmpsRule: Sub can read Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Act, actionId) = &amp;quot;read&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where ATTR(Request::Sub, groups) overlaps {&amp;quot;admin_emps&amp;quot;, &amp;quot;admin&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    term primaryUserRule: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        where ATTR(Request::Obj, resourceId) belong {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    term denyRule: Sub cannot access Resource&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
=例2：OASIS 3-4=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/ipc/v1.0/os/xacml-3.0-ipc-v1.0-os-en.html#_Toc323564502&lt;br /&gt;
&lt;br /&gt;
语法：双target，有obligation&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
    PolicyId=&amp;quot;copyright-approve&amp;quot;&lt;br /&gt;
    RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:deny-overrides&amp;quot;&lt;br /&gt;
    Version=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;Example copyright material policy&amp;lt;/Description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 策略级 Target：资源必须是 copyright=true 且协议类型为 copyright-grant --&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
        &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:boolean-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot;&amp;gt;true&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:copyright&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
        &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 规则级 Target：资源 ip-owner = Acme --&amp;gt;&lt;br /&gt;
    &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;Right to use copyrighted material match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Description&amp;gt;Allow if subject's association to the designated custodian of the copyright agrees&amp;lt;/Description&amp;gt;&lt;br /&gt;
        &amp;lt;Target&amp;gt;&lt;br /&gt;
            &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
                &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                    &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-owner&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
            &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Condition：以下 5 个条件全部成立才 Permit --&amp;gt;&lt;br /&gt;
        &amp;lt;Condition&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:and&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ① 请求方组织 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:organization&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ② 主体协议号 = 资源协议号 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ③ 资源被许可方 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-licensee&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ④ 当前时间 &amp;gt;= 生效时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:effective-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ⑤ 当前时间 &amp;lt; 过期时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:expiration-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
        &amp;lt;/Condition&amp;gt;&lt;br /&gt;
    &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Permit 时要求 PEP：加标记 + 加密 --&amp;gt;&lt;br /&gt;
    &amp;lt;ObligationExpressions&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:marking&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeAssignmentExpression AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:attribute:text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Copyright 2011 Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/AttributeAssignmentExpression&amp;gt;&lt;br /&gt;
        &amp;lt;/ObligationExpression&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:encrypt&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ObligationExpressions&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy copyright-approve (deny-overrides) &lt;br /&gt;
&lt;br /&gt;
├── Target: resource:copyright = true&lt;br /&gt;
&lt;br /&gt;
│           AND resource:agreement-type = &amp;lt;nowiki&amp;gt;urn:...:copyright-grant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
└── Rule &amp;quot;Right to use copyrighted material match&amp;quot; (Permit)&lt;br /&gt;
&lt;br /&gt;
|   ├── Target: resource:ip-owner = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|   └── Condition (AND):&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:organization = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:agreement-id = resource:agreement-id&lt;br /&gt;
&lt;br /&gt;
|       ├── resource:ip-licensee = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── current-dateTime &amp;gt;= resource:effective-date&lt;br /&gt;
&lt;br /&gt;
|       └── current-dateTime 小于 resource:expiration-date&lt;br /&gt;
&lt;br /&gt;
└── Obligations (Permit):&lt;br /&gt;
&lt;br /&gt;
    ├── marking(text = &amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    └── encrypt&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json： ==&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;organization&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;copyright&amp;quot;: true,&lt;br /&gt;
     &amp;quot;ipOwner&amp;quot;: &amp;quot;Acme&amp;quot;,&lt;br /&gt;
     &amp;quot;ipLicensee&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementType&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;,&lt;br /&gt;
     &amp;quot;effectiveDate&amp;quot;: &amp;quot;2020-01-01T00:00:00&amp;quot;,&lt;br /&gt;
     &amp;quot;expirationDate&amp;quot;: &amp;quot;2030-01-01T00:00:00&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;use&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;env&amp;quot;: {&lt;br /&gt;
     &amp;quot;currentDateTime&amp;quot;: &amp;quot;2024-06-01T12:00:00&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
&lt;br /&gt;
contract CopyrightApprove {&lt;br /&gt;
&lt;br /&gt;
    party Sub {&lt;br /&gt;
&lt;br /&gt;
        organization: String&lt;br /&gt;
&lt;br /&gt;
        agreementId: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        marking(trigger: OrderState, text: String)&lt;br /&gt;
&lt;br /&gt;
        encrypt(trigger: OrderState)&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        copyright: Boolean&lt;br /&gt;
&lt;br /&gt;
        agreementType: String&lt;br /&gt;
&lt;br /&gt;
        ipOwner: String&lt;br /&gt;
&lt;br /&gt;
        ipLicensee: String&lt;br /&gt;
&lt;br /&gt;
        agreementId: String&lt;br /&gt;
&lt;br /&gt;
        effectiveDate: dateTime&lt;br /&gt;
&lt;br /&gt;
        expirationDate: dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition fn {&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: String): String&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: dateTime): dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    enum OrderState {&lt;br /&gt;
&lt;br /&gt;
        Permit, Deny&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    combineAlgorithm = deny-overrides&lt;br /&gt;
&lt;br /&gt;
    ## Type(target)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, copyright) = true&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, agreementType) = &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    term rightsToUse: Sub can use Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, ipOwner) = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where ATTR(Request::Sub, organization) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and oneAndOnly(ATTR(Request::Sub, agreementId)) =&lt;br /&gt;
&lt;br /&gt;
              oneAndOnly(ATTR(Request::Obj, agreementId))&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, ipLicensee) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and now &amp;gt;= oneAndOnly(ATTR(Request::Obj, effectiveDate))&lt;br /&gt;
&lt;br /&gt;
          and now &amp;lt; oneAndOnly(ATTR(Request::Obj, expirationDate))&lt;br /&gt;
&lt;br /&gt;
    ## Type(obligation)&lt;br /&gt;
&lt;br /&gt;
    term policy_obligation: Platform must fulfillObligations(Request)&lt;br /&gt;
&lt;br /&gt;
        while marking(Permit, &amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
          and encrypt(Permit)&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=548</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=548"/>
		<updated>2026-09-04T19:16:40Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿﻿&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;1b89805c99cd8717dc27f4973d17a86e2f59ddb3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-09-04T13:34:42.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]&amp;lt;title&amp;gt;CBAC&amp;lt;/title&amp;gt;&amp;lt;base href=&amp;quot;https://www.smartlegalcontract.cn/mediawiki/index.php/&amp;quot; /&amp;gt;[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&amp;lt;!--[if lt IE 9]&amp;gt;&amp;lt;script src=&amp;quot;/mediawiki/load.php?modules=html5shiv&amp;amp;only=scripts&amp;amp;skin=vector&amp;amp;sync=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script&amp;gt;html5.addElements('figure-inline');&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
﻿&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;6484283d6d9200fc6e16e86fda94ddc6c13a9b49&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-09-03T01:08:50.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC][/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
更新时间：2026.9.4&lt;br /&gt;
&lt;br /&gt;
将语言最简化，去除了将combination逻辑中，使用evalterm和逻辑谓词表达的方法。理由：在没有ifelse的情况下，无法表达其中某种组合逻辑。obligation的选取完全无法脱离if-else完成。&lt;br /&gt;
&lt;br /&gt;
成功转换了100+个从oasis官网获取的example&lt;br /&gt;
&lt;br /&gt;
下一步安排：在方磊制作的网页上上传10个精选版（周五夜里）&lt;br /&gt;
&lt;br /&gt;
下一步安排：寻找一些更复杂的例子（周五夜里）&lt;br /&gt;
&lt;br /&gt;
下一步安排：精进栈式判决测试，完善例子的输入，寻找xacml执行器并进行对比，在确认正确后进行效率测试（周六）&lt;br /&gt;
&lt;br /&gt;
一、基本结构&lt;br /&gt;
&lt;br /&gt;
PolicySet（可选；一整套策略集，此处不转化）&lt;br /&gt;
&lt;br /&gt;
│  ← 策略集组合算法（deny-overrides / permit-overrides / only-one-applicable…）（此处不转化）&lt;br /&gt;
&lt;br /&gt;
└── Policy（一份策略 = 一份 SPESC 合约）&lt;br /&gt;
&lt;br /&gt;
    │  ← 规则组合算法 RuleCombiningAlg（permit/deny-overrides、first-applicable、t-of-n）&lt;br /&gt;
&lt;br /&gt;
    │&lt;br /&gt;
&lt;br /&gt;
    ├── Target（策略级过滤器 = 匹配条款，如 no0）&lt;br /&gt;
&lt;br /&gt;
    │    └── AnyOf（OR） → AllOf（AND） → Match ×n（单条匹配条件）&lt;br /&gt;
&lt;br /&gt;
    │&lt;br /&gt;
&lt;br /&gt;
    ├── Rule ×n（一条规则 = 一个子条款，如 no1_1~no1_4）&lt;br /&gt;
&lt;br /&gt;
    │    ├── Target（规则级过滤器，可选，规则如上）&lt;br /&gt;
&lt;br /&gt;
    │    ├── Condition（= when 前置条件）→ Apply（and/or/not/比较）→ 叶子（值/属性）&lt;br /&gt;
&lt;br /&gt;
    │    ├── Effect（= can → Permit / cannot → Deny）&lt;br /&gt;
&lt;br /&gt;
    │    └──  Obligation（可选义务；SLA 阶梯「允许但限流」的挂点）&lt;br /&gt;
&lt;br /&gt;
    │&lt;br /&gt;
&lt;br /&gt;
    └── Obligation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
二、执行顺序：&lt;br /&gt;
&lt;br /&gt;
（1）Target Term，只做资源级适用性判断，包含when逻辑并调用&lt;br /&gt;
&lt;br /&gt;
（2）Authentic  Term：在运行前临时进行变量赋值逻辑&lt;br /&gt;
&lt;br /&gt;
    ├── when 条件&lt;br /&gt;
&lt;br /&gt;
    └── while 赋值&lt;br /&gt;
&lt;br /&gt;
（3）rule_term&lt;br /&gt;
&lt;br /&gt;
    ├── when：rule级target&lt;br /&gt;
&lt;br /&gt;
    ├── where：condition&lt;br /&gt;
&lt;br /&gt;
    └── while：rule级obligation&lt;br /&gt;
&lt;br /&gt;
(4)   obligation_term：policy级的义务，在最后执行&lt;br /&gt;
&lt;br /&gt;
    └── 使用while调用platform的函数&lt;br /&gt;
=例1：sample6=&lt;br /&gt;
来源：https://is.docs.wso2.com/en/6.0.0/references/extend/access-control/xacml3-sample6/&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot; PolicyId=&amp;quot;testOr&amp;quot; &lt;br /&gt;
RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot; Version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Description&amp;gt;Test Or&amp;lt;/Description&amp;gt;&lt;br /&gt;
   &amp;lt;Target&amp;gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-group-emps-rule&amp;quot;&amp;gt;  &lt;br /&gt;
      &amp;lt;Target&amp;gt;&lt;br /&gt;
         &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
               &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;read&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:action:action-id&amp;quot; &lt;br /&gt;
                  Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:action&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
         &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
      &amp;lt;/Target&amp;gt;&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;group&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:group&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin_emps&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-user-rule&amp;quot;&amp;gt; &lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:resource:resource-id&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Deny&amp;quot; RuleId=&amp;quot;deny-rule&amp;quot;&amp;gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy (组合: first-applicable) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空&lt;br /&gt;
&lt;br /&gt;
├── Rule1 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: action-id = read&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: group 属性 (类别 group)与 {admin_emps, admin} 有交集&lt;br /&gt;
&lt;br /&gt;
├── Rule2 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: 无&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: resource-id 与 {&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2}&amp;lt;/nowiki&amp;gt; 有交集&lt;br /&gt;
&lt;br /&gt;
└── Rule3 (Deny) 兜底&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;subjectId&amp;quot;: &amp;quot;anyone&amp;quot;,&lt;br /&gt;
     &amp;quot;groups&amp;quot;: []&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;resourceId&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
contract Sample6_RoleAccess {&lt;br /&gt;
&lt;br /&gt;
    party Sub {&lt;br /&gt;
&lt;br /&gt;
        subjectId: String&lt;br /&gt;
&lt;br /&gt;
        groups: set String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition fn {&lt;br /&gt;
&lt;br /&gt;
        regexpMatch(value: String, pattern: String): Boolean&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    combineAlgorithm = first-applicable&lt;br /&gt;
&lt;br /&gt;
    ## Type(target)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
    term primaryGroupEmpsRule: Sub can read Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Act, actionId) = &amp;quot;read&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where ATTR(Request::Sub, groups) overlaps {&amp;quot;admin_emps&amp;quot;, &amp;quot;admin&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    term primaryUserRule: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        where ATTR(Request::Obj, resourceId) belong {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    term denyRule: Sub cannot access Resource&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
=例2：OASIS 3-4=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/ipc/v1.0/os/xacml-3.0-ipc-v1.0-os-en.html#_Toc323564502&lt;br /&gt;
&lt;br /&gt;
语法：双target，有obligation&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
    PolicyId=&amp;quot;copyright-approve&amp;quot;&lt;br /&gt;
    RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:deny-overrides&amp;quot;&lt;br /&gt;
    Version=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;Example copyright material policy&amp;lt;/Description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 策略级 Target：资源必须是 copyright=true 且协议类型为 copyright-grant --&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
        &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:boolean-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot;&amp;gt;true&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:copyright&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
        &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 规则级 Target：资源 ip-owner = Acme --&amp;gt;&lt;br /&gt;
    &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;Right to use copyrighted material match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Description&amp;gt;Allow if subject's association to the designated custodian of the copyright agrees&amp;lt;/Description&amp;gt;&lt;br /&gt;
        &amp;lt;Target&amp;gt;&lt;br /&gt;
            &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
                &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                    &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-owner&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
            &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Condition：以下 5 个条件全部成立才 Permit --&amp;gt;&lt;br /&gt;
        &amp;lt;Condition&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:and&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ① 请求方组织 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:organization&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ② 主体协议号 = 资源协议号 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ③ 资源被许可方 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-licensee&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ④ 当前时间 &amp;gt;= 生效时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:effective-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ⑤ 当前时间 &amp;lt; 过期时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:expiration-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
        &amp;lt;/Condition&amp;gt;&lt;br /&gt;
    &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Permit 时要求 PEP：加标记 + 加密 --&amp;gt;&lt;br /&gt;
    &amp;lt;ObligationExpressions&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:marking&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeAssignmentExpression AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:attribute:text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Copyright 2011 Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/AttributeAssignmentExpression&amp;gt;&lt;br /&gt;
        &amp;lt;/ObligationExpression&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:encrypt&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ObligationExpressions&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy copyright-approve (deny-overrides) &lt;br /&gt;
&lt;br /&gt;
├── Target: resource:copyright = true&lt;br /&gt;
&lt;br /&gt;
│           AND resource:agreement-type = &amp;lt;nowiki&amp;gt;urn:...:copyright-grant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
└── Rule &amp;quot;Right to use copyrighted material match&amp;quot; (Permit)&lt;br /&gt;
&lt;br /&gt;
|   ├── Target: resource:ip-owner = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|   └── Condition (AND):&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:organization = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:agreement-id = resource:agreement-id&lt;br /&gt;
&lt;br /&gt;
|       ├── resource:ip-licensee = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── current-dateTime &amp;gt;= resource:effective-date&lt;br /&gt;
&lt;br /&gt;
|       └── current-dateTime 小于 resource:expiration-date&lt;br /&gt;
&lt;br /&gt;
└── Obligations (Permit):&lt;br /&gt;
&lt;br /&gt;
    ├── marking(text = &amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    └── encrypt&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json： ==&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;organization&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;copyright&amp;quot;: true,&lt;br /&gt;
     &amp;quot;ipOwner&amp;quot;: &amp;quot;Acme&amp;quot;,&lt;br /&gt;
     &amp;quot;ipLicensee&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementType&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;,&lt;br /&gt;
     &amp;quot;effectiveDate&amp;quot;: &amp;quot;2020-01-01T00:00:00&amp;quot;,&lt;br /&gt;
     &amp;quot;expirationDate&amp;quot;: &amp;quot;2030-01-01T00:00:00&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;use&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;env&amp;quot;: {&lt;br /&gt;
     &amp;quot;currentDateTime&amp;quot;: &amp;quot;2024-06-01T12:00:00&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
&lt;br /&gt;
contract CopyrightApprove {&lt;br /&gt;
&lt;br /&gt;
    party Sub {&lt;br /&gt;
&lt;br /&gt;
        organization: String&lt;br /&gt;
&lt;br /&gt;
        agreementId: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        marking(trigger: OrderState, text: String)&lt;br /&gt;
&lt;br /&gt;
        encrypt(trigger: OrderState)&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        copyright: Boolean&lt;br /&gt;
&lt;br /&gt;
        agreementType: String&lt;br /&gt;
&lt;br /&gt;
        ipOwner: String&lt;br /&gt;
&lt;br /&gt;
        ipLicensee: String&lt;br /&gt;
&lt;br /&gt;
        agreementId: String&lt;br /&gt;
&lt;br /&gt;
        effectiveDate: dateTime&lt;br /&gt;
&lt;br /&gt;
        expirationDate: dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition fn {&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: String): String&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: dateTime): dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    enum OrderState {&lt;br /&gt;
&lt;br /&gt;
        Permit, Deny&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    combineAlgorithm = deny-overrides&lt;br /&gt;
&lt;br /&gt;
    ## Type(target)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, copyright) = true&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, agreementType) = &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    term rightsToUse: Sub can use Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, ipOwner) = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where ATTR(Request::Sub, organization) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and oneAndOnly(ATTR(Request::Sub, agreementId)) =&lt;br /&gt;
&lt;br /&gt;
              oneAndOnly(ATTR(Request::Obj, agreementId))&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, ipLicensee) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and now &amp;gt;= oneAndOnly(ATTR(Request::Obj, effectiveDate))&lt;br /&gt;
&lt;br /&gt;
          and now &amp;lt; oneAndOnly(ATTR(Request::Obj, expirationDate))&lt;br /&gt;
&lt;br /&gt;
    ## Type(obligation)&lt;br /&gt;
&lt;br /&gt;
    term policy_obligation: Platform must fulfillObligations(Request)&lt;br /&gt;
&lt;br /&gt;
        while marking(Permit, &amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
          and encrypt(Permit)&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=547</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=547"/>
		<updated>2026-09-04T13:34:42Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;6484283d6d9200fc6e16e86fda94ddc6c13a9b49&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-09-03T01:08:50.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC][/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 概览 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
更新时间：2026.9.4&lt;br /&gt;
&lt;br /&gt;
将语言最简化，去除了将combination逻辑中，使用evalterm和逻辑谓词表达的方法。理由：在没有ifelse的情况下，无法表达其中某种组合逻辑。obligation的选取完全无法脱离if-else完成。&lt;br /&gt;
&lt;br /&gt;
成功转换了100+个从oasis官网获取的example&lt;br /&gt;
&lt;br /&gt;
下一步安排：在方磊制作的网页上上传10个精选版（周五夜里）&lt;br /&gt;
&lt;br /&gt;
下一步安排：寻找一些更复杂的例子（周五夜里）&lt;br /&gt;
&lt;br /&gt;
下一步安排：精进栈式判决测试，完善例子的输入，寻找xacml执行器并进行对比，在确认正确后进行效率测试（周六）&lt;br /&gt;
&lt;br /&gt;
一、基本结构&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
二、执行顺序：&lt;br /&gt;
&lt;br /&gt;
（1）Target Term，只做资源级适用性判断，包含when逻辑并调用&lt;br /&gt;
&lt;br /&gt;
（2）Authentic  Term：在运行前临时进行变量赋值逻辑&lt;br /&gt;
&lt;br /&gt;
when 条件&lt;br /&gt;
&lt;br /&gt;
while 赋值&lt;br /&gt;
&lt;br /&gt;
（3）rule_term&lt;br /&gt;
&lt;br /&gt;
when：rule级target&lt;br /&gt;
&lt;br /&gt;
where：condition&lt;br /&gt;
&lt;br /&gt;
while：rule级obligation&lt;br /&gt;
&lt;br /&gt;
(4)   obligation_term：policy级的义务，在最后执行&lt;br /&gt;
&lt;br /&gt;
使用while调用platform的函数&lt;br /&gt;
=例1：sample6=&lt;br /&gt;
来源：https://is.docs.wso2.com/en/6.0.0/references/extend/access-control/xacml3-sample6/&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot; PolicyId=&amp;quot;testOr&amp;quot; &lt;br /&gt;
RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot; Version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Description&amp;gt;Test Or&amp;lt;/Description&amp;gt;&lt;br /&gt;
   &amp;lt;Target&amp;gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-group-emps-rule&amp;quot;&amp;gt;  &lt;br /&gt;
      &amp;lt;Target&amp;gt;&lt;br /&gt;
         &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
               &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;read&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:action:action-id&amp;quot; &lt;br /&gt;
                  Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:action&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
         &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
      &amp;lt;/Target&amp;gt;&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;group&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:group&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin_emps&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-user-rule&amp;quot;&amp;gt; &lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:resource:resource-id&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Deny&amp;quot; RuleId=&amp;quot;deny-rule&amp;quot;&amp;gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy (组合: first-applicable) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空&lt;br /&gt;
&lt;br /&gt;
├── Rule1 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: action-id = read&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: group 属性 (类别 group)与 {admin_emps, admin} 有交集&lt;br /&gt;
&lt;br /&gt;
├── Rule2 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: 无&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: resource-id 与 {&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2}&amp;lt;/nowiki&amp;gt; 有交集&lt;br /&gt;
&lt;br /&gt;
└── Rule3 (Deny) 兜底&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;subjectId&amp;quot;: &amp;quot;anyone&amp;quot;,&lt;br /&gt;
     &amp;quot;groups&amp;quot;: []&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;resourceId&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
contract Sample6_RoleAccess {&lt;br /&gt;
&lt;br /&gt;
    party Sub {&lt;br /&gt;
&lt;br /&gt;
        subjectId: String&lt;br /&gt;
&lt;br /&gt;
        groups: set String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition fn {&lt;br /&gt;
&lt;br /&gt;
        regexpMatch(value: String, pattern: String): Boolean&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    combineAlgorithm = first-applicable&lt;br /&gt;
&lt;br /&gt;
    ## Type(target)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
    term primaryGroupEmpsRule: Sub can read Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Act, actionId) = &amp;quot;read&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where ATTR(Request::Sub, groups) overlaps {&amp;quot;admin_emps&amp;quot;, &amp;quot;admin&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    term primaryUserRule: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        where ATTR(Request::Obj, resourceId) belong {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    term denyRule: Sub cannot access Resource&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
=例2：OASIS 3-4=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/ipc/v1.0/os/xacml-3.0-ipc-v1.0-os-en.html#_Toc323564502&lt;br /&gt;
&lt;br /&gt;
语法：双target，有obligation&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
    PolicyId=&amp;quot;copyright-approve&amp;quot;&lt;br /&gt;
    RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:deny-overrides&amp;quot;&lt;br /&gt;
    Version=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;Example copyright material policy&amp;lt;/Description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 策略级 Target：资源必须是 copyright=true 且协议类型为 copyright-grant --&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
        &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:boolean-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot;&amp;gt;true&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:copyright&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
        &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 规则级 Target：资源 ip-owner = Acme --&amp;gt;&lt;br /&gt;
    &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;Right to use copyrighted material match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Description&amp;gt;Allow if subject's association to the designated custodian of the copyright agrees&amp;lt;/Description&amp;gt;&lt;br /&gt;
        &amp;lt;Target&amp;gt;&lt;br /&gt;
            &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
                &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                    &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-owner&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
            &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Condition：以下 5 个条件全部成立才 Permit --&amp;gt;&lt;br /&gt;
        &amp;lt;Condition&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:and&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ① 请求方组织 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:organization&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ② 主体协议号 = 资源协议号 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ③ 资源被许可方 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-licensee&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ④ 当前时间 &amp;gt;= 生效时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:effective-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ⑤ 当前时间 &amp;lt; 过期时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:expiration-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
        &amp;lt;/Condition&amp;gt;&lt;br /&gt;
    &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Permit 时要求 PEP：加标记 + 加密 --&amp;gt;&lt;br /&gt;
    &amp;lt;ObligationExpressions&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:marking&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeAssignmentExpression AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:attribute:text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Copyright 2011 Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/AttributeAssignmentExpression&amp;gt;&lt;br /&gt;
        &amp;lt;/ObligationExpression&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:encrypt&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ObligationExpressions&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy copyright-approve (deny-overrides) &lt;br /&gt;
&lt;br /&gt;
├── Target: resource:copyright = true&lt;br /&gt;
&lt;br /&gt;
│           AND resource:agreement-type = &amp;lt;nowiki&amp;gt;urn:...:copyright-grant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
└── Rule &amp;quot;Right to use copyrighted material match&amp;quot; (Permit)&lt;br /&gt;
&lt;br /&gt;
|   ├── Target: resource:ip-owner = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|   └── Condition (AND):&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:organization = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:agreement-id = resource:agreement-id&lt;br /&gt;
&lt;br /&gt;
|       ├── resource:ip-licensee = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── current-dateTime &amp;gt;= resource:effective-date&lt;br /&gt;
&lt;br /&gt;
|       └── current-dateTime 小于 resource:expiration-date&lt;br /&gt;
&lt;br /&gt;
└── Obligations (Permit):&lt;br /&gt;
&lt;br /&gt;
    ├── marking(text = &amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    └── encrypt&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json： ==&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;organization&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;copyright&amp;quot;: true,&lt;br /&gt;
     &amp;quot;ipOwner&amp;quot;: &amp;quot;Acme&amp;quot;,&lt;br /&gt;
     &amp;quot;ipLicensee&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementType&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;,&lt;br /&gt;
     &amp;quot;effectiveDate&amp;quot;: &amp;quot;2020-01-01T00:00:00&amp;quot;,&lt;br /&gt;
     &amp;quot;expirationDate&amp;quot;: &amp;quot;2030-01-01T00:00:00&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;use&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;env&amp;quot;: {&lt;br /&gt;
     &amp;quot;currentDateTime&amp;quot;: &amp;quot;2024-06-01T12:00:00&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
&lt;br /&gt;
contract CopyrightApprove {&lt;br /&gt;
&lt;br /&gt;
    party Sub {&lt;br /&gt;
&lt;br /&gt;
        organization: String&lt;br /&gt;
&lt;br /&gt;
        agreementId: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        marking(trigger: OrderState, text: String)&lt;br /&gt;
&lt;br /&gt;
        encrypt(trigger: OrderState)&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        copyright: Boolean&lt;br /&gt;
&lt;br /&gt;
        agreementType: String&lt;br /&gt;
&lt;br /&gt;
        ipOwner: String&lt;br /&gt;
&lt;br /&gt;
        ipLicensee: String&lt;br /&gt;
&lt;br /&gt;
        agreementId: String&lt;br /&gt;
&lt;br /&gt;
        effectiveDate: dateTime&lt;br /&gt;
&lt;br /&gt;
        expirationDate: dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition fn {&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: String): String&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: dateTime): dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    enum OrderState {&lt;br /&gt;
&lt;br /&gt;
        Permit, Deny&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    combineAlgorithm = deny-overrides&lt;br /&gt;
&lt;br /&gt;
    ## Type(target)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, copyright) = true&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, agreementType) = &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    term rightsToUse: Sub can use Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, ipOwner) = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where ATTR(Request::Sub, organization) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and oneAndOnly(ATTR(Request::Sub, agreementId)) =&lt;br /&gt;
&lt;br /&gt;
              oneAndOnly(ATTR(Request::Obj, agreementId))&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, ipLicensee) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and now &amp;gt;= oneAndOnly(ATTR(Request::Obj, effectiveDate))&lt;br /&gt;
&lt;br /&gt;
          and now &amp;lt; oneAndOnly(ATTR(Request::Obj, expirationDate))&lt;br /&gt;
&lt;br /&gt;
    ## Type(obligation)&lt;br /&gt;
&lt;br /&gt;
    term policy_obligation: Platform must fulfillObligations(Request)&lt;br /&gt;
&lt;br /&gt;
        while marking(Permit, &amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
          and encrypt(Permit)&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=MediaWiki:Sidebar&amp;diff=546</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=MediaWiki:Sidebar&amp;diff=546"/>
		<updated>2026-09-04T09:01:30Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* 导航&lt;br /&gt;
** http://39.106.77.250:8090/index.html|crypto202&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|智能合约&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** SPESC|SPESC&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* 语言&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/%E5%8C%BA%E5%9D%97%E9%93%BE%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E5%BD%A2%E5%BC%8F%E5%8C%96%E8%A1%A8%E8%BE%BE|智能法律合约&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/T/CIE_095-2020|Smart Legal Contract&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC  | 托管合约语言设计&lt;br /&gt;
** http://39.107.64.13:8080/spescabac/ | SPESC-ABAC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 应用&lt;br /&gt;
**http://123.56.246.148:8080/ |公益遗嘱链&lt;br /&gt;
**http://smpc.smartlegalcontract.cn/ |计算管理平台&lt;br /&gt;
**https://api.smartlegalcontract.cn/web/index.html |畜牧问答平台&lt;br /&gt;
*样例&lt;br /&gt;
**https://www.smartlegalcontract.cn/mediawiki/index.php/Examples|智能法律合约样例&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=545</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=545"/>
		<updated>2026-09-03T01:08:50Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿﻿&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;47b34894dfcc793815ae7ed1a7708a06e76c11c8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-09-03T01:05:36.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]&amp;lt;title&amp;gt;CBAC&amp;lt;/title&amp;gt;&amp;lt;base href=&amp;quot;https://www.smartlegalcontract.cn/mediawiki/index.php/&amp;quot; /&amp;gt;[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&amp;lt;!--[if lt IE 9]&amp;gt;&amp;lt;script src=&amp;quot;/mediawiki/load.php?modules=html5shiv&amp;amp;only=scripts&amp;amp;skin=vector&amp;amp;sync=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script&amp;gt;html5.addElements('figure-inline');&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
﻿&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;c14026e9edf9ff3dd34d05da43c296c7fa910e7e&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-09-03T00:50:26.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC][/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
meta&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;c14026e9edf9ff3dd34d05da43c296c7fa910e7e&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-09-03T00:50:26.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC] pro[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]perty=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;d27a609efb4570c5f98236e815818dcbb1902481&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T23:12:55.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]总体执行[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;= 总体顺序 =&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
target term&lt;br /&gt;
&lt;br /&gt;
                │ 只做资源级适用性判断，不引用具体 comb&lt;br /&gt;
&lt;br /&gt;
                ▼  （编译器自动按 Request::Act.actionId 查找对应 comb；  （无 comb 则找同动作 rule_target））&lt;br /&gt;
&lt;br /&gt;
comb term（组合入口，针对一类动作）&lt;br /&gt;
&lt;br /&gt;
               │ 在 when 中 evalTerm(rule_target, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
               ▼&lt;br /&gt;
&lt;br /&gt;
rule_target term（动作、rule级obligation、rule级target、伴随、后置）&lt;br /&gt;
&lt;br /&gt;
               │ 在 when 中 evalTerm(rule_condition, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
             ▼&lt;br /&gt;
&lt;br /&gt;
rule_condition term（condition和返回）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=例1：sample6=&lt;br /&gt;
来源：https://is.docs.wso2.com/en/6.0.0/references/extend/access-control/xacml3-sample6/&lt;br /&gt;
&lt;br /&gt;
说明：多rule合并&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot; PolicyId=&amp;quot;testOr&amp;quot; &lt;br /&gt;
RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot; Version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Description&amp;gt;Test Or&amp;lt;/Description&amp;gt;&lt;br /&gt;
   &amp;lt;Target&amp;gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-group-emps-rule&amp;quot;&amp;gt;  &lt;br /&gt;
      &amp;lt;Target&amp;gt;&lt;br /&gt;
         &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
               &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;read&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:action:action-id&amp;quot; &lt;br /&gt;
                  Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:action&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
         &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
      &amp;lt;/Target&amp;gt;&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;group&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:group&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin_emps&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-user-rule&amp;quot;&amp;gt; &lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:resource:resource-id&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Deny&amp;quot; RuleId=&amp;quot;deny-rule&amp;quot;&amp;gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy (组合: first-applicable) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空&lt;br /&gt;
&lt;br /&gt;
├── Rule1 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: action-id = read&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: group 属性 (类别 group)与 {admin_emps, admin} 有交集&lt;br /&gt;
&lt;br /&gt;
├── Rule2 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: 无&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: resource-id 与 {&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2}&amp;lt;/nowiki&amp;gt; 有交集&lt;br /&gt;
&lt;br /&gt;
└── Rule3 (Deny) 兜底&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;subjectId&amp;quot;: &amp;quot;anyone&amp;quot;,&lt;br /&gt;
     &amp;quot;groups&amp;quot;: []&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;resourceId&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
contract Sample6_RoleAccess {&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
        targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ## Type(match)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when true&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
    ## Type(comb)&lt;br /&gt;
&lt;br /&gt;
    term policy_comb: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when some of(evalTerm(rule_target_1, Request),&lt;br /&gt;
&lt;br /&gt;
                     evalTerm(rule_target_2, Request)) = Permit&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
    term rule_target_1: Sub can read Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Act, actionId) = &amp;quot;read&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and &amp;quot;admin_emps&amp;quot;  in  ATTR(Request::Sub, groups)&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
    term rule_target_2: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when when ATTR(Request::Obj, resourceId) in {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
=例2：OASIS 3-4=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/ipc/v1.0/os/xacml-3.0-ipc-v1.0-os-en.html#_Toc323564502&lt;br /&gt;
&lt;br /&gt;
语法：双target，有obligation&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
    PolicyId=&amp;quot;copyright-approve&amp;quot;&lt;br /&gt;
    RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:deny-overrides&amp;quot;&lt;br /&gt;
    Version=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;Example copyright material policy&amp;lt;/Description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 策略级 Target：资源必须是 copyright=true 且协议类型为 copyright-grant --&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
        &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:boolean-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot;&amp;gt;true&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:copyright&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
        &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 规则级 Target：资源 ip-owner = Acme --&amp;gt;&lt;br /&gt;
    &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;Right to use copyrighted material match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Description&amp;gt;Allow if subject's association to the designated custodian of the copyright agrees&amp;lt;/Description&amp;gt;&lt;br /&gt;
        &amp;lt;Target&amp;gt;&lt;br /&gt;
            &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
                &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                    &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-owner&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
            &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Condition：以下 5 个条件全部成立才 Permit --&amp;gt;&lt;br /&gt;
        &amp;lt;Condition&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:and&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ① 请求方组织 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:organization&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ② 主体协议号 = 资源协议号 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ③ 资源被许可方 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-licensee&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ④ 当前时间 &amp;gt;= 生效时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:effective-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ⑤ 当前时间 &amp;lt; 过期时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:expiration-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
        &amp;lt;/Condition&amp;gt;&lt;br /&gt;
    &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Permit 时要求 PEP：加标记 + 加密 --&amp;gt;&lt;br /&gt;
    &amp;lt;ObligationExpressions&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:marking&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeAssignmentExpression AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:attribute:text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Copyright 2011 Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/AttributeAssignmentExpression&amp;gt;&lt;br /&gt;
        &amp;lt;/ObligationExpression&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:encrypt&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ObligationExpressions&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy copyright-approve (deny-overrides) &lt;br /&gt;
&lt;br /&gt;
├── Target: resource:copyright = true&lt;br /&gt;
&lt;br /&gt;
│           AND resource:agreement-type = &amp;lt;nowiki&amp;gt;urn:...:copyright-grant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
└── Rule &amp;quot;Right to use copyrighted material match&amp;quot; (Permit)&lt;br /&gt;
&lt;br /&gt;
|   ├── Target: resource:ip-owner = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|   └── Condition (AND):&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:organization = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:agreement-id = resource:agreement-id&lt;br /&gt;
&lt;br /&gt;
|       ├── resource:ip-licensee = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── current-dateTime &amp;gt;= resource:effective-date&lt;br /&gt;
&lt;br /&gt;
|       └── current-dateTime 小于 resource:expiration-date&lt;br /&gt;
&lt;br /&gt;
└── Obligations (Permit):&lt;br /&gt;
&lt;br /&gt;
    ├── marking(text = &amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    └── encrypt&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json： ==&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;organization&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;copyright&amp;quot;: true,&lt;br /&gt;
     &amp;quot;ipOwner&amp;quot;: &amp;quot;Acme&amp;quot;,&lt;br /&gt;
     &amp;quot;ipLicensee&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementType&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;,&lt;br /&gt;
     &amp;quot;effectiveDate&amp;quot;: &amp;quot;2020-01-01T00:00:00&amp;quot;,&lt;br /&gt;
     &amp;quot;expirationDate&amp;quot;: &amp;quot;2030-01-01T00:00:00&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;use&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;env&amp;quot;: {&lt;br /&gt;
     &amp;quot;currentDateTime&amp;quot;: &amp;quot;2024-06-01T12:00:00&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
&lt;br /&gt;
contract CopyrightApprove {&lt;br /&gt;
&lt;br /&gt;
    party Owner {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
        targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        marking(text: String)&lt;br /&gt;
&lt;br /&gt;
        encrypt()&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
        copyright: Boolean&lt;br /&gt;
&lt;br /&gt;
        agreementType: String&lt;br /&gt;
&lt;br /&gt;
        ipOwner: String&lt;br /&gt;
&lt;br /&gt;
        ipLicensee: String&lt;br /&gt;
&lt;br /&gt;
        agreementId: String&lt;br /&gt;
&lt;br /&gt;
        effectiveDate: dateTime&lt;br /&gt;
&lt;br /&gt;
        expirationDate: dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition fn {&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: String): String&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: dateTime): dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ## Type(match)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, copyright) = true&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, agreementType) = &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
    ## Type(comb)&lt;br /&gt;
&lt;br /&gt;
    term policy_comb: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when evalTerm(rule_target, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
        where evalTerm(obligation_mark, Request) AND evalTerm(obligation_encrypt, Request)&lt;br /&gt;
&lt;br /&gt;
          AND return Permit&lt;br /&gt;
&lt;br /&gt;
    term rule_target: Sub can use Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, ipOwner) = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and  ATTR(Request::Sub, organization) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and fn::string::oneAndOnly(ATTR(Request::Sub, agreementId)) =&lt;br /&gt;
&lt;br /&gt;
              fn::string::oneAndOnly(ATTR(Request::Obj, agreementId))&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, ipLicensee) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and now &amp;gt;= fn::dateTime::oneAndOnly(ATTR(Request::Obj, effectiveDate))&lt;br /&gt;
&lt;br /&gt;
          and now &amp;lt; fn::dateTime::oneAndOnly(ATTR(Request::Obj, expirationDate))&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
    term obligation_mark: Platform must marking(&amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        when true&lt;br /&gt;
&lt;br /&gt;
    term obligation_encrypt: Platform must encrypt()&lt;br /&gt;
&lt;br /&gt;
        when true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=544</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=544"/>
		<updated>2026-09-03T01:05:36Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;c14026e9edf9ff3dd34d05da43c296c7fa910e7e&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-09-03T00:50:26.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC][/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
meta&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;c14026e9edf9ff3dd34d05da43c296c7fa910e7e&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-09-03T00:50:26.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC] pro[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]perty=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;d27a609efb4570c5f98236e815818dcbb1902481&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T23:12:55.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]总体执行[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;= 总体顺序 =&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
target term&lt;br /&gt;
&lt;br /&gt;
                │ 只做资源级适用性判断，不引用具体 comb&lt;br /&gt;
&lt;br /&gt;
                ▼  （编译器自动按 Request::Act.actionId 查找对应 comb；  （无 comb 则找同动作 rule_target））&lt;br /&gt;
&lt;br /&gt;
comb term（组合入口，针对一类动作）&lt;br /&gt;
&lt;br /&gt;
               │ 在 when 中 evalTerm(rule_target, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
               ▼&lt;br /&gt;
&lt;br /&gt;
rule_target term（动作、rule级obligation、rule级target、伴随、后置）&lt;br /&gt;
&lt;br /&gt;
               │ 在 when 中 evalTerm(rule_condition, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
             ▼&lt;br /&gt;
&lt;br /&gt;
rule_condition term（condition和返回）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=例1：sample6=&lt;br /&gt;
来源：https://is.docs.wso2.com/en/6.0.0/references/extend/access-control/xacml3-sample6/&lt;br /&gt;
&lt;br /&gt;
说明：多rule合并&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot; PolicyId=&amp;quot;testOr&amp;quot; &lt;br /&gt;
RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot; Version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Description&amp;gt;Test Or&amp;lt;/Description&amp;gt;&lt;br /&gt;
   &amp;lt;Target&amp;gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-group-emps-rule&amp;quot;&amp;gt;  &lt;br /&gt;
      &amp;lt;Target&amp;gt;&lt;br /&gt;
         &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
               &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;read&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:action:action-id&amp;quot; &lt;br /&gt;
                  Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:action&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
         &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
      &amp;lt;/Target&amp;gt;&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;group&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:group&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin_emps&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-user-rule&amp;quot;&amp;gt; &lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:resource:resource-id&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Deny&amp;quot; RuleId=&amp;quot;deny-rule&amp;quot;&amp;gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy (组合: first-applicable) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空&lt;br /&gt;
&lt;br /&gt;
├── Rule1 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: action-id = read&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: group 属性 (类别 group)与 {admin_emps, admin} 有交集&lt;br /&gt;
&lt;br /&gt;
├── Rule2 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: 无&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: resource-id 与 {&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2}&amp;lt;/nowiki&amp;gt; 有交集&lt;br /&gt;
&lt;br /&gt;
└── Rule3 (Deny) 兜底&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;subjectId&amp;quot;: &amp;quot;anyone&amp;quot;,&lt;br /&gt;
     &amp;quot;groups&amp;quot;: []&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;resourceId&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
contract Sample6_RoleAccess {&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
        targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ## Type(match)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when true&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
    ## Type(comb)&lt;br /&gt;
&lt;br /&gt;
    term policy_comb: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when some of(evalTerm(rule_target_1, Request),&lt;br /&gt;
&lt;br /&gt;
                     evalTerm(rule_target_2, Request)) = Permit&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
    term rule_target_1: Sub can read Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Act, actionId) = &amp;quot;read&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and &amp;quot;admin_emps&amp;quot; belong ATTR(Request::Sub, groups)&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
    term rule_target_2: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when when ATTR(Request::Obj, resourceId) in {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
=例2：OASIS 3-4=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/ipc/v1.0/os/xacml-3.0-ipc-v1.0-os-en.html#_Toc323564502&lt;br /&gt;
&lt;br /&gt;
语法：双target，有obligation&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
    PolicyId=&amp;quot;copyright-approve&amp;quot;&lt;br /&gt;
    RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:deny-overrides&amp;quot;&lt;br /&gt;
    Version=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;Example copyright material policy&amp;lt;/Description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 策略级 Target：资源必须是 copyright=true 且协议类型为 copyright-grant --&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
        &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:boolean-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot;&amp;gt;true&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:copyright&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
        &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 规则级 Target：资源 ip-owner = Acme --&amp;gt;&lt;br /&gt;
    &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;Right to use copyrighted material match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Description&amp;gt;Allow if subject's association to the designated custodian of the copyright agrees&amp;lt;/Description&amp;gt;&lt;br /&gt;
        &amp;lt;Target&amp;gt;&lt;br /&gt;
            &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
                &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                    &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-owner&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
            &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Condition：以下 5 个条件全部成立才 Permit --&amp;gt;&lt;br /&gt;
        &amp;lt;Condition&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:and&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ① 请求方组织 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:organization&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ② 主体协议号 = 资源协议号 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ③ 资源被许可方 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-licensee&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ④ 当前时间 &amp;gt;= 生效时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:effective-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ⑤ 当前时间 &amp;lt; 过期时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:expiration-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
        &amp;lt;/Condition&amp;gt;&lt;br /&gt;
    &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Permit 时要求 PEP：加标记 + 加密 --&amp;gt;&lt;br /&gt;
    &amp;lt;ObligationExpressions&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:marking&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeAssignmentExpression AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:attribute:text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Copyright 2011 Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/AttributeAssignmentExpression&amp;gt;&lt;br /&gt;
        &amp;lt;/ObligationExpression&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:encrypt&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ObligationExpressions&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy copyright-approve (deny-overrides) &lt;br /&gt;
&lt;br /&gt;
├── Target: resource:copyright = true&lt;br /&gt;
&lt;br /&gt;
│           AND resource:agreement-type = &amp;lt;nowiki&amp;gt;urn:...:copyright-grant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
└── Rule &amp;quot;Right to use copyrighted material match&amp;quot; (Permit)&lt;br /&gt;
&lt;br /&gt;
|   ├── Target: resource:ip-owner = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|   └── Condition (AND):&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:organization = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:agreement-id = resource:agreement-id&lt;br /&gt;
&lt;br /&gt;
|       ├── resource:ip-licensee = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── current-dateTime &amp;gt;= resource:effective-date&lt;br /&gt;
&lt;br /&gt;
|       └── current-dateTime 小于 resource:expiration-date&lt;br /&gt;
&lt;br /&gt;
└── Obligations (Permit):&lt;br /&gt;
&lt;br /&gt;
    ├── marking(text = &amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    └── encrypt&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json： ==&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;organization&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;copyright&amp;quot;: true,&lt;br /&gt;
     &amp;quot;ipOwner&amp;quot;: &amp;quot;Acme&amp;quot;,&lt;br /&gt;
     &amp;quot;ipLicensee&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementType&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;,&lt;br /&gt;
     &amp;quot;effectiveDate&amp;quot;: &amp;quot;2020-01-01T00:00:00&amp;quot;,&lt;br /&gt;
     &amp;quot;expirationDate&amp;quot;: &amp;quot;2030-01-01T00:00:00&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;use&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;env&amp;quot;: {&lt;br /&gt;
     &amp;quot;currentDateTime&amp;quot;: &amp;quot;2024-06-01T12:00:00&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
&lt;br /&gt;
contract CopyrightApprove {&lt;br /&gt;
&lt;br /&gt;
    party Owner {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
        targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        marking(text: String)&lt;br /&gt;
&lt;br /&gt;
        encrypt()&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
        copyright: Boolean&lt;br /&gt;
&lt;br /&gt;
        agreementType: String&lt;br /&gt;
&lt;br /&gt;
        ipOwner: String&lt;br /&gt;
&lt;br /&gt;
        ipLicensee: String&lt;br /&gt;
&lt;br /&gt;
        agreementId: String&lt;br /&gt;
&lt;br /&gt;
        effectiveDate: dateTime&lt;br /&gt;
&lt;br /&gt;
        expirationDate: dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition fn {&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: String): String&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: dateTime): dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ## Type(match)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, copyright) = true&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, agreementType) = &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
    ## Type(comb)&lt;br /&gt;
&lt;br /&gt;
    term policy_comb: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when evalTerm(rule_target, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
        where evalTerm(obligation_mark, Request) AND evalTerm(obligation_encrypt, Request)&lt;br /&gt;
&lt;br /&gt;
          AND return Permit&lt;br /&gt;
&lt;br /&gt;
    term rule_target: Sub can use Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, ipOwner) = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and  ATTR(Request::Sub, organization) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and fn::string::oneAndOnly(ATTR(Request::Sub, agreementId)) =&lt;br /&gt;
&lt;br /&gt;
              fn::string::oneAndOnly(ATTR(Request::Obj, agreementId))&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, ipLicensee) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and now &amp;gt;= fn::dateTime::oneAndOnly(ATTR(Request::Obj, effectiveDate))&lt;br /&gt;
&lt;br /&gt;
          and now &amp;lt; fn::dateTime::oneAndOnly(ATTR(Request::Obj, expirationDate))&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
    term obligation_mark: Platform must marking(&amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        when true&lt;br /&gt;
&lt;br /&gt;
    term obligation_encrypt: Platform must encrypt()&lt;br /&gt;
&lt;br /&gt;
        when true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=543</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=543"/>
		<updated>2026-09-03T00:50:26Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿﻿&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;4c9dca79b50e053e3f7764f329c8ffbeb56d198a&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-09-03T00:47:57.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]&amp;lt;title&amp;gt;CBAC&amp;lt;/title&amp;gt;&amp;lt;base href=&amp;quot;https://www.smartlegalcontract.cn/mediawiki/index.php/&amp;quot; /&amp;gt;[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&amp;lt;!--[if lt IE 9]&amp;gt;&amp;lt;script src=&amp;quot;/mediawiki/load.php?modules=html5shiv&amp;amp;only=scripts&amp;amp;skin=vector&amp;amp;sync=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script&amp;gt;html5.addElements('figure-inline');&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
﻿&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;d27a609efb4570c5f98236e815818dcbb1902481&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T23:12:55.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC][/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;d27a609efb4570c5f98236e815818dcbb1902481&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T23:12:55.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]总体执行[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]顺序 =&lt;br /&gt;
&lt;br /&gt;
target term&lt;br /&gt;
&lt;br /&gt;
                │ 只做资源级适用性判断，不引用具体 comb&lt;br /&gt;
&lt;br /&gt;
                ▼  （编译器自动按 Request::Act.actionId 查找对应 comb；  （无 comb 则找同动作 rule_target））&lt;br /&gt;
&lt;br /&gt;
comb term（组合入口，针对一类动作）&lt;br /&gt;
&lt;br /&gt;
               │ 在 when 中 evalTerm(rule_target, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
               ▼&lt;br /&gt;
&lt;br /&gt;
rule_target term（动作、rule级obligation、rule级target、伴随、后置）&lt;br /&gt;
&lt;br /&gt;
               │ 在 when 中 evalTerm(rule_condition, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
             ▼&lt;br /&gt;
&lt;br /&gt;
rule_condition term（condition和返回）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=例1：sample6=&lt;br /&gt;
来源：https://is.docs.wso2.com/en/6.0.0/references/extend/access-control/xacml3-sample6/&lt;br /&gt;
&lt;br /&gt;
说明：多rule合并&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot; PolicyId=&amp;quot;testOr&amp;quot; &lt;br /&gt;
RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot; Version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Description&amp;gt;Test Or&amp;lt;/Description&amp;gt;&lt;br /&gt;
   &amp;lt;Target&amp;gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-group-emps-rule&amp;quot;&amp;gt;  &lt;br /&gt;
      &amp;lt;Target&amp;gt;&lt;br /&gt;
         &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
               &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;read&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:action:action-id&amp;quot; &lt;br /&gt;
                  Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:action&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
         &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
      &amp;lt;/Target&amp;gt;&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;group&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:group&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin_emps&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-user-rule&amp;quot;&amp;gt; &lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:resource:resource-id&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Deny&amp;quot; RuleId=&amp;quot;deny-rule&amp;quot;&amp;gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy (组合: first-applicable) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空&lt;br /&gt;
&lt;br /&gt;
├── Rule1 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: action-id = read&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: group 属性 (类别 group)与 {admin_emps, admin} 有交集&lt;br /&gt;
&lt;br /&gt;
├── Rule2 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: 无&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: resource-id 与 {&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2}&amp;lt;/nowiki&amp;gt; 有交集&lt;br /&gt;
&lt;br /&gt;
└── Rule3 (Deny) 兜底&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;subjectId&amp;quot;: &amp;quot;anyone&amp;quot;,&lt;br /&gt;
     &amp;quot;groups&amp;quot;: []&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;resourceId&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
contract Sample6_RoleAccess {&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
        targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ## Type(match)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when true&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ## Type(comb)&lt;br /&gt;
&lt;br /&gt;
    term policy_comb: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when some of(evalTerm(rule_target_1, Request),&lt;br /&gt;
&lt;br /&gt;
                     evalTerm(rule_target_2, Request)) = Permit&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_target_1: Sub can read Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Act, actionId) = &amp;quot;read&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and evalTerm(rule_condition_1, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_condition_1:&lt;br /&gt;
&lt;br /&gt;
        when some g in ATTR(Request::Sub, groups)&lt;br /&gt;
&lt;br /&gt;
            such that g = &amp;quot;admin_emps&amp;quot; or g = &amp;quot;admin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_target_2: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when evalTerm(rule_condition_2, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_condition_2:&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, resourceId) in {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
=例2：OASIS 3-4=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/ipc/v1.0/os/xacml-3.0-ipc-v1.0-os-en.html#_Toc323564502&lt;br /&gt;
&lt;br /&gt;
语法：双target，有obligation&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
    PolicyId=&amp;quot;copyright-approve&amp;quot;&lt;br /&gt;
    RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:deny-overrides&amp;quot;&lt;br /&gt;
    Version=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;Example copyright material policy&amp;lt;/Description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 策略级 Target：资源必须是 copyright=true 且协议类型为 copyright-grant --&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
        &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:boolean-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot;&amp;gt;true&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:copyright&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
        &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 规则级 Target：资源 ip-owner = Acme --&amp;gt;&lt;br /&gt;
    &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;Right to use copyrighted material match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Description&amp;gt;Allow if subject's association to the designated custodian of the copyright agrees&amp;lt;/Description&amp;gt;&lt;br /&gt;
        &amp;lt;Target&amp;gt;&lt;br /&gt;
            &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
                &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                    &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-owner&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
            &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Condition：以下 5 个条件全部成立才 Permit --&amp;gt;&lt;br /&gt;
        &amp;lt;Condition&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:and&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ① 请求方组织 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:organization&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ② 主体协议号 = 资源协议号 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ③ 资源被许可方 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-licensee&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ④ 当前时间 &amp;gt;= 生效时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:effective-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ⑤ 当前时间 &amp;lt; 过期时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:expiration-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
        &amp;lt;/Condition&amp;gt;&lt;br /&gt;
    &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Permit 时要求 PEP：加标记 + 加密 --&amp;gt;&lt;br /&gt;
    &amp;lt;ObligationExpressions&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:marking&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeAssignmentExpression AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:attribute:text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Copyright 2011 Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/AttributeAssignmentExpression&amp;gt;&lt;br /&gt;
        &amp;lt;/ObligationExpression&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:encrypt&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ObligationExpressions&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy copyright-approve (deny-overrides) &lt;br /&gt;
&lt;br /&gt;
├── Target: resource:copyright = true&lt;br /&gt;
&lt;br /&gt;
│           AND resource:agreement-type = &amp;lt;nowiki&amp;gt;urn:...:copyright-grant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
└── Rule &amp;quot;Right to use copyrighted material match&amp;quot; (Permit)&lt;br /&gt;
&lt;br /&gt;
|   ├── Target: resource:ip-owner = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|   └── Condition (AND):&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:organization = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:agreement-id = resource:agreement-id&lt;br /&gt;
&lt;br /&gt;
|       ├── resource:ip-licensee = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── current-dateTime &amp;gt;= resource:effective-date&lt;br /&gt;
&lt;br /&gt;
|       └── current-dateTime 小于 resource:expiration-date&lt;br /&gt;
&lt;br /&gt;
└── Obligations (Permit):&lt;br /&gt;
&lt;br /&gt;
    ├── marking(text = &amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    └── encrypt&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json： ==&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;organization&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;copyright&amp;quot;: true,&lt;br /&gt;
     &amp;quot;ipOwner&amp;quot;: &amp;quot;Acme&amp;quot;,&lt;br /&gt;
     &amp;quot;ipLicensee&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementType&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;,&lt;br /&gt;
     &amp;quot;effectiveDate&amp;quot;: &amp;quot;2020-01-01T00:00:00&amp;quot;,&lt;br /&gt;
     &amp;quot;expirationDate&amp;quot;: &amp;quot;2030-01-01T00:00:00&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;use&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;env&amp;quot;: {&lt;br /&gt;
     &amp;quot;currentDateTime&amp;quot;: &amp;quot;2024-06-01T12:00:00&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contract CopyrightApprove {&lt;br /&gt;
&lt;br /&gt;
    party Owner {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
        targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        marking(text: String)&lt;br /&gt;
&lt;br /&gt;
        encrypt()&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
        copyright: Boolean&lt;br /&gt;
&lt;br /&gt;
        agreementType: String&lt;br /&gt;
&lt;br /&gt;
        ipOwner: String&lt;br /&gt;
&lt;br /&gt;
        ipLicensee: String&lt;br /&gt;
&lt;br /&gt;
        agreementId: String&lt;br /&gt;
&lt;br /&gt;
        effectiveDate: dateTime&lt;br /&gt;
&lt;br /&gt;
        expirationDate: dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition fn {&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: String): String&lt;br /&gt;
&lt;br /&gt;
        oneAndOnly(x: dateTime): dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ## Type(match)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, copyright) = true&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, agreementType) = &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where return Permit &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ## Type(comb)&lt;br /&gt;
&lt;br /&gt;
    term policy_comb: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when evalTerm(rule_target, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
        where evalTerm(obligation_mark, Request)  AND evalTerm(obligation_encrypt, Request)  return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_target: Sub can use Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, ipOwner) = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and evalTerm(rule_condition, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_condition:&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Sub, organization) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and fn::string::oneAndOnly(ATTR(Request::Sub, agreementId)) =&lt;br /&gt;
&lt;br /&gt;
              fn::string::oneAndOnly(ATTR(Request::Obj, agreementId))&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, ipLicensee) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and now &amp;gt;= fn::dateTime::oneAndOnly(ATTR(Request::Obj, effectiveDate))&lt;br /&gt;
&lt;br /&gt;
          and now &amp;lt; fn::dateTime::oneAndOnly(ATTR(Request::Obj, expirationDate))&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term obligation_mark: Platform must marking(&amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
         when True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term obligation_encrypt: Platform must encrypt()&lt;br /&gt;
&lt;br /&gt;
        when True&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=542</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=542"/>
		<updated>2026-09-03T00:47:57Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;d27a609efb4570c5f98236e815818dcbb1902481&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T23:12:55.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC][/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;d27a609efb4570c5f98236e815818dcbb1902481&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T23:12:55.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]总体执行[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]顺序 =&lt;br /&gt;
&lt;br /&gt;
target term&lt;br /&gt;
&lt;br /&gt;
                │ 只做资源级适用性判断，不引用具体 comb&lt;br /&gt;
&lt;br /&gt;
                ▼  （编译器自动按 Request::Act.actionId 查找对应 comb；  （无 comb 则找同动作 rule_target））&lt;br /&gt;
&lt;br /&gt;
comb term（组合入口，针对一类动作）&lt;br /&gt;
&lt;br /&gt;
               │ 在 when 中 evalTerm(rule_target, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
               ▼&lt;br /&gt;
&lt;br /&gt;
rule_target term（动作、rule级obligation、rule级target、伴随、后置）&lt;br /&gt;
&lt;br /&gt;
               │ 在 when 中 evalTerm(rule_condition, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
             ▼&lt;br /&gt;
&lt;br /&gt;
rule_condition term（condition和返回）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=例1：sample6=&lt;br /&gt;
来源：https://is.docs.wso2.com/en/6.0.0/references/extend/access-control/xacml3-sample6/&lt;br /&gt;
&lt;br /&gt;
说明：多rule合并&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot; PolicyId=&amp;quot;testOr&amp;quot; &lt;br /&gt;
RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot; Version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Description&amp;gt;Test Or&amp;lt;/Description&amp;gt;&lt;br /&gt;
   &amp;lt;Target&amp;gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-group-emps-rule&amp;quot;&amp;gt;  &lt;br /&gt;
      &amp;lt;Target&amp;gt;&lt;br /&gt;
         &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
               &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;read&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:action:action-id&amp;quot; &lt;br /&gt;
                  Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:action&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
         &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
      &amp;lt;/Target&amp;gt;&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;group&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:group&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin_emps&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-user-rule&amp;quot;&amp;gt; &lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:resource:resource-id&amp;quot; &lt;br /&gt;
            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Deny&amp;quot; RuleId=&amp;quot;deny-rule&amp;quot;&amp;gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy (组合: first-applicable) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空&lt;br /&gt;
&lt;br /&gt;
├── Rule1 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: action-id = read&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: group 属性 (类别 group)与 {admin_emps, admin} 有交集&lt;br /&gt;
&lt;br /&gt;
├── Rule2 (Permit)&lt;br /&gt;
&lt;br /&gt;
│ ├── Target: 无&lt;br /&gt;
&lt;br /&gt;
│ └── Condition: resource-id 与 {&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2}&amp;lt;/nowiki&amp;gt; 有交集&lt;br /&gt;
&lt;br /&gt;
└── Rule3 (Deny) 兜底&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;subjectId&amp;quot;: &amp;quot;anyone&amp;quot;,&lt;br /&gt;
     &amp;quot;groups&amp;quot;: []&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;resourceId&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
contract Sample6_RoleAccess {&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
        targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ## Type(match)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when true&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ## Type(comb)&lt;br /&gt;
&lt;br /&gt;
    term policy_comb: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when some of(evalTerm(rule_target_1, Request),&lt;br /&gt;
&lt;br /&gt;
                     evalTerm(rule_target_2, Request)) = Permit&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_target_1: Sub can read Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Act, actionId) = &amp;quot;read&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and evalTerm(rule_condition_1, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_condition_1:&lt;br /&gt;
&lt;br /&gt;
        when some g in ATTR(Request::Sub, groups)&lt;br /&gt;
&lt;br /&gt;
            such that g = &amp;quot;admin_emps&amp;quot; or g = &amp;quot;admin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_target_2: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when evalTerm(rule_condition_2, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_condition_2:&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, resourceId) in {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;&amp;lt;nowiki&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
=例2：OASIS 3-4=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/ipc/v1.0/os/xacml-3.0-ipc-v1.0-os-en.html#_Toc323564502&lt;br /&gt;
&lt;br /&gt;
语法：双target，有obligation&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
    PolicyId=&amp;quot;copyright-approve&amp;quot;&lt;br /&gt;
    RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:deny-overrides&amp;quot;&lt;br /&gt;
    Version=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;Example copyright material policy&amp;lt;/Description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 策略级 Target：资源必须是 copyright=true 且协议类型为 copyright-grant --&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
        &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:boolean-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot;&amp;gt;true&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:copyright&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#boolean&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:anyURI-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot;&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type&amp;quot;&lt;br /&gt;
                        Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                        DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#anyURI&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
        &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- 规则级 Target：资源 ip-owner = Acme --&amp;gt;&lt;br /&gt;
    &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;Right to use copyrighted material match&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Description&amp;gt;Allow if subject's association to the designated custodian of the copyright agrees&amp;lt;/Description&amp;gt;&lt;br /&gt;
        &amp;lt;Target&amp;gt;&lt;br /&gt;
            &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
                &amp;lt;AllOf&amp;gt;&lt;br /&gt;
                    &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-owner&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Match&amp;gt;&lt;br /&gt;
                &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
            &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;/Target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Condition：以下 5 个条件全部成立才 Permit --&amp;gt;&lt;br /&gt;
        &amp;lt;Condition&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:and&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ① 请求方组织 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:organization&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ② 主体协议号 = 资源协议号 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:subject:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-id&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ③ 资源被许可方 = Wiley Corp --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Wiley Corp&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:ip-licensee&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ④ 当前时间 &amp;gt;= 生效时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:effective-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ⑤ 当前时间 &amp;lt; 过期时间 --&amp;gt;&lt;br /&gt;
                &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:environment:current-dateTime&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:environment&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                    &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:resource:expiration-date&amp;quot;&lt;br /&gt;
                            Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot;&lt;br /&gt;
                            DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot; MustBePresent=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Apply&amp;gt;&lt;br /&gt;
                &amp;lt;/Apply&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
        &amp;lt;/Condition&amp;gt;&lt;br /&gt;
    &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Permit 时要求 PEP：加标记 + 加密 --&amp;gt;&lt;br /&gt;
    &amp;lt;ObligationExpressions&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:marking&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeAssignmentExpression AttributeId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:attribute:text&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;Copyright 2011 Acme&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/AttributeAssignmentExpression&amp;gt;&lt;br /&gt;
        &amp;lt;/ObligationExpression&amp;gt;&lt;br /&gt;
        &amp;lt;ObligationExpression ObligationId=&amp;quot;urn:oasis:names:tc:xacml:3.0:ipc:obligation:encrypt&amp;quot; FulfillOn=&amp;quot;Permit&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/ObligationExpressions&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy copyright-approve (deny-overrides) &lt;br /&gt;
&lt;br /&gt;
├── Target: resource:copyright = true&lt;br /&gt;
&lt;br /&gt;
│           AND resource:agreement-type = &amp;lt;nowiki&amp;gt;urn:...:copyright-grant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
└── Rule &amp;quot;Right to use copyrighted material match&amp;quot; (Permit)&lt;br /&gt;
&lt;br /&gt;
|   ├── Target: resource:ip-owner = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|   └── Condition (AND):&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:organization = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── subject:agreement-id = resource:agreement-id&lt;br /&gt;
&lt;br /&gt;
|       ├── resource:ip-licensee = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|       ├── current-dateTime &amp;gt;= resource:effective-date&lt;br /&gt;
&lt;br /&gt;
|       └── current-dateTime 小于 resource:expiration-date&lt;br /&gt;
&lt;br /&gt;
└── Obligations (Permit):&lt;br /&gt;
&lt;br /&gt;
    ├── marking(text = &amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    └── encrypt&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json： ==&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;sub&amp;quot;: {&lt;br /&gt;
     &amp;quot;organization&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;obj&amp;quot;: {&lt;br /&gt;
     &amp;quot;copyright&amp;quot;: true,&lt;br /&gt;
     &amp;quot;ipOwner&amp;quot;: &amp;quot;Acme&amp;quot;,&lt;br /&gt;
     &amp;quot;ipLicensee&amp;quot;: &amp;quot;Wiley Corp&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementType&amp;quot;: &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
     &amp;quot;agreementId&amp;quot;: &amp;quot;A-001&amp;quot;,&lt;br /&gt;
     &amp;quot;effectiveDate&amp;quot;: &amp;quot;2020-01-01T00:00:00&amp;quot;,&lt;br /&gt;
     &amp;quot;expirationDate&amp;quot;: &amp;quot;2030-01-01T00:00:00&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;act&amp;quot;: {&lt;br /&gt;
     &amp;quot;actionId&amp;quot;: &amp;quot;use&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;env&amp;quot;: {&lt;br /&gt;
     &amp;quot;currentDateTime&amp;quot;: &amp;quot;2024-06-01T12:00:00&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==转换版：==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contract CopyrightApprove {&lt;br /&gt;
&lt;br /&gt;
    party Owner {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    party Platform {&lt;br /&gt;
&lt;br /&gt;
        name: String&lt;br /&gt;
&lt;br /&gt;
        targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        marking(text: String)&lt;br /&gt;
&lt;br /&gt;
        encrypt()&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    asset Resource {&lt;br /&gt;
&lt;br /&gt;
        resourceId: String&lt;br /&gt;
&lt;br /&gt;
        copyright: Boolean&lt;br /&gt;
&lt;br /&gt;
        agreementType: String&lt;br /&gt;
&lt;br /&gt;
        ipOwner: String&lt;br /&gt;
&lt;br /&gt;
        ipLicensee: String&lt;br /&gt;
&lt;br /&gt;
        agreementId: String&lt;br /&gt;
&lt;br /&gt;
        effectiveDate: dateTime&lt;br /&gt;
&lt;br /&gt;
        expirationDate: dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition Request {&lt;br /&gt;
&lt;br /&gt;
        Sub: Subject&lt;br /&gt;
&lt;br /&gt;
        Obj: Resource&lt;br /&gt;
&lt;br /&gt;
        Act: Action&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    addition fn {&lt;br /&gt;
&lt;br /&gt;
        fn::string::oneAndOnly(x: String): String&lt;br /&gt;
&lt;br /&gt;
        fn::dateTime::oneAndOnly(x: dateTime): dateTime&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ## Type(match)&lt;br /&gt;
&lt;br /&gt;
    term policy_target: Platform must targetMatch(Request)&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, copyright) = true&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, agreementType) = &amp;quot;&amp;lt;nowiki&amp;gt;urn:oasis:names:tc:xacml:3.0:ipc:resource:agreement-type:copyright-grant&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        where return Permit &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ## Type(comb)&lt;br /&gt;
&lt;br /&gt;
    term policy_comb: Sub can access Resource&lt;br /&gt;
&lt;br /&gt;
        when evalTerm(rule_target, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
        where evalTerm(obligation_mark, Request)  AND evalTerm(obligation_encrypt, Request)  return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_target: Sub can use Resource&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Obj, ipOwner) = &amp;quot;Acme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and evalTerm(rule_condition, Request) = Permit&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term rule_condition:&lt;br /&gt;
&lt;br /&gt;
        when ATTR(Request::Sub, organization) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and fn::string::oneAndOnly(ATTR(Request::Sub, agreementId)) =&lt;br /&gt;
&lt;br /&gt;
              fn::string::oneAndOnly(ATTR(Request::Obj, agreementId))&lt;br /&gt;
&lt;br /&gt;
          and ATTR(Request::Obj, ipLicensee) = &amp;quot;Wiley Corp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          and now &amp;gt;= fn::dateTime::oneAndOnly(ATTR(Request::Obj, effectiveDate))&lt;br /&gt;
&lt;br /&gt;
          and now &amp;lt; fn::dateTime::oneAndOnly(ATTR(Request::Obj, expirationDate))&lt;br /&gt;
&lt;br /&gt;
        where return Permit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term obligation_mark: Platform must marking(&amp;quot;Copyright 2011 Acme&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
         when true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    term obligation_encrypt: Platform must encrypt()&lt;br /&gt;
&lt;br /&gt;
        when true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=541</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=541"/>
		<updated>2026-08-30T23:12:55Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;256a4cfa7999ae45eb97cc5690cc00c9c38a6705&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T23:08:30.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC][/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
= 概述&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;256a4cfa7999ae45eb97cc5690cc00c9c38a6705&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T23:08:30.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC] =&lt;br /&gt;
&lt;br /&gt;
[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]1、主体&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;256a4cfa7999ae45eb97cc5690cc00c9c38a6705&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T23:08:30.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]注册时签[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]主体合约，资源托管时签客体合约；两份合约放入同一个 policySet，按业务场景组合&lt;br /&gt;
&lt;br /&gt;
- policySet 是未签署的组合框架，policy 是一份已签署合约&lt;br /&gt;
&lt;br /&gt;
- CBAC 是主文档，主体合约 + 客体合约，两份都签署&lt;br /&gt;
&lt;br /&gt;
- SPESC 是执行投影。判决投影管 Permit/Deny，执行投影管付费、分账、违约&lt;br /&gt;
&lt;br /&gt;
- 因为 SPESC 本身只有立约和付款，装不下访问控制和角色派生，CBAC 补这一层&lt;br /&gt;
&lt;br /&gt;
2、原始 SPESC 格式不能破坏，只能追加：&lt;br /&gt;
&lt;br /&gt;
- party / asset / term 原样保留&lt;br /&gt;
&lt;br /&gt;
- term 管法律权利义务&lt;br /&gt;
&lt;br /&gt;
- access 管访问控制判决&lt;br /&gt;
&lt;br /&gt;
3、关联：&lt;br /&gt;
&lt;br /&gt;
- policy 里的 party / asset 是属性字典，给 access 提供 subject.role、resource.type 这类取值&lt;br /&gt;
&lt;br /&gt;
- policySet 里的 request 是统一输入，告诉引擎 subject 对应谁、resource 对应谁&lt;br /&gt;
&lt;br /&gt;
- 授权/角色派生 SPESC 没有，所以 term 动作带实参，是显式扩展。&lt;br /&gt;
&lt;br /&gt;
- term 的授权动作调用先执行，把角色派生结果交给 access 用&lt;br /&gt;
&lt;br /&gt;
4、找到的xacml没有托管合约下的语义，于是Platform 义务按需补，简单例子就只留 party/asset/term/access。&lt;br /&gt;
&lt;br /&gt;
5、后续使用：&lt;br /&gt;
&lt;br /&gt;
- 授权中心按 sub/obj 找到两份合约&lt;br /&gt;
&lt;br /&gt;
- 请求只带 Subid / Objid / Act&lt;br /&gt;
&lt;br /&gt;
- 判决引擎只读 access和授权动作调用派生的属性，不读 term 的 must / while / where / breach&lt;br /&gt;
&lt;br /&gt;
- term 的付费、分账、违约留给 SPESC 投影&lt;br /&gt;
&lt;br /&gt;
- Permit 后生成具体 SPESC，再发 token；资源中心验 token 放行；放行后触发链上具体 SPESC 执行&lt;br /&gt;
&lt;br /&gt;
- 判决和执行读同一份主文档，但读的部分不同，所以视图一致性用双 AST 检查兜底&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;CBAC&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=例1：基础policy，OASIS 规范正式例子的起点=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html#_Toc325047096&lt;br /&gt;
&lt;br /&gt;
语法：单条 Policy + 单条 Rule，Policy 级 Target 为空，Rule 级 Target 用 rfc822Name-match 对请求里的 subject-id 做邮箱域匹配；没有 Condition、Obligation、PolicySet。相比 WSO2 的 string-equal/集合比较，这里第一次出现“带类型的函数语义”（RFC822 邮箱域名匹配）&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Policy&lt;br /&gt;
  xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
  xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
  xsi:schemaLocation=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&lt;br /&gt;
  http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd&amp;quot;&lt;br /&gt;
  PolicyId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:SimplePolicy1&amp;quot;&lt;br /&gt;
  Version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
  RuleCombiningAlgId=&amp;quot;identifier:rule-combining-algorithm:deny-overrides&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Description&amp;gt;&lt;br /&gt;
    Medi Corp access control policy&lt;br /&gt;
  &amp;lt;/Description&amp;gt;&lt;br /&gt;
  &amp;lt;Target/&amp;gt;&lt;br /&gt;
  &amp;lt;Rule&lt;br /&gt;
    RuleId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:SimpleRule1&amp;quot;&lt;br /&gt;
    Effect=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      Any subject with an e-mail name in the med.example.com domain&lt;br /&gt;
      can perform any action on any resource.&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
      &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;AllOf&amp;gt;&lt;br /&gt;
          &amp;lt;Match&lt;br /&gt;
            MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeValue&lt;br /&gt;
              DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&lt;br /&gt;
              &amp;gt;med.example.com&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator&lt;br /&gt;
              MustBePresent=&amp;quot;false&amp;quot;&lt;br /&gt;
              Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
              AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject:subject-id&amp;quot;&lt;br /&gt;
              DataType=&amp;quot;urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/Match&amp;gt;&lt;br /&gt;
        &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
      &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy SimplePolicy1 (deny-overrides) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空（适用于所有请求）&lt;br /&gt;
&lt;br /&gt;
└── Rule SimpleRule1 (Permit)&lt;br /&gt;
&lt;br /&gt;
├── 描述：med.example.com 域内的邮箱主体可以对任意资源执行任意动作&lt;br /&gt;
  &lt;br /&gt;
└── Target: subject-id (rfc822Name) 匹配 &amp;quot;med.example.com&amp;quot;&lt;br /&gt;
==属性表：==&lt;br /&gt;
| `subject-id` | access-subject | `rfc822Name`  |&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;sub&amp;quot;: {&lt;br /&gt;
    &amp;quot;subjectId&amp;quot;: &amp;quot;bart.simpson@med.example.com&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;obj&amp;quot;: {&lt;br /&gt;
    &amp;quot;resourceId&amp;quot;: &amp;quot;file://example/med/record/patient/BartSimpson&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;act&amp;quot;: {&lt;br /&gt;
    &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
==转换版说明：==&lt;br /&gt;
- 原例是单一企业内部访问策略，不是本课题“平台托管双合约”场景。为自圆其说，将其置于“Medi Corp 内部医疗资源平台”语境： &lt;br /&gt;
&lt;br /&gt;
-- Platform 承担身份/角色管理、核心业务授权、安全合规、生命周期治理义务；&lt;br /&gt;
&lt;br /&gt;
- 原 XACML 只有主体域约束，因此本文件只含一份 policy，不强行拆两份合约。 &lt;br /&gt;
&lt;br /&gt;
- 映射：  rfc822Name-match(&amp;quot;med.example.com&amp;quot;, subject-id) -&amp;gt; subject.subjectId endsWith &amp;quot;@med.example.com&amp;quot; &lt;br /&gt;
&lt;br /&gt;
- 原始请求之外需要获取的其它信息：&lt;br /&gt;
==转换版：==&lt;br /&gt;
policySet &amp;quot;OASIS3_5_MediCorpAccess&amp;quot; {&lt;br /&gt;
&lt;br /&gt;
    // CBAC 追加：请求模型（判决引擎统一输入）&lt;br /&gt;
&lt;br /&gt;
    request AuthorizationRequest {&lt;br /&gt;
&lt;br /&gt;
        subject: Subject&lt;br /&gt;
&lt;br /&gt;
        resource: Resource&lt;br /&gt;
&lt;br /&gt;
        action: Action&lt;br /&gt;
&lt;br /&gt;
        environment: Environment&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    combine denyOverrides	        //    XACML 上层组合逻辑&lt;br /&gt;
&lt;br /&gt;
    policy &amp;quot;MediCorpInternalAccess&amp;quot; signedBy [Subject, Platform] {&lt;br /&gt;
&lt;br /&gt;
        party Subject {		        // SPESC 原生参与方 ----&lt;br /&gt;
&lt;br /&gt;
            subjectId: rfc822Name&lt;br /&gt;
&lt;br /&gt;
            name: String&lt;br /&gt;
&lt;br /&gt;
            department: String&lt;br /&gt;
&lt;br /&gt;
            employmentStatus: String&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        party Platform {		 // Platform 的“系统设计义务”，由 SPESC term 声明。&lt;br /&gt;
&lt;br /&gt;
            account: String&lt;br /&gt;
&lt;br /&gt;
            authorize(role: String, subjectId: String)   // 身份/角色管理&lt;br /&gt;
&lt;br /&gt;
            audit(actionId: String, subjectId: String)   // 安全/合规执行&lt;br /&gt;
&lt;br /&gt;
            suspend(subjectId: String)                   // 治理/处罚&lt;br /&gt;
&lt;br /&gt;
            revoke(subjectId: String)                    // 生命周期终止&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // ---- SPESC 原生：资产 ----&lt;br /&gt;
&lt;br /&gt;
        asset Resource {&lt;br /&gt;
&lt;br /&gt;
            info {&lt;br /&gt;
&lt;br /&gt;
                resourceId: String&lt;br /&gt;
&lt;br /&gt;
                resourceType: String&lt;br /&gt;
&lt;br /&gt;
                department: String&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            right { }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // ---- SPESC term：法律/义务声明（不参与 Permit/Deny）---&lt;br /&gt;
&lt;br /&gt;
        // 身份与角色管理：平台有义务为域内用户派生 internal-user 角色&lt;br /&gt;
&lt;br /&gt;
        term IdentityRoleManagement: Platform must authorize(&amp;quot;internal-user&amp;quot;, Subject::subjectId)&lt;br /&gt;
&lt;br /&gt;
            when Subject::subjectId endsWith &amp;quot;@med.example.com&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
        // 安全与合规执行：平台有义务对访问动作审计&lt;br /&gt;
&lt;br /&gt;
        term SecurityComplianceAudit: Platform must audit(action.actionId, Subject::subjectId)&lt;br /&gt;
&lt;br /&gt;
            when action.actionId in [&amp;quot;read&amp;quot;, &amp;quot;download&amp;quot;, &amp;quot;export&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
        // 生命周期治理：员工离岗时平台有义务吊销访问资格&lt;br /&gt;
&lt;br /&gt;
        term LifecycleRevoke: Platform must revoke(Subject::subjectId)&lt;br /&gt;
&lt;br /&gt;
            when Subject::employmentStatus = &amp;quot;terminated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
        combine permitOverrides	//    XACML 下层组合逻辑&lt;br /&gt;
&lt;br /&gt;
        access &amp;quot;AnyMedDomainUserAnyAction&amp;quot; {         // 原始 XACML 规则：域内用户可对任何资源执行任何动作&lt;br /&gt;
&lt;br /&gt;
            target {&lt;br /&gt;
&lt;br /&gt;
                subject.subjectId endsWith &amp;quot;@med.example.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            effect Permit&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        signature { algorithm &amp;quot;ECDSA&amp;quot;; keyId &amp;quot;medi-subject-template-001&amp;quot;; digest &amp;quot;sha256:...&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
        signature { algorithm &amp;quot;ECDSA&amp;quot;; keyId &amp;quot;medi-platform-001&amp;quot;; digest &amp;quot;sha256:...&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
=例2：rbac组合=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html#_Toc325047096	语法：单条 Policy + 单条 Rule，Policy 级 Target 为空，Rule 级 Target 用 rfc822Name-match 对请求里的 subject-id 做邮箱域匹配；没有 Condition、Obligation、PolicySet。相比 WSO2 的 string-equal/集合比较，这里第一次出现“带类型的函数语义”（RFC822 邮箱域名匹配）&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot; PolicyId=&amp;quot;testOr&amp;quot; RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot; Version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Description&amp;gt;Test Or&amp;lt;/Description&amp;gt;&lt;br /&gt;
   &amp;lt;Target&amp;gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-group-emps-rule&amp;quot;&amp;gt;  //Rule1：read + 组命中 admin_emps/admin → 保护接口&lt;br /&gt;
      &amp;lt;Target&amp;gt;&lt;br /&gt;
         &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
               &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;read&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:action:action-id&amp;quot; Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:action&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
         &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
      &amp;lt;/Target&amp;gt;&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;group&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:group&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin_emps&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-user-rule&amp;quot;&amp;gt;  //Rule2：公开版本接口，任何用户&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:resource:resource-id&amp;quot; Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Deny&amp;quot; RuleId=&amp;quot;deny-rule&amp;quot;&amp;gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy (组合: first-applicable) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空 &lt;br /&gt;
&lt;br /&gt;
├── Rule1 (Permit) &lt;br /&gt;
&lt;br /&gt;
│   ├── Target: action-id = read  &lt;br /&gt;
&lt;br /&gt;
│    └── Condition: group 属性 (类别 group)与 {admin_emps, admin} 有交集&lt;br /&gt;
&lt;br /&gt;
├── Rule2 (Permit) &lt;br /&gt;
&lt;br /&gt;
│ ├── Target: 无 &lt;br /&gt;
&lt;br /&gt;
│ └── Condition: resource-id 与 {http://localhost:8280/services/Customers/getVersion1, http://localhost:8280/services/Customers/getVersion2} 有交集 &lt;br /&gt;
&lt;br /&gt;
└── Rule3 (Deny) 兜底&lt;br /&gt;
==属性表：==&lt;br /&gt;
| `action-id`   | `action`          | string | &lt;br /&gt;
&lt;br /&gt;
| `group`       | `group`           | string |&lt;br /&gt;
&lt;br /&gt;
| `resource-id` | `resource`        | string |&lt;br /&gt;
==原始请求等效json： ==&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;sub&amp;quot;: {&lt;br /&gt;
    &amp;quot;subjectId&amp;quot;: &amp;quot;alice&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&amp;quot;admin&amp;quot;]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;obj&amp;quot;: {&lt;br /&gt;
    &amp;quot;resourceId&amp;quot;: &amp;quot;http://localhost:8280/services/Customers/getVersion1&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;act&amp;quot;: {&lt;br /&gt;
    &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
==转换版说明：==&lt;br /&gt;
把原策略的 3 条 Rule 直接翻成 3 条 access，没有加任何 Platform 义务&lt;br /&gt;
==转换版：==&lt;br /&gt;
policySet &amp;quot;WSO2_Sample6_TestOr&amp;quot; {&lt;br /&gt;
    request AuthorizationRequest {&lt;br /&gt;
        subject: Subject&lt;br /&gt;
        resource: Resource&lt;br /&gt;
        action: Action&lt;br /&gt;
        environment: Environment&lt;br /&gt;
    }&lt;br /&gt;
    type Action {&lt;br /&gt;
        actionId: string&lt;br /&gt;
    }&lt;br /&gt;
    type Environment {&lt;br /&gt;
        currentTime: dateTime&lt;br /&gt;
    }&lt;br /&gt;
    combine firstApplicable&lt;br /&gt;
    policy &amp;quot;testOr&amp;quot; {&lt;br /&gt;
        party Subject {&lt;br /&gt;
            subjectId: string&lt;br /&gt;
            groups: string[]              // 原 XACML 的 group category&lt;br /&gt;
            readResource()                // 动作声明&lt;br /&gt;
        }&lt;br /&gt;
        asset Resource {&lt;br /&gt;
            info {&lt;br /&gt;
                resourceId: string&lt;br /&gt;
            }&lt;br /&gt;
            right { }&lt;br /&gt;
        }&lt;br /&gt;
        term PublicVersionRead: Subject can readResource&lt;br /&gt;
            when Resource::resourceId in [&lt;br /&gt;
                &amp;quot;http://localhost:8280/services/Customers/getVersion1&amp;quot;,&lt;br /&gt;
                &amp;quot;http://localhost:8280/services/Customers/getVersion2&amp;quot;&lt;br /&gt;
            ].&lt;br /&gt;
        combine firstApplicable&lt;br /&gt;
        access &amp;quot;PrimaryGroupEmpsRule&amp;quot; {&lt;br /&gt;
            target {&lt;br /&gt;
                action.actionId = &amp;quot;read&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
            condition {&lt;br /&gt;
                some g in subject.groups&lt;br /&gt;
                    such that g in [&amp;quot;admin_emps&amp;quot;, &amp;quot;admin&amp;quot;]&lt;br /&gt;
            }&lt;br /&gt;
            effect Permit&lt;br /&gt;
        }&lt;br /&gt;
        access &amp;quot;PrimaryUserRule&amp;quot; {&lt;br /&gt;
            condition {&lt;br /&gt;
                resource.resourceId in [&lt;br /&gt;
                    &amp;quot;http://localhost:8280/services/Customers/getVersion1&amp;quot;,&lt;br /&gt;
                    &amp;quot;http://localhost:8280/services/Customers/getVersion2&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
            effect Permit&lt;br /&gt;
        }&lt;br /&gt;
        access &amp;quot;DenyRule&amp;quot; {&lt;br /&gt;
            effect Deny&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=MediaWiki:Sidebar&amp;diff=540</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=MediaWiki:Sidebar&amp;diff=540"/>
		<updated>2026-08-30T23:10:29Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* 导航&lt;br /&gt;
** http://39.106.77.250:8090/index.html|crypto202&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|智能合约&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** SPESC|SPESC&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* 语言&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/%E5%8C%BA%E5%9D%97%E9%93%BE%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E5%BD%A2%E5%BC%8F%E5%8C%96%E8%A1%A8%E8%BE%BE|智能法律合约&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/T/CIE_095-2020|Smart Legal Contract&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC  | 托管合约语言设计&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 应用&lt;br /&gt;
**http://123.56.246.148:8080/ |公益遗嘱链&lt;br /&gt;
**http://smpc.smartlegalcontract.cn/ |计算管理平台&lt;br /&gt;
**https://api.smartlegalcontract.cn/web/index.html |畜牧问答平台&lt;br /&gt;
*样例&lt;br /&gt;
**https://www.smartlegalcontract.cn/mediawiki/index.php/Examples|智能法律合约样例&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=539</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=539"/>
		<updated>2026-08-30T23:08:30Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
= 概述&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;58c2f9929966cca5fff2c61922f72d8e94d9c300&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T22:58:04.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC] =&lt;br /&gt;
&lt;br /&gt;
[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]主体注册时签主体合约，资源托管时签客体合约；两份合约放入同一个 policySet，按业务场景组合&lt;br /&gt;
&lt;br /&gt;
policySet 是未签署的组合框架，policy 是一份已签署合约&lt;br /&gt;
&lt;br /&gt;
CBAC 是主文档，主体合约 + 客体合约，两份都签署&lt;br /&gt;
&lt;br /&gt;
SPESC 是执行投影。判决投影管 Permit/Deny，执行投影管付费、分账、违约&lt;br /&gt;
&lt;br /&gt;
因为 SPESC 本身只有立约和付款，装不下访问控制和角色派生，CBAC 补这一层&lt;br /&gt;
&lt;br /&gt;
原始 SPESC 格式不能破坏，只能追加：&lt;br /&gt;
&lt;br /&gt;
party / asset / term 原样保留&lt;br /&gt;
&lt;br /&gt;
term 管法律权利义务&lt;br /&gt;
&lt;br /&gt;
access 管访问控制判决&lt;br /&gt;
&lt;br /&gt;
关联：&lt;br /&gt;
&lt;br /&gt;
policy 里的 party / asset 是属性字典，给 access 提供 subject.role、resource.type 这类取值&lt;br /&gt;
&lt;br /&gt;
policySet 里的 request 是统一输入，告诉引擎 subject 对应谁、resource 对应谁&lt;br /&gt;
&lt;br /&gt;
授权/角色派生 SPESC 没有，所以 term 动作带实参，是显式扩展。&lt;br /&gt;
&lt;br /&gt;
term 的授权动作调用先执行，把角色派生结果交给 access 用&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
找到的xacml没有托管合约下的语义，于是Platform 义务按需补，简单例子就只留 party/asset/term/access。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
后续使用：&lt;br /&gt;
&lt;br /&gt;
请求只带 Subid / Objid / Act&lt;br /&gt;
&lt;br /&gt;
授权中心按 sub/obj 找到两份合约&lt;br /&gt;
&lt;br /&gt;
判决引擎只读 access和授权动作调用派生的属性，不读 term 的 must / while / where / breach&lt;br /&gt;
&lt;br /&gt;
term 的付费、分账、违约留给 SPESC 投影&lt;br /&gt;
&lt;br /&gt;
Permit 后生成具体 SPESC，再发 token；资源中心验 token 放行；放行后触发链上具体 SPESC 执行&lt;br /&gt;
&lt;br /&gt;
判决和执行读同一份主文档，但读的部分不同，所以视图一致性用双 AST 检查兜底&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=例1：基础policy，OASIS 规范正式例子的起点=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html#_Toc325047096&lt;br /&gt;
&lt;br /&gt;
语法：单条 Policy + 单条 Rule，Policy 级 Target 为空，Rule 级 Target 用 rfc822Name-match 对请求里的 subject-id 做邮箱域匹配；没有 Condition、Obligation、PolicySet。相比 WSO2 的 string-equal/集合比较，这里第一次出现“带类型的函数语义”（RFC822 邮箱域名匹配）&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Policy&lt;br /&gt;
  xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
  xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
  xsi:schemaLocation=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&lt;br /&gt;
  http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd&amp;quot;&lt;br /&gt;
  PolicyId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:SimplePolicy1&amp;quot;&lt;br /&gt;
  Version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
  RuleCombiningAlgId=&amp;quot;identifier:rule-combining-algorithm:deny-overrides&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Description&amp;gt;&lt;br /&gt;
    Medi Corp access control policy&lt;br /&gt;
  &amp;lt;/Description&amp;gt;&lt;br /&gt;
  &amp;lt;Target/&amp;gt;&lt;br /&gt;
  &amp;lt;Rule&lt;br /&gt;
    RuleId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:SimpleRule1&amp;quot;&lt;br /&gt;
    Effect=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      Any subject with an e-mail name in the med.example.com domain&lt;br /&gt;
      can perform any action on any resource.&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
      &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;AllOf&amp;gt;&lt;br /&gt;
          &amp;lt;Match&lt;br /&gt;
            MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeValue&lt;br /&gt;
              DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&lt;br /&gt;
              &amp;gt;med.example.com&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator&lt;br /&gt;
              MustBePresent=&amp;quot;false&amp;quot;&lt;br /&gt;
              Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
              AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject:subject-id&amp;quot;&lt;br /&gt;
              DataType=&amp;quot;urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/Match&amp;gt;&lt;br /&gt;
        &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
      &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy SimplePolicy1 (deny-overrides) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空（适用于所有请求）&lt;br /&gt;
&lt;br /&gt;
└── Rule SimpleRule1 (Permit)&lt;br /&gt;
&lt;br /&gt;
├── 描述：med.example.com 域内的邮箱主体可以对任意资源执行任意动作&lt;br /&gt;
  &lt;br /&gt;
└── Target: subject-id (rfc822Name) 匹配 &amp;quot;med.example.com&amp;quot;&lt;br /&gt;
==属性表：==&lt;br /&gt;
| `subject-id` | access-subject | `rfc822Name`  |&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;sub&amp;quot;: {&lt;br /&gt;
    &amp;quot;subjectId&amp;quot;: &amp;quot;bart.simpson@med.example.com&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;obj&amp;quot;: {&lt;br /&gt;
    &amp;quot;resourceId&amp;quot;: &amp;quot;file://example/med/record/patient/BartSimpson&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;act&amp;quot;: {&lt;br /&gt;
    &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
==转换版说明：==&lt;br /&gt;
- 原例是单一企业内部访问策略，不是本课题“平台托管双合约”场景。为自圆其说，将其置于“Medi Corp 内部医疗资源平台”语境： &lt;br /&gt;
&lt;br /&gt;
-- Platform 承担身份/角色管理、核心业务授权、安全合规、生命周期治理义务；&lt;br /&gt;
&lt;br /&gt;
- 原 XACML 只有主体域约束，因此本文件只含一份 policy，不强行拆两份合约。 &lt;br /&gt;
&lt;br /&gt;
- 映射：  rfc822Name-match(&amp;quot;med.example.com&amp;quot;, subject-id) -&amp;gt; subject.subjectId endsWith &amp;quot;@med.example.com&amp;quot; &lt;br /&gt;
&lt;br /&gt;
- 原始请求之外需要获取的其它信息：&lt;br /&gt;
==转换版：==&lt;br /&gt;
policySet &amp;quot;OASIS3_5_MediCorpAccess&amp;quot; {&lt;br /&gt;
&lt;br /&gt;
    // CBAC 追加：请求模型（判决引擎统一输入）&lt;br /&gt;
&lt;br /&gt;
    request AuthorizationRequest {&lt;br /&gt;
&lt;br /&gt;
        subject: Subject&lt;br /&gt;
&lt;br /&gt;
        resource: Resource&lt;br /&gt;
&lt;br /&gt;
        action: Action&lt;br /&gt;
&lt;br /&gt;
        environment: Environment&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    combine denyOverrides	        //    XACML 上层组合逻辑&lt;br /&gt;
&lt;br /&gt;
    policy &amp;quot;MediCorpInternalAccess&amp;quot; signedBy [Subject, Platform] {&lt;br /&gt;
&lt;br /&gt;
        party Subject {		        // SPESC 原生参与方 ----&lt;br /&gt;
&lt;br /&gt;
            subjectId: rfc822Name&lt;br /&gt;
&lt;br /&gt;
            name: String&lt;br /&gt;
&lt;br /&gt;
            department: String&lt;br /&gt;
&lt;br /&gt;
            employmentStatus: String&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        party Platform {		 // Platform 的“系统设计义务”，由 SPESC term 声明。&lt;br /&gt;
&lt;br /&gt;
            account: String&lt;br /&gt;
&lt;br /&gt;
            authorize(role: String, subjectId: String)   // 身份/角色管理&lt;br /&gt;
&lt;br /&gt;
            audit(actionId: String, subjectId: String)   // 安全/合规执行&lt;br /&gt;
&lt;br /&gt;
            suspend(subjectId: String)                   // 治理/处罚&lt;br /&gt;
&lt;br /&gt;
            revoke(subjectId: String)                    // 生命周期终止&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // ---- SPESC 原生：资产 ----&lt;br /&gt;
&lt;br /&gt;
        asset Resource {&lt;br /&gt;
&lt;br /&gt;
            info {&lt;br /&gt;
&lt;br /&gt;
                resourceId: String&lt;br /&gt;
&lt;br /&gt;
                resourceType: String&lt;br /&gt;
&lt;br /&gt;
                department: String&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            right { }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // ---- SPESC term：法律/义务声明（不参与 Permit/Deny）---&lt;br /&gt;
&lt;br /&gt;
        // 身份与角色管理：平台有义务为域内用户派生 internal-user 角色&lt;br /&gt;
&lt;br /&gt;
        term IdentityRoleManagement: Platform must authorize(&amp;quot;internal-user&amp;quot;, Subject::subjectId)&lt;br /&gt;
&lt;br /&gt;
            when Subject::subjectId endsWith &amp;quot;@med.example.com&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
        // 安全与合规执行：平台有义务对访问动作审计&lt;br /&gt;
&lt;br /&gt;
        term SecurityComplianceAudit: Platform must audit(action.actionId, Subject::subjectId)&lt;br /&gt;
&lt;br /&gt;
            when action.actionId in [&amp;quot;read&amp;quot;, &amp;quot;download&amp;quot;, &amp;quot;export&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
        // 生命周期治理：员工离岗时平台有义务吊销访问资格&lt;br /&gt;
&lt;br /&gt;
        term LifecycleRevoke: Platform must revoke(Subject::subjectId)&lt;br /&gt;
&lt;br /&gt;
            when Subject::employmentStatus = &amp;quot;terminated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
        combine permitOverrides	//    XACML 下层组合逻辑&lt;br /&gt;
&lt;br /&gt;
        access &amp;quot;AnyMedDomainUserAnyAction&amp;quot; {         // 原始 XACML 规则：域内用户可对任何资源执行任何动作&lt;br /&gt;
&lt;br /&gt;
            target {&lt;br /&gt;
&lt;br /&gt;
                subject.subjectId endsWith &amp;quot;@med.example.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            effect Permit&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        signature { algorithm &amp;quot;ECDSA&amp;quot;; keyId &amp;quot;medi-subject-template-001&amp;quot;; digest &amp;quot;sha256:...&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
        signature { algorithm &amp;quot;ECDSA&amp;quot;; keyId &amp;quot;medi-platform-001&amp;quot;; digest &amp;quot;sha256:...&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
=例2：rbac组合=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html#_Toc325047096	语法：单条 Policy + 单条 Rule，Policy 级 Target 为空，Rule 级 Target 用 rfc822Name-match 对请求里的 subject-id 做邮箱域匹配；没有 Condition、Obligation、PolicySet。相比 WSO2 的 string-equal/集合比较，这里第一次出现“带类型的函数语义”（RFC822 邮箱域名匹配）&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot; PolicyId=&amp;quot;testOr&amp;quot; RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot; Version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Description&amp;gt;Test Or&amp;lt;/Description&amp;gt;&lt;br /&gt;
   &amp;lt;Target&amp;gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-group-emps-rule&amp;quot;&amp;gt;  //Rule1：read + 组命中 admin_emps/admin → 保护接口&lt;br /&gt;
      &amp;lt;Target&amp;gt;&lt;br /&gt;
         &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
               &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;read&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:action:action-id&amp;quot; Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:action&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
         &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
      &amp;lt;/Target&amp;gt;&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;group&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:group&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin_emps&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-user-rule&amp;quot;&amp;gt;  //Rule2：公开版本接口，任何用户&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:resource:resource-id&amp;quot; Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Deny&amp;quot; RuleId=&amp;quot;deny-rule&amp;quot;&amp;gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy (组合: first-applicable) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空 &lt;br /&gt;
&lt;br /&gt;
├── Rule1 (Permit) &lt;br /&gt;
&lt;br /&gt;
│   ├── Target: action-id = read  &lt;br /&gt;
&lt;br /&gt;
│    └── Condition: group 属性 (类别 group)与 {admin_emps, admin} 有交集&lt;br /&gt;
&lt;br /&gt;
├── Rule2 (Permit) &lt;br /&gt;
&lt;br /&gt;
│ ├── Target: 无 &lt;br /&gt;
&lt;br /&gt;
│ └── Condition: resource-id 与 {http://localhost:8280/services/Customers/getVersion1, http://localhost:8280/services/Customers/getVersion2} 有交集 &lt;br /&gt;
&lt;br /&gt;
└── Rule3 (Deny) 兜底&lt;br /&gt;
==属性表：==&lt;br /&gt;
| `action-id`   | `action`          | string | &lt;br /&gt;
&lt;br /&gt;
| `group`       | `group`           | string |&lt;br /&gt;
&lt;br /&gt;
| `resource-id` | `resource`        | string |&lt;br /&gt;
==原始请求等效json： ==&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;sub&amp;quot;: {&lt;br /&gt;
    &amp;quot;subjectId&amp;quot;: &amp;quot;alice&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&amp;quot;admin&amp;quot;]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;obj&amp;quot;: {&lt;br /&gt;
    &amp;quot;resourceId&amp;quot;: &amp;quot;http://localhost:8280/services/Customers/getVersion1&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;act&amp;quot;: {&lt;br /&gt;
    &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
==转换版说明：==&lt;br /&gt;
把原策略的 3 条 Rule 直接翻成 3 条 access，没有加任何 Platform 义务&lt;br /&gt;
==转换版：==&lt;br /&gt;
policySet &amp;quot;WSO2_Sample6_TestOr&amp;quot; {&lt;br /&gt;
    request AuthorizationRequest {&lt;br /&gt;
        subject: Subject&lt;br /&gt;
        resource: Resource&lt;br /&gt;
        action: Action&lt;br /&gt;
        environment: Environment&lt;br /&gt;
    }&lt;br /&gt;
    type Action {&lt;br /&gt;
        actionId: string&lt;br /&gt;
    }&lt;br /&gt;
    type Environment {&lt;br /&gt;
        currentTime: dateTime&lt;br /&gt;
    }&lt;br /&gt;
    combine firstApplicable&lt;br /&gt;
    policy &amp;quot;testOr&amp;quot; {&lt;br /&gt;
        party Subject {&lt;br /&gt;
            subjectId: string&lt;br /&gt;
            groups: string[]              // 原 XACML 的 group category&lt;br /&gt;
            readResource()                // 动作声明&lt;br /&gt;
        }&lt;br /&gt;
        asset Resource {&lt;br /&gt;
            info {&lt;br /&gt;
                resourceId: string&lt;br /&gt;
            }&lt;br /&gt;
            right { }&lt;br /&gt;
        }&lt;br /&gt;
        term PublicVersionRead: Subject can readResource&lt;br /&gt;
            when Resource::resourceId in [&lt;br /&gt;
                &amp;quot;http://localhost:8280/services/Customers/getVersion1&amp;quot;,&lt;br /&gt;
                &amp;quot;http://localhost:8280/services/Customers/getVersion2&amp;quot;&lt;br /&gt;
            ].&lt;br /&gt;
        combine firstApplicable&lt;br /&gt;
        access &amp;quot;PrimaryGroupEmpsRule&amp;quot; {&lt;br /&gt;
            target {&lt;br /&gt;
                action.actionId = &amp;quot;read&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
            condition {&lt;br /&gt;
                some g in subject.groups&lt;br /&gt;
                    such that g in [&amp;quot;admin_emps&amp;quot;, &amp;quot;admin&amp;quot;]&lt;br /&gt;
            }&lt;br /&gt;
            effect Permit&lt;br /&gt;
        }&lt;br /&gt;
        access &amp;quot;PrimaryUserRule&amp;quot; {&lt;br /&gt;
            condition {&lt;br /&gt;
                resource.resourceId in [&lt;br /&gt;
                    &amp;quot;http://localhost:8280/services/Customers/getVersion1&amp;quot;,&lt;br /&gt;
                    &amp;quot;http://localhost:8280/services/Customers/getVersion2&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
            effect Permit&lt;br /&gt;
        }&lt;br /&gt;
        access &amp;quot;DenyRule&amp;quot; {&lt;br /&gt;
            effect Deny&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=538</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=538"/>
		<updated>2026-08-30T22:58:04Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿﻿&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;bf1c03a2d44cfeb75e2c20c883f923ab8538d29f&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T22:31:17.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]&amp;lt;title&amp;gt;CBAC&amp;lt;/title&amp;gt;&amp;lt;base href=&amp;quot;https://www.smartlegalcontract.cn/mediawiki/index.php/&amp;quot; /&amp;gt;[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&amp;lt;!--[if lt IE 9]&amp;gt;&amp;lt;script src=&amp;quot;/mediawiki/load.php?modules=html5shiv&amp;amp;only=scripts&amp;amp;skin=vector&amp;amp;sync=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script&amp;gt;html5.addElements('figure-inline');&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
﻿﻿&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;ecb6fc1a18535197780f8c3448dcf9329df00611&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T19:12:37.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]&amp;lt;title&amp;gt;CBAC&amp;lt;/title&amp;gt;&amp;lt;base href=&amp;quot;https://www.smartlegalcontract.cn/mediawiki/index.php/&amp;quot; /&amp;gt;[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&amp;lt;!--[if lt IE 9]&amp;gt;&amp;lt;script src=&amp;quot;/mediawiki/load.php?modules=html5shiv&amp;amp;only=scripts&amp;amp;skin=vector&amp;amp;sync=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script&amp;gt;html5.addElements('figure-inline');&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=例1：基础policy，OASIS 规范正式例子的起点=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html#_Toc325047096&lt;br /&gt;
&lt;br /&gt;
语法：单条 Policy + 单条 Rule，Policy 级 Target 为空，Rule 级 Target 用 rfc822Name-match 对请求里的 subject-id 做邮箱域匹配；没有 Condition、Obligation、PolicySet。相比 WSO2 的 string-equal/集合比较，这里第一次出现“带类型的函数语义”（RFC822 邮箱域名匹配）&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Policy&lt;br /&gt;
  xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
  xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
  xsi:schemaLocation=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&lt;br /&gt;
  http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd&amp;quot;&lt;br /&gt;
  PolicyId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:SimplePolicy1&amp;quot;&lt;br /&gt;
  Version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
  RuleCombiningAlgId=&amp;quot;identifier:rule-combining-algorithm:deny-overrides&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Description&amp;gt;&lt;br /&gt;
    Medi Corp access control policy&lt;br /&gt;
  &amp;lt;/Description&amp;gt;&lt;br /&gt;
  &amp;lt;Target/&amp;gt;&lt;br /&gt;
  &amp;lt;Rule&lt;br /&gt;
    RuleId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:SimpleRule1&amp;quot;&lt;br /&gt;
    Effect=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      Any subject with an e-mail name in the med.example.com domain&lt;br /&gt;
      can perform any action on any resource.&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
      &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;AllOf&amp;gt;&lt;br /&gt;
          &amp;lt;Match&lt;br /&gt;
            MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeValue&lt;br /&gt;
              DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&lt;br /&gt;
              &amp;gt;med.example.com&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator&lt;br /&gt;
              MustBePresent=&amp;quot;false&amp;quot;&lt;br /&gt;
              Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
              AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject:subject-id&amp;quot;&lt;br /&gt;
              DataType=&amp;quot;urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/Match&amp;gt;&lt;br /&gt;
        &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
      &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy SimplePolicy1 (deny-overrides) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空（适用于所有请求）&lt;br /&gt;
&lt;br /&gt;
└── Rule SimpleRule1 (Permit)&lt;br /&gt;
&lt;br /&gt;
├── 描述：med.example.com 域内的邮箱主体可以对任意资源执行任意动作&lt;br /&gt;
  &lt;br /&gt;
└── Target: subject-id (rfc822Name) 匹配 &amp;quot;med.example.com&amp;quot;&lt;br /&gt;
==属性表：==&lt;br /&gt;
| `subject-id` | access-subject | `rfc822Name`  |&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;sub&amp;quot;: {&lt;br /&gt;
    &amp;quot;subjectId&amp;quot;: &amp;quot;bart.simpson@med.example.com&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;obj&amp;quot;: {&lt;br /&gt;
    &amp;quot;resourceId&amp;quot;: &amp;quot;file://example/med/record/patient/BartSimpson&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;act&amp;quot;: {&lt;br /&gt;
    &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
==转换版说明：==&lt;br /&gt;
- 原例是单一企业内部访问策略，不是本课题“平台托管双合约”场景。为自圆其说，将其置于“Medi Corp 内部医疗资源平台”语境： &lt;br /&gt;
&lt;br /&gt;
-- Platform 承担身份/角色管理、核心业务授权、安全合规、生命周期治理义务；&lt;br /&gt;
&lt;br /&gt;
- 原 XACML 只有主体域约束，因此本文件只含一份 policy，不强行拆两份合约。 &lt;br /&gt;
&lt;br /&gt;
- 映射：  rfc822Name-match(&amp;quot;med.example.com&amp;quot;, subject-id) -&amp;gt; subject.subjectId endsWith &amp;quot;@med.example.com&amp;quot; &lt;br /&gt;
&lt;br /&gt;
- 原始请求之外需要获取的其它信息：&lt;br /&gt;
==转换版：==&lt;br /&gt;
policySet &amp;quot;OASIS3_5_MediCorpAccess&amp;quot; {&lt;br /&gt;
&lt;br /&gt;
    // CBAC 追加：请求模型（判决引擎统一输入）&lt;br /&gt;
&lt;br /&gt;
    request AuthorizationRequest {&lt;br /&gt;
&lt;br /&gt;
        subject: Subject&lt;br /&gt;
&lt;br /&gt;
        resource: Resource&lt;br /&gt;
&lt;br /&gt;
        action: Action&lt;br /&gt;
&lt;br /&gt;
        environment: Environment&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    combine denyOverrides	        //    XACML 上层组合逻辑&lt;br /&gt;
&lt;br /&gt;
    policy &amp;quot;MediCorpInternalAccess&amp;quot; signedBy [Subject, Platform] {&lt;br /&gt;
&lt;br /&gt;
        party Subject {		        // SPESC 原生参与方 ----&lt;br /&gt;
&lt;br /&gt;
            subjectId: rfc822Name&lt;br /&gt;
&lt;br /&gt;
            name: String&lt;br /&gt;
&lt;br /&gt;
            department: String&lt;br /&gt;
&lt;br /&gt;
            employmentStatus: String&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        party Platform {		 // Platform 的“系统设计义务”，由 SPESC term 声明。&lt;br /&gt;
&lt;br /&gt;
            account: String&lt;br /&gt;
&lt;br /&gt;
            authorize(role: String, subjectId: String)   // 身份/角色管理&lt;br /&gt;
&lt;br /&gt;
            audit(actionId: String, subjectId: String)   // 安全/合规执行&lt;br /&gt;
&lt;br /&gt;
            suspend(subjectId: String)                   // 治理/处罚&lt;br /&gt;
&lt;br /&gt;
            revoke(subjectId: String)                    // 生命周期终止&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // ---- SPESC 原生：资产 ----&lt;br /&gt;
&lt;br /&gt;
        asset Resource {&lt;br /&gt;
&lt;br /&gt;
            info {&lt;br /&gt;
&lt;br /&gt;
                resourceId: String&lt;br /&gt;
&lt;br /&gt;
                resourceType: String&lt;br /&gt;
&lt;br /&gt;
                department: String&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            right { }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // ---- SPESC term：法律/义务声明（不参与 Permit/Deny）---&lt;br /&gt;
&lt;br /&gt;
        // 身份与角色管理：平台有义务为域内用户派生 internal-user 角色&lt;br /&gt;
&lt;br /&gt;
        term IdentityRoleManagement: Platform must authorize(&amp;quot;internal-user&amp;quot;, Subject::subjectId)&lt;br /&gt;
&lt;br /&gt;
            when Subject::subjectId endsWith &amp;quot;@med.example.com&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
        // 安全与合规执行：平台有义务对访问动作审计&lt;br /&gt;
&lt;br /&gt;
        term SecurityComplianceAudit: Platform must audit(action.actionId, Subject::subjectId)&lt;br /&gt;
&lt;br /&gt;
            when action.actionId in [&amp;quot;read&amp;quot;, &amp;quot;download&amp;quot;, &amp;quot;export&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
        // 生命周期治理：员工离岗时平台有义务吊销访问资格&lt;br /&gt;
&lt;br /&gt;
        term LifecycleRevoke: Platform must revoke(Subject::subjectId)&lt;br /&gt;
&lt;br /&gt;
            when Subject::employmentStatus = &amp;quot;terminated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
        combine permitOverrides	//    XACML 下层组合逻辑&lt;br /&gt;
&lt;br /&gt;
        access &amp;quot;AnyMedDomainUserAnyAction&amp;quot; {         // 原始 XACML 规则：域内用户可对任何资源执行任何动作&lt;br /&gt;
&lt;br /&gt;
            target {&lt;br /&gt;
&lt;br /&gt;
                subject.subjectId endsWith &amp;quot;@med.example.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            effect Permit&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        signature { algorithm &amp;quot;ECDSA&amp;quot;; keyId &amp;quot;medi-subject-template-001&amp;quot;; digest &amp;quot;sha256:...&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
        signature { algorithm &amp;quot;ECDSA&amp;quot;; keyId &amp;quot;medi-platform-001&amp;quot;; digest &amp;quot;sha256:...&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
=例2：rbac组合=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html#_Toc325047096	语法：单条 Policy + 单条 Rule，Policy 级 Target 为空，Rule 级 Target 用 rfc822Name-match 对请求里的 subject-id 做邮箱域匹配；没有 Condition、Obligation、PolicySet。相比 WSO2 的 string-equal/集合比较，这里第一次出现“带类型的函数语义”（RFC822 邮箱域名匹配）&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Policy xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot; PolicyId=&amp;quot;testOr&amp;quot; RuleCombiningAlgId=&amp;quot;urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable&amp;quot; Version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Description&amp;gt;Test Or&amp;lt;/Description&amp;gt;&lt;br /&gt;
   &amp;lt;Target&amp;gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-group-emps-rule&amp;quot;&amp;gt;  //Rule1：read + 组命中 admin_emps/admin → 保护接口&lt;br /&gt;
      &amp;lt;Target&amp;gt;&lt;br /&gt;
         &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
            &amp;lt;AllOf&amp;gt;&lt;br /&gt;
               &amp;lt;Match MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-equal&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;read&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
                  &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:action:action-id&amp;quot; Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:action&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/Match&amp;gt;&lt;br /&gt;
            &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
         &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
      &amp;lt;/Target&amp;gt;&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;group&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:group&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin_emps&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;admin&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Permit&amp;quot; RuleId=&amp;quot;primary-user-rule&amp;quot;&amp;gt;  //Rule2：公开版本接口，任何用户&lt;br /&gt;
      &amp;lt;Condition&amp;gt;&lt;br /&gt;
         &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:resource:resource-id&amp;quot; Category=&amp;quot;urn:oasis:names:tc:xacml:3.0:attribute-category:resource&amp;quot; DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot; MustBePresent=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Apply FunctionId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:string-bag&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion1&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
               &amp;lt;AttributeValue DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&amp;gt;http://localhost:8280/services/Customers/getVersion2&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;/Apply&amp;gt;&lt;br /&gt;
         &amp;lt;/Apply&amp;gt;&lt;br /&gt;
      &amp;lt;/Condition&amp;gt;&lt;br /&gt;
   &amp;lt;/Rule&amp;gt;&lt;br /&gt;
   &amp;lt;Rule Effect=&amp;quot;Deny&amp;quot; RuleId=&amp;quot;deny-rule&amp;quot;&amp;gt;&amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy (组合: first-applicable) &lt;br /&gt;
&lt;br /&gt;
├── Target = 空 &lt;br /&gt;
&lt;br /&gt;
├── Rule1 (Permit) &lt;br /&gt;
&lt;br /&gt;
│   ├── Target: action-id = read  &lt;br /&gt;
&lt;br /&gt;
│    └── Condition: group 属性 (类别 group)与 {admin_emps, admin} 有交集&lt;br /&gt;
&lt;br /&gt;
├── Rule2 (Permit) &lt;br /&gt;
&lt;br /&gt;
│ ├── Target: 无 &lt;br /&gt;
&lt;br /&gt;
│ └── Condition: resource-id 与 {http://localhost:8280/services/Customers/getVersion1, http://localhost:8280/services/Customers/getVersion2} 有交集 &lt;br /&gt;
&lt;br /&gt;
└── Rule3 (Deny) 兜底&lt;br /&gt;
==属性表：==&lt;br /&gt;
| `action-id`   | `action`          | string | &lt;br /&gt;
&lt;br /&gt;
| `group`       | `group`           | string |&lt;br /&gt;
&lt;br /&gt;
| `resource-id` | `resource`        | string |&lt;br /&gt;
==原始请求等效json： ==&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;sub&amp;quot;: {&lt;br /&gt;
    &amp;quot;subjectId&amp;quot;: &amp;quot;alice&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&amp;quot;admin&amp;quot;]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;obj&amp;quot;: {&lt;br /&gt;
    &amp;quot;resourceId&amp;quot;: &amp;quot;http://localhost:8280/services/Customers/getVersion1&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;act&amp;quot;: {&lt;br /&gt;
    &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
==转换版说明：==&lt;br /&gt;
把原策略的 3 条 Rule 直接翻成 3 条 access，没有加任何 Platform 义务&lt;br /&gt;
==转换版：==&lt;br /&gt;
policySet &amp;quot;WSO2_Sample6_TestOr&amp;quot; {&lt;br /&gt;
    request AuthorizationRequest {&lt;br /&gt;
        subject: Subject&lt;br /&gt;
        resource: Resource&lt;br /&gt;
        action: Action&lt;br /&gt;
        environment: Environment&lt;br /&gt;
    }&lt;br /&gt;
    type Action {&lt;br /&gt;
        actionId: string&lt;br /&gt;
    }&lt;br /&gt;
    type Environment {&lt;br /&gt;
        currentTime: dateTime&lt;br /&gt;
    }&lt;br /&gt;
    combine firstApplicable&lt;br /&gt;
    policy &amp;quot;testOr&amp;quot; {&lt;br /&gt;
        party Subject {&lt;br /&gt;
            subjectId: string&lt;br /&gt;
            groups: string[]              // 原 XACML 的 group category&lt;br /&gt;
            readResource()                // 动作声明&lt;br /&gt;
        }&lt;br /&gt;
        asset Resource {&lt;br /&gt;
            info {&lt;br /&gt;
                resourceId: string&lt;br /&gt;
            }&lt;br /&gt;
            right { }&lt;br /&gt;
        }&lt;br /&gt;
        term PublicVersionRead: Subject can readResource&lt;br /&gt;
            when Resource::resourceId in [&lt;br /&gt;
                &amp;quot;http://localhost:8280/services/Customers/getVersion1&amp;quot;,&lt;br /&gt;
                &amp;quot;http://localhost:8280/services/Customers/getVersion2&amp;quot;&lt;br /&gt;
            ].&lt;br /&gt;
        combine firstApplicable&lt;br /&gt;
        access &amp;quot;PrimaryGroupEmpsRule&amp;quot; {&lt;br /&gt;
            target {&lt;br /&gt;
                action.actionId = &amp;quot;read&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
            condition {&lt;br /&gt;
                some g in subject.groups&lt;br /&gt;
                    such that g in [&amp;quot;admin_emps&amp;quot;, &amp;quot;admin&amp;quot;]&lt;br /&gt;
            }&lt;br /&gt;
            effect Permit&lt;br /&gt;
        }&lt;br /&gt;
        access &amp;quot;PrimaryUserRule&amp;quot; {&lt;br /&gt;
            condition {&lt;br /&gt;
                resource.resourceId in [&lt;br /&gt;
                    &amp;quot;http://localhost:8280/services/Customers/getVersion1&amp;quot;,&lt;br /&gt;
                    &amp;quot;http://localhost:8280/services/Customers/getVersion2&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
            effect Permit&lt;br /&gt;
        }&lt;br /&gt;
        access &amp;quot;DenyRule&amp;quot; {&lt;br /&gt;
            effect Deny&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=537</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=537"/>
		<updated>2026-08-30T22:31:17Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿﻿&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;ecb6fc1a18535197780f8c3448dcf9329df00611&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T19:12:37.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]&amp;lt;title&amp;gt;CBAC&amp;lt;/title&amp;gt;&amp;lt;base href=&amp;quot;https://www.smartlegalcontract.cn/mediawiki/index.php/&amp;quot; /&amp;gt;[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles%7Cext.pygments&amp;amp;only=styles&amp;amp;skin=vector]&amp;lt;!--[if lt IE 9]&amp;gt;&amp;lt;script src=&amp;quot;/mediawiki/load.php?modules=html5shiv&amp;amp;only=scripts&amp;amp;skin=vector&amp;amp;sync=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script&amp;gt;html5.addElements('figure-inline');&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
&lt;br /&gt;
=例1：基础policy，OASIS 规范正式例子的起点=&lt;br /&gt;
来源：https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html#_Toc325047096&lt;br /&gt;
&lt;br /&gt;
语法：单条 Policy + 单条 Rule，Policy 级 Target 为空，Rule 级 Target 用 rfc822Name-match 对请求里的 subject-id 做邮箱域匹配；没有 Condition、Obligation、PolicySet。相比 WSO2 的 string-equal/集合比较，这里第一次出现“带类型的函数语义”（RFC822 邮箱域名匹配）&lt;br /&gt;
==原文：==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Policy&lt;br /&gt;
  xmlns=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&amp;quot;&lt;br /&gt;
  xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
  xsi:schemaLocation=&amp;quot;urn:oasis:names:tc:xacml:3.0:core:schema:wd-17&lt;br /&gt;
  http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd&amp;quot;&lt;br /&gt;
  PolicyId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:SimplePolicy1&amp;quot;&lt;br /&gt;
  Version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
  RuleCombiningAlgId=&amp;quot;identifier:rule-combining-algorithm:deny-overrides&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Description&amp;gt;&lt;br /&gt;
    Medi Corp access control policy&lt;br /&gt;
  &amp;lt;/Description&amp;gt;&lt;br /&gt;
  &amp;lt;Target/&amp;gt;&lt;br /&gt;
  &amp;lt;Rule&lt;br /&gt;
    RuleId=&amp;quot;urn:oasis:names:tc:xacml:3.0:example:SimpleRule1&amp;quot;&lt;br /&gt;
    Effect=&amp;quot;Permit&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;&lt;br /&gt;
      Any subject with an e-mail name in the med.example.com domain&lt;br /&gt;
      can perform any action on any resource.&lt;br /&gt;
    &amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;Target&amp;gt;&lt;br /&gt;
      &amp;lt;AnyOf&amp;gt;&lt;br /&gt;
        &amp;lt;AllOf&amp;gt;&lt;br /&gt;
          &amp;lt;Match&lt;br /&gt;
            MatchId=&amp;quot;urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeValue&lt;br /&gt;
              DataType=&amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&lt;br /&gt;
              &amp;gt;med.example.com&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
            &amp;lt;AttributeDesignator&lt;br /&gt;
              MustBePresent=&amp;quot;false&amp;quot;&lt;br /&gt;
              Category=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject-category:access-subject&amp;quot;&lt;br /&gt;
              AttributeId=&amp;quot;urn:oasis:names:tc:xacml:1.0:subject:subject-id&amp;quot;&lt;br /&gt;
              DataType=&amp;quot;urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/Match&amp;gt;&lt;br /&gt;
        &amp;lt;/AllOf&amp;gt;&lt;br /&gt;
      &amp;lt;/AnyOf&amp;gt;&lt;br /&gt;
    &amp;lt;/Target&amp;gt;&lt;br /&gt;
  &amp;lt;/Rule&amp;gt;&lt;br /&gt;
&amp;lt;/Policy&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==逻辑结构：==&lt;br /&gt;
Policy SimplePolicy1 (deny-overrides) ├── Target = 空（适用于所有请求） └── Rule SimpleRule1 (Permit)&lt;br /&gt;
    ├── 描述：med.example.com 域内的邮箱主体可以对任意资源执行任意动作&lt;br /&gt;
    └── Target: subject-id (rfc822Name) 匹配 &amp;quot;med.example.com&amp;quot;&lt;br /&gt;
==属性表：==&lt;br /&gt;
（ AttributeId    |    Category    |   DataType    |   MustBePresent    |   含义    ）&lt;br /&gt;
&lt;br /&gt;
| `subject-id` | access-subject | `rfc822Name` | false | 主体邮箱/标识；用于判断是否属于 `med.example.com` 域 |&lt;br /&gt;
&lt;br /&gt;
==原始请求等效json：==&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;sub&amp;quot;: {&lt;br /&gt;
    &amp;quot;subjectId&amp;quot;: &amp;quot;bart.simpson@med.example.com&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;obj&amp;quot;: {&lt;br /&gt;
    &amp;quot;resourceId&amp;quot;: &amp;quot;file://example/med/record/patient/BartSimpson&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;act&amp;quot;: {&lt;br /&gt;
    &amp;quot;actionId&amp;quot;: &amp;quot;read&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
==转换版说明：==&lt;br /&gt;
- 原例是单一企业内部访问策略，不是本课题“平台托管双合约”场景。为自圆其说，将其置于“Medi Corp 内部医疗资源平台”语境： &lt;br /&gt;
&lt;br /&gt;
-- Platform 承担身份/角色管理、核心业务授权、安全合规、生命周期治理义务；&lt;br /&gt;
&lt;br /&gt;
- 原 XACML 只有主体域约束，因此本文件只含一份 policy，不强行拆两份合约。 &lt;br /&gt;
&lt;br /&gt;
- 映射：  rfc822Name-match(&amp;quot;med.example.com&amp;quot;, subject-id) -&amp;gt; subject.subjectId endsWith &amp;quot;@med.example.com&amp;quot; &lt;br /&gt;
&lt;br /&gt;
- 原始请求之外需要获取的其它信息：&lt;br /&gt;
==转换版：==&lt;br /&gt;
policySet &amp;quot;OASIS3_5_MediCorpAccess&amp;quot; {&lt;br /&gt;
    // CBAC 追加：请求模型（判决引擎统一输入）&lt;br /&gt;
    request AuthorizationRequest {&lt;br /&gt;
        subject: Subject&lt;br /&gt;
        resource: Resource&lt;br /&gt;
        action: Action&lt;br /&gt;
        environment: Environment&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    combine denyOverrides	        //    XACML 上层组合逻辑&lt;br /&gt;
&lt;br /&gt;
    policy &amp;quot;MediCorpInternalAccess&amp;quot; signedBy [Subject, Platform] {&lt;br /&gt;
&lt;br /&gt;
        party Subject {		        // SPESC 原生参与方 ----&lt;br /&gt;
            subjectId: rfc822Name&lt;br /&gt;
            name: String&lt;br /&gt;
            department: String&lt;br /&gt;
            employmentStatus: String&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        party Platform {		 // Platform 的“系统设计义务”，由 SPESC term 声明。&lt;br /&gt;
            account: String&lt;br /&gt;
            authorize(role: String, subjectId: String)   // 身份/角色管理&lt;br /&gt;
            audit(actionId: String, subjectId: String)   // 安全/合规执行&lt;br /&gt;
            suspend(subjectId: String)                   // 治理/处罚&lt;br /&gt;
            revoke(subjectId: String)                    // 生命周期终止&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // ---- SPESC 原生：资产 ----&lt;br /&gt;
        asset Resource {&lt;br /&gt;
            info {&lt;br /&gt;
                resourceId: String&lt;br /&gt;
                resourceType: String&lt;br /&gt;
                department: String&lt;br /&gt;
            }&lt;br /&gt;
            right { }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // ---- SPESC term：法律/义务声明（不参与 Permit/Deny）----&lt;br /&gt;
&lt;br /&gt;
        // 身份与角色管理：平台有义务为域内用户派生 internal-user 角色&lt;br /&gt;
        term IdentityRoleManagement: Platform must authorize(&amp;quot;internal-user&amp;quot;, Subject::subjectId)&lt;br /&gt;
            when Subject::subjectId endsWith &amp;quot;@med.example.com&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
        // 安全与合规执行：平台有义务对访问动作审计&lt;br /&gt;
        term SecurityComplianceAudit: Platform must audit(action.actionId, Subject::subjectId)&lt;br /&gt;
            when action.actionId in [&amp;quot;read&amp;quot;, &amp;quot;download&amp;quot;, &amp;quot;export&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
        // 生命周期治理：员工离岗时平台有义务吊销访问资格&lt;br /&gt;
        term LifecycleRevoke: Platform must revoke(Subject::subjectId)&lt;br /&gt;
            when Subject::employmentStatus = &amp;quot;terminated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
        combine permitOverrides	//    XACML 下层组合逻辑&lt;br /&gt;
&lt;br /&gt;
        access &amp;quot;AnyMedDomainUserAnyAction&amp;quot; {         // 原始 XACML 规则：域内用户可对任何资源执行任何动作&lt;br /&gt;
            target {&lt;br /&gt;
                subject.subjectId endsWith &amp;quot;@med.example.com&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
            effect Permit&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        signature { algorithm &amp;quot;ECDSA&amp;quot;; keyId &amp;quot;medi-subject-template-001&amp;quot;; digest &amp;quot;sha256:...&amp;quot; }&lt;br /&gt;
        signature { algorithm &amp;quot;ECDSA&amp;quot;; keyId &amp;quot;medi-platform-001&amp;quot;; digest &amp;quot;sha256:...&amp;quot; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=536</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=536"/>
		<updated>2026-08-30T19:12:37Z</updated>

		<summary type="html">&lt;p&gt;20260503：测试语法&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿﻿&lt;br /&gt;
&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageId&amp;quot; content=&amp;quot;75&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:pageNamespace&amp;quot; content=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:revisionSHA1&amp;quot; content=&amp;quot;d5c6fed429426e4ae33ec0957e81d991bd027bbc&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;dc:modified&amp;quot; content=&amp;quot;2026-08-30T19:06:42.000Z&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta property=&amp;quot;mw:html:version&amp;quot; content=&amp;quot;2.1.0&amp;quot; /&amp;gt;&lt;br /&gt;
[https://www.smartlegalcontract.cn/mediawiki/index.php/CBAC]&amp;lt;title&amp;gt;CBAC&amp;lt;/title&amp;gt;&amp;lt;base href=&amp;quot;https://www.smartlegalcontract.cn/mediawiki/index.php/&amp;quot; /&amp;gt;[/mediawiki/load.php?modules=mediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles%7Cmediawiki.page.gallery.styles%7Cext.cite.style%7Cext.cite.styles&amp;amp;only=styles&amp;amp;skin=vector]&amp;lt;!--[if lt IE 9]&amp;gt;&amp;lt;script src=&amp;quot;/mediawiki/load.php?modules=html5shiv&amp;amp;only=scripts&amp;amp;skin=vector&amp;amp;sync=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script&amp;gt;html5.addElements('figure-inline');&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-language&amp;quot; content=&amp;quot;zh-cn&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;vary&amp;quot; content=&amp;quot;Accept&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 一级标题：项目总览=&lt;br /&gt;
==二级标题：技术架构==&lt;br /&gt;
===三级标题：配置文件示例===&lt;br /&gt;
下面是系统的核心配置文件：&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
  &amp;lt;server&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;8080&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;
  &amp;lt;/server&amp;gt;&lt;br /&gt;
  &amp;lt;database&amp;gt;&lt;br /&gt;
    &amp;lt;driver&amp;gt;mysql&amp;lt;/driver&amp;gt;&lt;br /&gt;
    &amp;lt;url&amp;gt;jdbc:mysql://localhost:3306/myapp&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;root&amp;lt;/username&amp;gt;&lt;br /&gt;
  &amp;lt;/database&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=535</id>
		<title>CBAC</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=CBAC&amp;diff=535"/>
		<updated>2026-08-30T19:06:42Z</updated>

		<summary type="html">&lt;p&gt;20260503：建立内容为“* 导航栏一级标题 ** 页面名称|显示的文字 ** 另一个页面|另一个显示名 * 另一个一级标题 ** ...”的新页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* 导航栏一级标题&lt;br /&gt;
** 页面名称|显示的文字&lt;br /&gt;
** 另一个页面|另一个显示名&lt;br /&gt;
* 另一个一级标题&lt;br /&gt;
** ...&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=MediaWiki:Sidebar&amp;diff=533</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=MediaWiki:Sidebar&amp;diff=533"/>
		<updated>2026-05-05T09:26:25Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* 导航&lt;br /&gt;
** http://39.106.77.250:8090/index.html|crypto202&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|智能合约&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** SPESC|SPESC&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* 语言&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/%E5%8C%BA%E5%9D%97%E9%93%BE%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E5%BD%A2%E5%BC%8F%E5%8C%96%E8%A1%A8%E8%BE%BE|智能法律合约&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/T/CIE_095-2020|Smart Legal Contract&lt;br /&gt;
* 应用&lt;br /&gt;
**http://123.56.246.148:8080/ |公益遗嘱链&lt;br /&gt;
**http://www.smartlegalcontract.cn:8881/ |计算管理平台&lt;br /&gt;
**https://api.smartlegalcontract.cn/web/index.html |首农畜牧&lt;br /&gt;
*样例&lt;br /&gt;
**https://www.smartlegalcontract.cn/mediawiki/index.php/Examples|智能法律合约样例&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
	<entry>
		<id>https://www.smartlegalcontract.cn/mediawiki/index.php?title=MediaWiki:Sidebar&amp;diff=532</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.smartlegalcontract.cn/mediawiki/index.php?title=MediaWiki:Sidebar&amp;diff=532"/>
		<updated>2026-05-03T09:46:31Z</updated>

		<summary type="html">&lt;p&gt;20260503：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* 导航&lt;br /&gt;
** http://39.106.77.250:8090/index.html|crypto202&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|智能合约&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** SPESC|SPESC&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* 语言&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/%E5%8C%BA%E5%9D%97%E9%93%BE%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E5%BD%A2%E5%BC%8F%E5%8C%96%E8%A1%A8%E8%BE%BE|智能法律合约&lt;br /&gt;
** https://www.smartlegalcontract.cn/mediawiki/index.php/T/CIE_095-2020|Smart Legal Contract&lt;br /&gt;
* 应用&lt;br /&gt;
**http://123.56.246.148:8080/ |公益遗嘱链&lt;br /&gt;
**http://www.smartlegalcontract.cn:8881/ |计算管理平台&lt;br /&gt;
*样例&lt;br /&gt;
**https://www.smartlegalcontract.cn/mediawiki/index.php/Examples|智能法律合约样例&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>20260503</name></author>
	</entry>
</feed>