1
<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
    PolicyId="ClientType"
    RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable"
    Version="1.0">
<Target>
<AnyOf>
            <AllOf>
                <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Reply</AttributeValue>
                    <AttributeDesignator
                        AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
                        Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"
                        DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
                </Match>
            </AllOf>
        </AnyOf>
    </Target>

    <Rule Effect="Permit" RuleId="Rule_for_all">
        <Target>
            <AnyOf>
                <AllOf>
                    <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">A</AttributeValue>
                        <AttributeDesignator AttributeId="Reply"
                            Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
                            DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
                    </Match>
                </AllOf>
            </AnyOf>
        </Target>
    </Rule>
    <Rule Effect="deny" RuleId="Rule_deny_all" />
</Policy>

JAXB を使用してこの xml を非整列化するのを手伝ってください。やってみましたが、途中で混乱してエラーが発生しました。非常に大きな xml ファイルがありますが、このフラグメントは理解に役立ちます。

4

1 に答える 1

2

送信したフラグメントは、実際には不完全な XML フラグメントです。</Policy>たとえば、最後の要素が欠けています。

送信したフラグメントは、XACML 3.0 ポリシーに対応しています。これは、ポリシーを閉じる前に、1 つ以上のルールも必要であることを意味します (技術的には、スキーマはゼロのルールを許可しますが、それは意味がありません)。

JAX-B を使用してマーシャリングおよびアンマーシャリングするには、ここにある XACML 3.0 スキーマを使用する必要があります。そのスキーマに基づいて Java オブジェクトを作成するように JAXB を構成するのは非常に簡単です。マーシャリングを構成するには、単純な XJB ファイルを作成する必要があります。

とはいえ、いくつかの XACML エンジン (オープン ソースと、私が働いているAxiomaticsなどのベンダーの両方) があることを考えると、XACML パーサーを自分で実装する理由は何ですか?

乾杯、デビッド。

于 2013-12-16T15:14:42.310 に答える