<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.18 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-brossard-alfa-authz-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="alfa-authz">ALFA 2.0 - the Abbreviated Language for Authorization</title>
    <seriesInfo name="Internet-Draft" value="draft-brossard-alfa-authz-00"/>
    <author fullname="David Brossard">
      <organization>Axiomatics</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>david.brossard@gmail.com</email>
      </address>
    </author>
    <author fullname="Andrew Clymer">
      <organization>Rock Solid Knowledge</organization>
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>andy@rocksolidknowledge.com</email>
      </address>
    </author>
    <author fullname="Theodosios Dimitrakos">
      <organization>University of Kent School of Computing</organization>
      <address>
        <email>t.dimitrakos@kent.ac.uk</email>
      </address>
    </author>
    <date year="2024" month="July" day="22"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>authorization</keyword>
    <keyword>abac</keyword>
    <keyword>rebac</keyword>
    <keyword>rbac</keyword>
    <keyword>access control</keyword>
    <keyword>xacml</keyword>
    <keyword>policy language</keyword>
    <abstract>
      <?line 123?>

<t>The Abbreviated Language for Authorization 2.0 is a constrained policy language aimed at solving fine-grained
authorization challenges. This specification builds on top of <xref target="XACML"/> and replaces <xref target="ALFA"/> to provide a more complete
and easier language to use.</t>
      <t>Use cases for ALFA 2.0 include the ability to express:
- Role-based access control (<xref target="RBAC"/>),
- Attribute-based access control (<xref target="ABAC"/>), and
- Relationship-based access control (<xref target="ReBAC"/>)</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://davidjbrossard.github.io/alfa-authorization-language/draft-brossard-alfa-authz.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-brossard-alfa-authz/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/davidjbrossard/alfa-authorization-language"/>.</t>
    </note>
  </front>
  <middle>
    <?line 135?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>While authentication has <em>largely</em> been solved and standardized (see <xref target="OAUTH"/> and SAML as successful authentication standards), not as much can be said of authorization. One of the oldest and more mature standards is <xref target="XACML"/>, the eXtensible Access Control Markup Language established in 2001 under the helm of OASIS. The latest version, XACML 3.0, was released in 2013.</t>
      <t>Since, there has been little innovation in the authorization space. Two standards emerged:</t>
      <ul spacing="normal">
        <li>
          <t>ALFA: Abbreviated Language for Authorization (ALFA) is a domain-specific language for a high-level description of XACML policies. It is designed with ease of use in mind, for use by XACML policy writers. ALFA provides the means to present domain specific information, such as attribute identifiers, in compact form and lays down the basic principle to compile policies expressed in ALFA into XACML 3.0 policies. ALFA does not bring new semantics to XACML. Anything that can be expressed in ALFA must be expressible in XACML. ALFA has been designed in such a way that lossless round-trip translations is possible.</t>
        </li>
        <li>
          <t>OPA: Open Policy Agent is an open source, general-purpose policy engine that unifies policy enforcement across the stack. OPA provides a high-level declarative language that lets you specify policy as code and simple APIs to offload policy decision-making from your software. <xref target="OPA"/></t>
        </li>
      </ul>
      <t>While OPA became part of CNCF, ALFA remained as a draft under OASIS. OPA's strength is also its drawback. It's a fullblown Datalog-based programming language which can achieve anything: it's extremely broad. As for ALFA, as mentioned above, it's true to XACML and aims to achieve lossless round-trip translations leading to unnecessary complications in ALFA's existing grammar.</t>
      <t>The aim of this standard is to provide a simple and constrained authorization language largely inspired by ALFA but not tied to XACML and not limited by the need to provide round-tripping.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="XACML" target="https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html">
          <front>
            <title>eXtensible Access Control Markup Language (XACML) Version 3.0, OASIS Standard</title>
            <author initials="E." surname="Rissanen" fullname="Erik Rissanen">
              <organization>Axiomatics AB</organization>
            </author>
            <date year="2013" month="January"/>
          </front>
        </reference>
        <reference anchor="ABAC" target="https://doi.org/10.6028/NIST.SP.800-162">
          <front>
            <title>Guide to Attribute Based Access Control (ABAC) Definition and Considerations - NIST Special Publication 800-162</title>
            <author initials="V." surname="Hu" fullname="Vincent Hu">
              <organization>NIST</organization>
            </author>
            <author initials="D." surname="Ferraiolo" fullname="David Ferraiolo">
              <organization>NIST</organization>
            </author>
            <date year="2014" month="January"/>
          </front>
        </reference>
        <reference anchor="ALFA" target="https://groups.oasis-open.org/higherlogic/ws/public/download/55228/alfa-for-xacml-v1.0-wd01.doc">
          <front>
            <title>Abbreviated Language for Authorization Version 1.0</title>
            <author initials="P." surname="Giambiagi" fullname="Pablo Giambiagi">
              <organization>Axiomatics</organization>
            </author>
            <author initials="S. K." surname="Nair" fullname="Srijith K. Nair">
              <organization>Axiomatics</organization>
            </author>
            <author initials="D." surname="Brossard" fullname="David Brossard">
              <organization>Axiomatics</organization>
            </author>
            <date year="2015" month="March"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="OAUTH">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RBAC" target="https://doi.org/10.1145/344287.344301">
          <front>
            <title>The NIST Model for Role-Based Access Control: Towards a Unified Standard</title>
            <author initials="R." surname="Kuhn" fullname="D. Richard Kuhn">
              <organization>NIST</organization>
            </author>
            <author initials="D." surname="Ferraiolo" fullname="David Ferraiolo">
              <organization>NIST</organization>
            </author>
            <author initials="R." surname="Sandhu" fullname="R. Sandhu">
              <organization>NIST</organization>
            </author>
            <date year="2000" month="July"/>
          </front>
        </reference>
        <reference anchor="ReBAC" target="https://doi.org/10.1145/344287.344301">
          <front>
            <title>Access Control Requirements for Web 2.0 Security and Privacy</title>
            <author initials="C." surname="Gates" fullname="Carrie Gates">
              <organization>CA Technologies</organization>
            </author>
            <date year="2007" month="January"/>
          </front>
        </reference>
        <reference anchor="OPA" target="https://www.openpolicyagent.org/docs/latest/">
          <front>
            <title>Open Policy Agent | Documentation</title>
            <author initials="" surname="Styra" fullname="Styra">
              <organization>Styra</organization>
            </author>
            <date year="2024" month="July"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 184?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to acknowledge the authors of the original version of ALFA namely Pablo Giambiagi and Dr. Srijith Nair. The authors would also like to acknowledge Erik Rissanen, the then editor of the XACML Technical Committee.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
dfeeB20q6OMlst0KMO8/wfzs5swYAAA=

-->

</rfc>
