<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.1.2 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>

<rfc ipr="trust200902" docName="draft-ietf-oauth-jwt-bcp-00" category="bcp">

  <front>
    <title abbrev="JWT BCP">JSON Web Token Best Current Practices</title>

    <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer">
      <organization>Intuit</organization>
      <address>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="D." surname="Hardt" fullname="Dick Hardt">
      <organization>Amazon</organization>
      <address>
        <email>dick@amazon.com</email>
      </address>
    </author>
    <author initials="M.B." surname="Jones" fullname="Michael B. Jones">
      <organization>Microsoft</organization>
      <address>
        <email>mbj@microsoft.com</email>
        <uri>http://self-issued.info/</uri>
      </address>
    </author>

    <date year="2017" month="July" day="19"/>

    <area>Security</area>
    <workgroup>OAuth Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>JSON Web Tokens, also known as JWTs <xref target="RFC7519"/>, are URL-safe JSON-based security tokens
that contain a set of claims that can be signed and/or encrypted.
JWTs are being widely used and deployed as a simple security token format
in numerous protocols and applications, both in the area of digital identity,
and in other application areas.
The goal of this Best Current Practices document is to provide actionable guidance
leading to secure implementation and deployment of JWTs.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>JSON Web Tokens, also known as JWTs <xref target="RFC7519"/>, are URL-safe JSON-based security tokens
that contain a set of claims that can be signed and/or encrypted.
The JWT specification has seen rapid adoption because it encapsulates
security-relevant information in one, easy to protect location, and because
it is easy to implement using widely-available tools.
One application area in which JWTs are commonly used is representing digital identity information,
such as OpenID Connect ID Tokens <xref target="OpenID.Core"/>
and OAuth 2.0 <xref target="RFC6749"/> access tokens and refresh tokens, the details of which are deployment-specific.</t>

<t>Since the JWT specification was published, there have been several widely published
attacks on implementations and deployments.
Such attacks are the result of under-specified security mechanisms, as well as incomplete
implementations and incorrect usage by applications.</t>

<t>The goal of this document is to facilitate secure implementation and deployment of JWTs.
Many of the recommendations in this document will actually be about
implementation and use of the cryptographic mechanisms underlying JWTs that are defined by
JSON Web Signature (JWS) <xref target="RFC7515"/>,
JSON Web Encryption (JWE) <xref target="RFC7516"/>, and
JSON Web Algorithms (JWA) <xref target="RFC7518"/>.
Others will be about use of the JWT claims themselves.</t>

<t>These are intended to be minimum recommendations for the use of JWTs in the vast majority of implementation
and deployment scenarios.  Other specifications that reference this document can have
stricter requirements related to one or more aspects of the format, based on their
particular circumstances; when that is the case, implementers are advised to adhere
to those stricter requirements.  Furthermore, this document provides a floor, not a ceiling,
so stronger options are always allowed (e.g., depending on differing evaluations of the
importance of cryptographic strength vs. computational load).</t>

<t>Community knowledge about the strength of various algorithms and feasible attacks can
change quickly, and experience shows that a Best Current Practice (BCP) document about
security is a point-in-time statement. Readers are advised to seek out any errata or
updates that apply to this document.</t>

<section anchor="target-audience" title="Target Audience">

<t>The targets of this document are:</t>

<t><list style="symbols">
  <t>Implementers of JWT libraries (and the JWS and JWE libraries used by them),</t>
  <t>Implementers of code that uses such libraries (to the extent that some mechanisms may
not be provided by libraries, or until they are), and</t>
  <t>Developers of specifications that rely on JWTs, both inside and outside the IETF.</t>
</list></t>

</section>
<section anchor="conventions-used-in-this-document" title="Conventions used in this document">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be
interpreted as described in <xref target="RFC2119"/>.</t>

</section>
</section>
<section anchor="threats-and-vulnerabilities" title="Threats and Vulnerabilities">

<t>This section lists some known and possible problems with JWT implementations and deployments.
Each problem description is followed by references to one or more mitigations to those problems.</t>

<section anchor="weak-signatures-and-insufficient-signature-validation" title="Weak Signatures and Insufficient Signature Validation">

<t>Signed JSON Web Tokens carry an explicit indication of the signing algorithm,
in the form of the “alg” header parameter, to facilitate cryptographic agility.
This, in conjunction with design flaws in some libraries and applications, have led to several attacks:</t>

<t><list style="symbols">
  <t>The algorithm can be changed to “none” by an attacker, and some libraries would trust
this value and “validate” the JWT without checking any signature.</t>
  <t>An “RS256” (RSA, 2048 bit) parameter value can be changed into
“HS256” (HMAC, SHA-256), and some libraries
would try to validate the signature using HMAC-SHA256 and using the RSA public key as the
HMAC shared secret.</t>
</list></t>

<t>For mitigations, see <xref target="algorithm-verification" /> and <xref target="appropriate-algorithms" />.</t>

</section>
<section anchor="weak-symmetric-keys" title="Weak symmetric keys">

<t>In addition, some applications sign tokens using a weak symmetric key and a keyed
MAC algorithm such as “HS256”. In most cases, these keys are human memorable passwords
that are vulnerable to dictionary attacks <xref target="Langkemper"></xref>.</t>

<t>For mitigations, see <xref target="key-entropy" />.</t>

</section>
<section anchor="multiplicity-of-json-encodings" title="Multiplicity of JSON encodings">

<t>Many practitioners are not aware that JSON <xref target="RFC7159"/> allows several different character
encodings: UTF-8, UTF-16 and UTF-32. As a result, the JWT might be
misinterpreted by its recipient.</t>

<t>For mitigations, see <xref target="use-utf8" />.</t>

</section>
<section anchor="incorrect-composition-of-encryption-and-signature" title="Incorrect Composition of Encryption and Signature">

<t>Some libraries that decrypt a JWE-encrypted JWT to obtain a JWS-signed object
do not always validate the internal signature.</t>

<t>For mitigations, see <xref target="validate-crypto" />.</t>

</section>
<section anchor="insecure-use-of-elliptic-curve-encryption" title="Insecure Use of Elliptic Curve Encryption">

<t>Per <xref target="Sanso"></xref>, several JOSE libraries fail to validate their inputs correctly
when performing elliptic curve key agreement (the “ECDH-ES” algorithm).
An attacker that is able to send JWEs of its choosing that use invalid curve points and
observe the cleartext outputs resulting from decryption with the invalid curve points
can use this vulnerability to recover the recipient’s private key.</t>

<t>For mitigations, see <xref target="validate-inputs" />.</t>

</section>
<section anchor="substitution" title="Substitution Attacks">

<t>There are attacks in which one recipient will have a JWT intended for it
and attempt to use it at a different recipient that it was not intended for.
If not caught, these attacks can result in the attacker gaining access to resources
that it is not entitled to access.</t>

<t>For mitigations, see <xref target="validate-iss-sub" /> and <xref target="use-aud" />.</t>

</section>
<section anchor="cross-jwt-confusion" title="Cross-JWT Confusion">

<t>As JWTs are being used by more different protocols in diverse application areas, it becomes increasingly
important to prevent cases of JWT tokens that have been issued for one purpose
being subverted and used for another.
Note that this is a specific type of substitution attack.
If the JWT could be used in an application context in which it could be confused with other kinds of JWTs,
then mitigations MUST be employed to prevent these substitution attacks.</t>

<t>For mitigations, see <xref target="validate-iss-sub" />, <xref target="use-aud" />,
<xref target="use-typ" />, and <xref target="preventing-confusion" />.</t>

</section>
</section>
<section anchor="BP" title="Best Practices">

<t>The best practices listed below should be applied by practitioners
to mitigate the threats listed in the preceding section.</t>

<section anchor="algorithm-verification" title="Perform Algorithm Verification">

<t>Libraries MUST enable the caller to specify a supported set of algorithms and
MUST NOT use any other algorithms when performing cryptographic operations.
The library MUST ensure that the “alg” or “enc” header specifies the same algorithm
that is used for the cryptographic operation.
Moreover, each key MUST be used with exactly one algorithm,
and this MUST be checked when the cryptographic operation is performed.</t>

</section>
<section anchor="appropriate-algorithms" title="Use Appropriate Algorithms">

<t>As Section 5.2 of <xref target="RFC7515"></xref> says, “it is an application decision which algorithms may
be used in a given context.  Even if a JWS can be successfully
validated, unless the algorithm(s) used in the JWS are acceptable to
the application, it SHOULD consider the JWS to be invalid.”</t>

<t>Therefore, applications MUST only allow the use of cryptographically current algorithms
that meet the security requirements of the application.
This set will vary over time as new algorithms are introduced
and existing algorithms are deprecated due to discovered cryptographic weaknesses.
Applications must therefore be designed to enable cryptographic agility.</t>

<t>That said, if a JWT is cryptographically protected by a transport layer, such as TLS
using cryptographically current algorithms, there may be no need to apply another layer of
cryptographic protections to the JWT.
In such cases, the use of the “none” algorithm can be perfectly acceptable.
JWTs using “none” are often used in application contexts in which the content is optionally signed;
then the URL-safe claims representation and processing can be the same in both the signed and unsigned cases.</t>

</section>
<section anchor="validate-crypto" title="Validate All Cryptographic Operations">

<t>All cryptographic operations used in the JWT MUST be validated and the entire JWT MUST be rejected
if any of them fail to validate.
This is true not only of JWTs with a single set of Header Parameters
but also for Nested JWTs, in which both outer and inner operations MUST be validated
using the keys and algorithms supplied by the application.</t>

<!-- See draft-ietf-oauth-jwsreq-13, sec. 6.1 and 6.2. -->

</section>
<section anchor="validate-inputs" title="Validate Cryptographic Inputs">

<t>Some cryptographic operations, such as Elliptic Curve Diffie-Hellman key agreement
(“ECDH-ES”) take inputs that may contain invalid values, such as points not on the specified elliptic curve
or other invalid points.
Either the JWS/JWE library itself must validate these inputs before using them
or it must use underlying cryptographic libraries that do so (or both!).</t>

</section>
<section anchor="key-entropy" title="Ensure Cryptographic Keys have Sufficient Entropy">

<t>The Key Entropy and Random Values advice in Section 10.1 of <xref target="RFC7515"></xref> and
the Password Considerations in Section 8.8 of <xref target="RFC7518"></xref>
MUST be followed.
In particular, human-memorizable passwords MUST NOT be directly used
as the key to a keyed-MAC algorithm such as “HS256”.</t>

</section>
<section anchor="use-utf8" title="Use UTF-8">

<t><xref target="RFC7515"></xref>, <xref target="RFC7516"></xref>, and <xref target="RFC7519"></xref> all specify that UTF-8 be used for encoding and decoding JSON
used in Header Parameters and JWT Claims Sets.
Implementations and applications MUST do this, and not use other Unicode encodings for these purposes.</t>

</section>
<section anchor="validate-iss-sub" title="Validate Issuer and Subject">

<t>When a JWT contains an “iss” (issuer) claim, the application MUST validate that the cryptographic keys
used for the cryptographic operations in the JWT belong to the issuer.
If they do not, the application MUST reject the JWT.</t>

<t>The means of determining the keys owned by an issuer is application-specific.
As one example, OpenID Connect <xref target="OpenID.Core"/> issuer values are “https” URLs
that reference a JSON metadata document that contains a “jwks_uri” value that is
an “https” URL from which the issuer’s keys are retrieved as a JWK Set <xref target="RFC7517"/>.
This same mechanism is used by <xref target="I-D.ietf-oauth-discovery"/>.
Other applications may use different means of binding keys to issuers.</t>

<t>Similarly, when the JWT contains a “sub” (subject) claim, the application MUST validate that
the subject value corresponds to a valid subject and/or issuer/subject pair at the application.
This may include confirming that the issuer is trusted by the application.
If the issuer, subject, or the pair are invalid, the application MUST reject the JWT.</t>

</section>
<section anchor="use-aud" title="Use and Validate Audience">

<t>If the same issuer can issue JWTs that are intended for use by more than one relying party or application,
the JWT MUST contain an “aud” (audience) claim that can be used to determine whether the JWT
is being used by an intended party or was substituted by an attacker at an unintended party.
Furthermore, the relying party or application MUST validate the audience value
and if the audience value is not associated with the recipient, it MUST reject the JWT.</t>

</section>
<section anchor="use-typ" title="Use Explicit Typing">

<t>Confusion of one kind of JWT for another
can be prevented by having all the kinds of JWTs that could otherwise potentially be confused
include an explicit JWT type value and include checking the type value in their validation rules.
Explicit JWT typing is accomplished by using the “typ” header parameter.
For instance, the <xref target="I-D.ietf-secevent-token"/> specification uses the “application/secevent+jwt” media type
to perform explicit typing of Security Event Tokens (SETs).</t>

<t>Per the definition of “typ” in Section 4.1.9 of <xref target="RFC7515"></xref>,
it is RECOMMENDED that the “application/” prefix be omitted from the “typ” value.
Therefore, for example, the “typ” value used to explicitly include a type for a SET
SHOULD be “secevent+jwt”.
When explicit typing is employed for a JWT, it is RECOMMENDED that a media type name of the format
“application/example+jwt” be used, where “example” is replaced by the identifier for the specific kind of JWT.</t>

<t>Note that the use of explicit typing may not achieve disambiguation from existing kinds of JWTs,
as the validation rules for existing kinds JWTs often do not use the “typ” header parameter value.
Explicit typing is RECOMMENDED for new uses of JWTs.</t>

</section>
<section anchor="preventing-confusion" title="Use Mutually Exclusive Validation Rules for Different Kinds of JWTs">

<t>Each application of JWTs defines a profile specifying the required and optional JWT claims
and the validation rules associated with them.
If more than one kind of JWT can be issued by the same issuer,
the validation rules for those JWTs MUST be written such that they are mutually exclusive,
rejecting JWTs of the wrong kind.
To prevent substitution of JWTs from one context into another, a number of strategies may be employed:</t>

<t><list style="symbols">
  <t>Use explicit typing for different kinds of JWTs.
Then the distinct “typ” values can be used to differentiate between the different kinds of JWTs.</t>
  <t>Use different sets of required claims or different required claim values.
Then the validation rules for one kind of JWT will reject those with different claims or values.</t>
  <t>Use different sets of required header parameters or different required header parameter values.
Then the validation rules for one kind of JWT will reject those with different header parameters or values.</t>
  <t>Use different keys for different kinds of JWTs.
Then the keys used to validate one kind of JWT will fail to validate other kinds of JWTs.</t>
  <t>Use different “aud” values for different uses of JWTs from the same issuer.
Then audience validation will reject JWTs substituted into inappropriate contexts.</t>
  <t>Use different issuers for different kinds of JWTs.
Then the distinct “iss” values can be used to segregate the different kinds of JWTs.</t>
</list></t>

<t>Given the broad diversity of JWT usage and applications,
the best combination of types, required claims, values, header parameters, key usages, and issuers
to differentiate among different kinds of JWTs
will, in general, be application specific.</t>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document requires no IANA actions.</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>Thanks to Antonio Sanso for bringing the “ECDH-ES” invalid point attack to the attention
of JWE and JWT implementers.
Thanks to Nat Sakimura for advocating the use of explicit typing.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC2119" target='http://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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="RFC7159" target='http://www.rfc-editor.org/info/rfc7159'>
<front>
<title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
<author initials='T.' surname='Bray' fullname='T. Bray' role='editor'><organization /></author>
<date year='2014' month='March' />
<abstract><t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format.  It was derived from the ECMAScript Programming Language Standard.  JSON defines a small set of formatting rules for the portable representation of structured data.</t><t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t></abstract>
</front>
<seriesInfo name='RFC' value='7159'/>
<seriesInfo name='DOI' value='10.17487/RFC7159'/>
</reference>



<reference  anchor="RFC7515" target='http://www.rfc-editor.org/info/rfc7515'>
<front>
<title>JSON Web Signature (JWS)</title>
<author initials='M.' surname='Jones' fullname='M. Jones'><organization /></author>
<author initials='J.' surname='Bradley' fullname='J. Bradley'><organization /></author>
<author initials='N.' surname='Sakimura' fullname='N. Sakimura'><organization /></author>
<date year='2015' month='May' />
<abstract><t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures.  Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification.  Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t></abstract>
</front>
<seriesInfo name='RFC' value='7515'/>
<seriesInfo name='DOI' value='10.17487/RFC7515'/>
</reference>



<reference  anchor="RFC7516" target='http://www.rfc-editor.org/info/rfc7516'>
<front>
<title>JSON Web Encryption (JWE)</title>
<author initials='M.' surname='Jones' fullname='M. Jones'><organization /></author>
<author initials='J.' surname='Hildebrand' fullname='J. Hildebrand'><organization /></author>
<date year='2015' month='May' />
<abstract><t>JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures.  Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries defined by that specification.  Related digital signature and Message Authentication Code (MAC) capabilities are described in the separate JSON Web Signature (JWS) specification.</t></abstract>
</front>
<seriesInfo name='RFC' value='7516'/>
<seriesInfo name='DOI' value='10.17487/RFC7516'/>
</reference>



<reference  anchor="RFC7518" target='http://www.rfc-editor.org/info/rfc7518'>
<front>
<title>JSON Web Algorithms (JWA)</title>
<author initials='M.' surname='Jones' fullname='M. Jones'><organization /></author>
<date year='2015' month='May' />
<abstract><t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications.  It defines several IANA registries for these identifiers.</t></abstract>
</front>
<seriesInfo name='RFC' value='7518'/>
<seriesInfo name='DOI' value='10.17487/RFC7518'/>
</reference>



<reference  anchor="RFC7519" target='http://www.rfc-editor.org/info/rfc7519'>
<front>
<title>JSON Web Token (JWT)</title>
<author initials='M.' surname='Jones' fullname='M. Jones'><organization /></author>
<author initials='J.' surname='Bradley' fullname='J. Bradley'><organization /></author>
<author initials='N.' surname='Sakimura' fullname='N. Sakimura'><organization /></author>
<date year='2015' month='May' />
<abstract><t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties.  The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t></abstract>
</front>
<seriesInfo name='RFC' value='7519'/>
<seriesInfo name='DOI' value='10.17487/RFC7519'/>
</reference>




    </references>

    <references title='Informative References'>





<reference  anchor="RFC6749" target='http://www.rfc-editor.org/info/rfc6749'>
<front>
<title>The OAuth 2.0 Authorization Framework</title>
<author initials='D.' surname='Hardt' fullname='D. Hardt' role='editor'><organization /></author>
<date year='2012' month='October' />
<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="RFC7517" target='http://www.rfc-editor.org/info/rfc7517'>
<front>
<title>JSON Web Key (JWK)</title>
<author initials='M.' surname='Jones' fullname='M. Jones'><organization /></author>
<date year='2015' month='May' />
<abstract><t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key.  This specification also defines a JWK Set JSON data structure that represents a set of JWKs.  Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t></abstract>
</front>
<seriesInfo name='RFC' value='7517'/>
<seriesInfo name='DOI' value='10.17487/RFC7517'/>
</reference>


<reference anchor="Langkemper" target="https://www.sjoerdlangkemper.nl/2016/09/28/attacking-jwt-authentication/">
  <front>
    <title>Attacking JWT Authentication</title>
    <author initials="S." surname="Langkemper" fullname="Sjoerd Langkemper">
      <organization></organization>
    </author>
    <date year="2016" month="September"/>
  </front>
</reference>
<reference anchor="Sanso" target="https://blogs.adobe.com/security/2017/03/critical-vulnerability-uncovered-in-json-encryption.html">
  <front>
    <title>Critical Vulnerability Uncovered in JSON Encryption</title>
    <author initials="A." surname="Sanso" fullname="Antonio Sanso">
      <organization></organization>
    </author>
    <date year="2017" month="March"/>
  </front>
</reference>
<reference anchor="OpenID.Core" target="http://openid.net/specs/openid-connect-core-1_0.html">
  <front>
    <title>OpenID Connect Core 1.0</title>
    <author initials="N." surname="Sakimura" fullname="Nat Sakimura">
      <organization></organization>
    </author>
    <author initials="J." surname="Bradley" fullname="John Bradley">
      <organization></organization>
    </author>
    <author initials="M.B." surname="Jones" fullname="Michael B. Jones">
      <organization></organization>
    </author>
    <author initials="B.d." surname="Medeiros" fullname="Breno de Medeiros">
      <organization></organization>
    </author>
    <author initials="C." surname="Mortimore" fullname="Chuck Mortimore">
      <organization></organization>
    </author>
    <date year="2014" month="November"/>
  </front>
</reference>




<reference anchor="I-D.ietf-oauth-discovery">
<front>
<title>OAuth 2.0 Authorization Server Metadata</title>

<author initials='M' surname='Jones' fullname='Michael Jones'>
    <organization />
</author>

<author initials='N' surname='Sakimura' fullname='Nat Sakimura'>
    <organization />
</author>

<author initials='J' surname='Bradley' fullname='John Bradley'>
    <organization />
</author>

<date month='March' day='10' year='2017' />

<abstract><t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-oauth-discovery-06' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-oauth-discovery-06.txt' />
</reference>



<reference anchor="I-D.ietf-secevent-token">
<front>
<title>Security Event Token (SET)</title>

<author initials='P' surname='Hunt' fullname='Phil Hunt'>
    <organization />
</author>

<author initials='W' surname='Denniss' fullname='William Denniss'>
    <organization />
</author>

<author initials='M' surname='Ansari' fullname='Morteza Ansari'>
    <organization />
</author>

<author initials='M' surname='Jones' fullname='Michael Jones'>
    <organization />
</author>

<date month='June' day='30' year='2017' />

<abstract><t>This specification defines the Security Event Token, which may be distributed via a protocol such as HTTP.  The Security Event Token (SET) specification profiles the JSON Web Token (JWT), which can be optionally signed and/or encrypted.  A SET describes a statement of fact from the perspective of an issuer that it intends to share with one or more receivers.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-secevent-token-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-secevent-token-02.txt' />
</reference>




    </references>


<section anchor="document-history" title="Document History">

<t>[[ to be removed by the RFC editor before publication as an RFC ]]</t>

<section anchor="draft-ietf-oauth-jwt-bcp-00" title="draft-ietf-oauth-jwt-bcp-00">

<t><list style="symbols">
  <t>Initial WG draft. No change from the latest individual version.</t>
</list></t>

</section>
<section anchor="draft-sheffer-oauth-jwt-bcp-01" title="draft-sheffer-oauth-jwt-bcp-01">

<t><list style="symbols">
  <t>Added explicit typing.</t>
</list></t>

</section>
<section anchor="draft-sheffer-oauth-jwt-bcp-00" title="draft-sheffer-oauth-jwt-bcp-00">

<t><list style="symbols">
  <t>Initial version.</t>
</list></t>

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAGfOb1kAA81cW3PbRpZ+x6/oYR5GzhCQ5cTXmZ2KLCuxHMv2WnJcqZQr
1QSaVFsgwEEDopmU//t+55zuBkBSibO1D/swMQT05dwvXzcnTdOktW1pnqgX
F69fqfdmpi7ra1Opp8a16qRrGlO16k2j89bmxiV6NmvMDUa/v1RPT94kRZ1X
eonpRaPnbWpNO09r3bVX6cd1m87yVXr3bpLr1izqZvNE4UXSrQr87Z4k9czV
peHHxK6aJ6ptOtfeu3v38d17iW6MfqIuTN41tt0k67q5XjR1t3qiXh9jefUe
L2y1UD/Qy+TabDCieKLOqtY0lWnTZ0RPkrhWV8Wvuqwr0LgBAyv7JFGqmeem
cO2m9G+Vaut88GirAnyHF65u2sbMXfx7sxz92TY2j4PzernE3PjVVqWt+m3M
pzYtrWtTLDKrSwxL66//kSQks7oh2lL8j6bh08+Zurgy87lp+J1I+mfd1NXo
fd0sdGV/062tKxZBZ1v+YJbalk/UZENT5hlp57sFvctA5WS817NMPddN0Q52
embz68HL8TbHS/1bXY22KTD+O83v92xwnj3N1Asowg22OLf5lTalGn0ab4Qh
Te3q+Zil5ezjd8vwJeymFKwFH6/advXk8NCZcp5a5zpTZLaa14eTJKnqZomF
bwyJ+u33J/eOjh77x4dH9+Pj/aP7/eOD/vFR//iYzBarjtd78PDbwSIP6fGl
rhbXZrkyrF6lelUH+QRpXHysTVMMJvBX76CT47bVORs9eR95AezM5iwm4Z4c
i5xm1ZrlzDTq3qOpunf36IEso5uFgZmScByks16vM8cblnG/rCoPacLh3ceH
9x4d6rAje7Me7XiYYNULXbn6z7g6rtq6srUMHnF0At/GcqX6qSsr0+iZLeHs
6l2V1zemMQUMR+LSaZU3m9U2o+e6ya/U0TfM5MO9TM7KeuEyXdQzQ0YCk5CA
Qlw+PLz7zWHuSUhvhiSkXSAhtVX60dVVaiIJ2VW7LIn71ytTnT3LTurG/JkM
XukW/F/bZdfoPZ9f1FcIuY0uSrPZ83mvl4yHPEWgrlVh1LkpjIVb7BlzctXB
oc8RzewSNI9UIbyok7qqTI7Ij+/qKLs7FPcrSITNSqzq2x2BQ941lrFFhgh8
6FYmd/5Fmsu6+Lcx6dGvd6MMz9Jn2SBrFNax4DdPht+gNXMD00tbyk3wuzRN
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
kLsS+LPJIxLjnv8D4LfOCRhCAAA=

-->

</rfc>

