]>
Security Event Token (SET)Amazonrichanna@amazon.comGooglewdenniss@google.comCiscomorteza.ansari@cisco.comMicrosoftmbj@microsoft.comhttp://self-issued.info/Security
seceventInternet-DraftThis 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.This specification defines an extensible Security Event Token (SET)
format which may be exchanged using protocols such as HTTP. The
specification builds on the JSON Web Token (JWT) format in
order to provide a self-contained token that can be optionally signed
using JSON Web Signature (JWS) and/or encrypted using JSON
Web Encryption (JWE) .This specification profiles the use of JWT for the purpose of issuing
security event tokens (SETs). This specification defines a base
format upon which profiling specifications define actual events and
their meanings. Unless otherwise specified, this specification uses
non-normative example events intended to demonstrate how events may
be constructed.This specification is scoped to security and identity related events.
While security event tokens may be used for other purposes, the
specification only considers security and privacy concerns relevant
to identity and personal information.Security Events are not commands issued between parties. A security
event is a statement of fact from the perspective of an issuer about
the state of a security subject (e.g., a web resource, token, IP
address, the issuer itself) that the issuer controls or is aware of,
that has changed in some way (explicitly or implicitly). A security
subject MAY be permanent (e.g., a user account) or temporary (e.g.,
an HTTP session) in nature. A state change could describe a direct
change of entity state, an implicit change of state or other higher-
level security statements such as:The creation, modification, removal of a resource.The resetting or suspension of an account.The revocation of a security token prior to its expiry.The logout of a user session. Or,A cumulative conclusion such as to indicate that a user has taken
over an email identifier that may have been used in the past by
another user.While subject state changes are often triggered by a user-agent or
security-subsystem, the issuance and transmission of an event often
occurs asynchronously and in a back-channel to the action which
caused the change that generated the security event. Subsequently,
an Event Receiver, having received a SET, validates and interprets
the received SET and takes its own independent actions, if any. For
example, having been informed of a personal identifier being
associated with a different security subject (e.g., an email address
is being used by someone else), the Event Receiver may choose to
ensure that the new user is not granted access to resources
associated with the previous user. Or, the Event Receiver may not
have any relationship with the subject, and no action is taken.While Event Receivers will often take actions upon receiving SETs,
security events cannot be assumed to be commands or requests. The
intent of this specification is to define a way of exchanging
statements of fact that Event Receivers may interpret for their own
purposes. As such, SETs have no capability for error signaling other
to ensure the validation of a received SET.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
. These keywords are capitalized when used to unambiguously
specify requirements of the protocol or application features and
behavior that affect the inter-operability and security of
implementations. When these words are not capitalized, they are
meant in their natural-language sense.For purposes of readability, examples are not URL encoded.
Implementers MUST percent encode URLs as described in Section 2.1 of
.Throughout this document, all figures MAY contain spaces and extra
line-wrapping for readability and space limitations. Similarly, some
URIs contained within examples have been shortened for space and
readability reasons.The following definitions are used with SETs:
A SET is a JWT that contains an event payload describing
a security event.
A service provider that delivers SETs to other providers known as
Event Receivers.
An Event Receiver is an entity that receives SETs through some
distribution method. An Event Receiver is the same entity
referred as “recipient” or “receiver” in and related
specifications.
A SET describes an event or state change that has occurred about a
Subject. A Subject may be a principal (e.g., Section 4.1.2
), a web resource, an entity such as an IP address, or
the issuer itself that a SET might reference.
A specification that uses the SET Token specification to define one or
more event types and the associated claims included.A SET is a data structure that encodes an “event payload” describing a
security event, wrapped in an “envelope” providing metadata and context
for the security event. The SET envelope is a JWT Claims Set as defined in
, consisting of a JSON object containing a set of claims. The
event payload is a JSON object contained within the SET envelope, itself
containing claims that express information about the event, e.g. the type
of event, the subject of the event, and other information defined in a
Profiling Specification.This specification defines a core set of claims for use in SET envelopes
and event payloads, however Profiling Specifications MAY define additional
claims of both types. It is RECOMMENDED that Profiling Specifications
define claims to be used in the event payload rather than the envelope. If
a Profiling Specification does define envelope claims, those claims SHOULD
be registered in the JWT Token Claims Registry or have
Public Claim Names as defined in Section 4.2 of .This specification profiles the following claims defined in for
use in the SET envelope:
A case-sensitive string identifying the principal that issued the SET,
as defined by Section 4.1.1 of . This claim is REQUIRED.
A case-sensitive string or array of case-sensitive strings identifying
the audience for the SET, as defined by Section 4.1.3 of . This
claim is RECOMMENDED.
As defined by Section 4.1.4 of , this claim is the time after
which the JWT MUST NOT be accepted for processing. In the context of a SET
however, this notion does not apply since a SET reflects something that
has already been processed and is historical in nature. Use of this claim
is NOT RECOMMENDED.
A value identifying the time at which the SET was issued, as defined by
Section 4.1.6 of . Since SETs typically describe events that have
already occurred, this is likely to be different from the value stored in
the “event_time” payload claim (see below). This claim is REQUIRED.
A unique identifier for an event, as defined by Section 4.1.7 of
. This claim is REQUIRED.This specification defines the following new claims for use in the SET
envelope:
A JSON object known as the “event payload”, whose contents identify the
type of event contained within the SET and contain additional information
defined as part of an event type definition in a Profiling Specification.This specification defines the following claims for use in event payloads:
A string containing a URI that uniquely identifies an event type
defined by a Profiling Specification. This claim is REQUIRED.
A string that identifies a specific “real world” event or state change
to which this event is related. Recipients MAY use this claim to correlate
events across different SETs received at different times and/or by different
systems. The value of this claim MUST be unique with respect to the
transmitter to a specific “real world” event or state change, however
recipients MUST NOT interpret a difference in “event_id” values as a
guarantee that two events are not related. This claim is OPTIONAL.
A Subject Identifier that identifies the subject of the event. (See:
) This claim is RECOMMENDED. Profiling Specifications MAY omit
this claim if the subject is implicitly known, or if the subject is
identified by the JWT “sub” claim, in order to be compatible with one or
more other specifications (e.g. ). Profiling Specifications
that use the JWT “sub” claim MUST reference the document that defines the
semantics for that claim that the Profiling Specification is following,
and MUST omit the “event_subject” payload claim.
A number identifying the date and time at which the event is believed to
have occurred or will occur in the future. Its value MUST take the form
of a NumericDate value, as defined in Section 2 of . This claim
is OPTIONAL, however if it is not present then the recipient MUST
interpret that to mean that no event time is being asserted, either
because there is no specific event time, the transmitter does not wish to
share it, or the transmitter does not know its value.Both the SET envelope and event payload MAY contain additional claims, such
as those defined in a Profiling Specification. The format and meaning of
these claims is out of scope of this specification. Implementations SHOULD
ignore any claims in the SET envelope or event payload that they do not
understand.The following is a non-normative example showing a SET envelope expressing
a hypothetical event with two additional claims in the event payload:The payload in this example contains the following:An “event_type” claim whose value is the URI identifying the
hypothetical event type.An “event_subject” claim whose value identifies a subject via email
address.An “event_time” claim whose value is the time at which the event occured.Two claims “claim_1” and “claim_2” that are defined by the hypothetical
event type’s Profiling Specification.The Subject Identifier provides a common syntax for expressing the subject
of a security event. A Subject Identifier is a JSON object representing an
instance of a Subject Identifier Type. A Subject Identifier Type defines a
way of identifying the subject of an event. Typically this is done by
defining a set of one or more claims about a subject that when taken
together collectively identify that subject. Each Subject Identifier Type
MUST have a name which MUST be registered in the IANA “SET Subject
Identifier Types” registry established by .A Subject Identifier MUST contain an “identifier_type” claim, whose value is
a string containing the name of the Subject Identifier’s Subject Identifier
Type. All other claims within the Subject Identifier MUST be defined by the
Subject Identifier Type.The names of the Subject Identifier Types defined below are registered in
the IANA “SET Subject Identifier Types” registry established by .The “Email” Subject Identifier Type identifies a subject by email address.
It has the name “email”, and contains a single additional claim:
A string containing an email address. Its value SHOULD conform to
. This claim is REQUIRED.The following is a non-normative example of a Subject Identifier
representing an instance of the Email Subject Identifier Type:The “Phone Number” Subject Identifier Type identifies a subject by phone
number. It has the name “phone_number”, and contains a single claim:
A string containing a phone number. It SHOULD be formatted according to
. This claim is REQUIRED.The following is a non-normative example of a Subject Identifier
representing an instance of the Phone Number Subject Identifier Type:The “Issuer and Subject” Subject Identifier Type identifies a subject by an
issuer and subject pair. It has the name “iss-sub”, and contains two
claims:
A case-sensitive string identifying the principal who is responsible for
assignment of the identifier in the “sub” claim, as defined by Section 4.1.1
of . This claim is REQUIRED.
A case-sensitive string containing an identifier that identifies a subject
within the context of the principal identified by the “iss” claim, as
defined by Section 4.1.2 of . This claim is REQUIRED.The following is a non-normative example of a Subject Identifier
representing an instance of the Issuer and Subject Subject Identifier Type:This specification registers the “application/secevent+jwt” media
type. SETs MAY include this media type in the “typ” header parameter of
the JWT containing the SET to explicitly declare that the JWT is a SET.
This MUST be included if the SET could be used in an application context
in which it could be confused with other kinds of JWTs. Profiling
Specifications MAY declare that this is REQUIRED for SETs containing events
defined by the Profiling Specification.Per the definition of “typ” in Section 4.1.9 of , it is
RECOMMENDED that the “application/” prefix be omitted. Therefore,
the “typ” value used SHOULD be “secevent+jwt”.A SET is a JWT, and therefore it’s construction follows that described in
.While this specification uses JWT to convey a SET, implementers SHALL
NOT use SETs to convey authentication or authorization assertions.The following is the example JWT Claims Set from , expressed as
an unsigned JWT. The JOSE Header is:Base64url encoding of the octets of the UTF-8 representation of the
JOSE Header yields:The example JWT Claims Set is encoded as follows:The encoded JWS signature is the empty string. Concatenating the
parts yields the following complete JWT:For the purpose of a simpler example in Figure 5, an unsecured token
was shown. When SETs are not signed or encrypted, the Event Receiver
MUST employ other mechanisms such as TLS and HTTP to provide
integrity, confidentiality, and issuer validation, as needed by the
application.When validation (i.e. auditing), or additional transmission security
is required, JWS signing and/or JWE encryption MAY be used. To
create and or validate a signed and/or encrypted SET, follow the
instructions in Section 7 of .In order to accommodate use cases that require communicating multiple
related security events to an Event Receiver, this section defines the
“Related Events” event type. A Related Events event is essentially a
container for two or more events that are related to one another, in that
they represent or express different aspects of the same event or state
change. The Related Events event SHOULD NOT be used to combine unrelated
events into a single set, and MUST NOT be used as a general purpose batch
transmission mechanism. Profiling Specifications that require an event
grouping mechanism with these or other semantics are encouraged to define
additional event types for their use cases.The event type for the Related Events event is the URN
“urn:ietf:secevents:related_events”.The Related Events event has a single additional event payload claim:
An array of event payloads, as defined in this document. These event
payloads can be referred to as Nested Events for the Related Events event.
This claim is REQUIRED.Nested Events can inherit the “event_id”, “event_subject”, and “event_time”
claims from the Related Events payload. Transmitters MAY omit some, all, or
none of these claims from a Nested Event. Transmitters MAY omit claims from
some Nested Events and include them in others within the same Related Events
event. When a claim is omitted, recipients MUST use the value of the
corresponding claim in the Related Event event’s payload.The following is a non-normative example of a SET containing a Related
Events event:The following table demonstrates how Nested Events inherit values for
omitted claims:Since the Nested Event with event ID “nested_1” omits the “event_time”
claim, it inherits the event time from the Related Events event payload.
Similarly, since both Nested Events “nested_1” and “nested_2” omit the
“event_subject” claim, both inherit the event subject from the Related
Events event payload.Profiling Specifications for SETs define the syntax and semantics of
SETs conforming to that SET profile and rules for validating those
SETs. The syntax defined by Profiling Specifications includes what
SET envelope and event payload claims are used by SETs expressing and
event defined by the profile.Defining the semantics of the SET contents for SETs utilizing the
profile is equally important. Possibly most important is defining
the procedures used to validate the SET issuer and to obtain the keys
controlled by the issuer that were used for cryptographic operations
used in the JWT representing the SET. For instance, some profiles
may define an algorithm for retrieving the SET issuer’s keys that
uses the “iss” claim value as its input. Likewise, if the profile
allows (or requires) that the JWT be unsecured, the means by which
the integrity of the JWT is ensured MUST be specified.Profiling Specifications MUST define how the event Subject is
identified in the SET, as well as how to differentiate between the
event Subject’s Issuer and the SET Issuer, if applicable. It is NOT
RECOMMENDED for Profiling Specifications to use the “sub” claim
defined in in cases in which the Subject is not globally
unique and has a different Issuer from the SET itself.Profiling Specifications MUST clearly specify the steps that a
recipient of a SET utilizing that profile MUST perform to validate
that the SET is both syntactically and semantically valid.As needs change and new use cases develop, it may be desirable to augment
existing event definitions with new claims. In order to avoid collisions,
Profiling Specifications that extend existing events with additional event
payload claims SHOULD use Collision-Resistant Names as defined in Section 2
of for the names of the new claims.SETs may often contain sensitive information. Therefore, methods for
distribution of events SHOULD require the use of a transport-layer
security mechanism when distributing events. Parties MUST support
TLS 1.2 and MAY support additional transport-layer
mechanisms meeting its security requirements. When using TLS, the
client MUST perform a TLS/SSL server certificate check, per
. Implementation security considerations for TLS can be
found in “Recommendations for Secure Use of TLS and DTLS” .Security Events distributed through third-parties or that carry
personally identifiable information, SHOULD be encrypted using JWE
or secured for confidentiality by other means.Unless integrity of the JWT is ensured by other means, it MUST be
signed using JWS so that individual events can be
authenticated and validated by the Event Receiver.This specification does not define a delivery mechanism by itself.
In addition to confidentiality and integrity (discussed above),
implementers and Profiling Specifications MUST consider the
consequences of delivery mechanisms that are not secure and/or not
assured. For example, while a SET may be end-to-end secured using
JWE encrypted SETs, without TLS there is no assurance that the
correct endpoint received the SET and that it could be successfully
processed.As defined in this specification, there is no defined way to order
multiple SETs in a sequence. Depending on the type and nature of SET
event, order may or may not matter. For example, in provisioning,
event order is critical – an object could not be modified before it
was created. In other SET types, such as a token revocation, the
order of SETs for revoked tokens does not matter. If however, the
event was described as a log-in or logged-out status for a user
subject, then order becomes important.Profiling Specifications and implementers SHOULD take caution when
using timestamps such as “iat” to define order. Distributed systems
will have some amount of clock-skew and thus time by itself will not
guarantee order.Specifications profiling SET SHOULD define a mechanism for detecting
order or sequence of events.When SETs are delivered asynchronously and/or out-of-band with
respect to the original action that incurred the security event, it
is important to consider that a SET might be delivered to an Event
Receiver in advance or well behind the process that caused the event.
For example, a user having been required to logout and then log back
in again, may cause a logout SET to be issued that may arrive at the
same time as the user-agent accesses a web site having just logged-
in. If timing is not handled properly, the effect would be to
erroneously treat the new user session as logged out. Profiling
Specifications SHOULD be careful to anticipate timing and subject
selection information. For example, it might be more appropriate to
cancel a “session” rather than a “user”. Alternatively, the
specification could use timestamps that allows new sessions to be
started immediately after a stated logout event time.Because states that “all claims that are not understood by
implementations MUST be ignored”, there is a consideration that a SET
token might be confused with ID Token if a SET is
mistakenly or intentionally used in a context requiring an ID Token.
If a SET could otherwise be interpreted as a valid ID Token (because
it includes the required claims for an ID Token and valid issuer and
audience claim values for an ID Token) then that SET profile MUST
require that the “exp” claim not be present in the SET. Because
“exp” is a required claim in ID Tokens, valid ID Token
implementations will reject such a SET if presented as if it were an
ID Token.Excluding “exp” from SETs that could otherwise be confused with ID
Tokens is actually defense in depth. In any OpenID Connect contexts
in which an attacker could attempt to substitute a SET for an ID
Token, the SET would actually already be rejected as an ID Token
because it would not contain the correct “nonce” claim value for the
ID Token to be accepted in contexts for which substitution is
possible.Note that the use of explicit typing, as described in Section 2.2,
will not achieve disambiguation between ID Tokens and SETs, as the ID
Token validation rules do not use the “typ” header parameter value.OAuth 2.0 defines access tokens as being opaque.
Nonetheless, some implementations implement access tokens as JWTs.
Because the structure of these JWTs is implementation-specific,
ensuring that a SET cannot be confused with such an access token is
therefore likewise, in general, implementation specific.
Nonetheless, it is recommended that SET profiles employ the following
strategies to prevent possible substitutions of SETs for access
tokens in contexts in which that might be possible:Prohibit use of the “exp” claim, as is done to prevent ID Token
confusion.Where possible, use a separate “aud” claim value to distinguish
between the Event Receiver and the protected resource that is the
audience of an access token.Modify access token validation systems to check for the presence
of the “events” claim as a means to detect security event tokens.
This is particularly useful if the same endpoint may receive both
types of tokens.Employ explicit typing, as described in Section 2.2, and modify
access token validation systems to use the “typ” header parameter
value.JWTs are now being used in application areas beyond the identity
applications in which they first appeared. For instance, the Session
Initiation Protocol (SIP) Via Header Field and Personal
Assertion Token (PASSporT) specifications
both define JWT profiles that use mostly or completely different sets
of claims than are used by ID Tokens. If it would otherwise be
possible for an attacker to substitute a SET for one of these (or
other) kinds of JWTs, then the SET profile must be defined in such a
way that any substituted SET will result in its rejection when
validated as the intended kind of JWT.The most direct way to prevent confusion is to employ explicit
typing, as described in Section 2.2, and modify applicable token
validation systems to use the “typ” header parameter value. This
approach can be employed for new systems but may not be applicable to
existing systems.Another way to ensure that a SET is not confused with another kind of
JWT is to have the JWT validation logic reject JWTs containing an
“events” claim unless the JWT is intended to be a SET. This approach
can be employed for new systems but may not be applicable to existing
systems.For many use cases, the simplest way to prevent substitution is
requiring that the SET not include claims that are required for the
kind of JWT that might be the target of an attack. For example, for
, the “sip_callid” claim could be omitted and for
, the “orig” claim could be omitted.In many contexts, simple measures such as these will accomplish the
task, should confusion otherwise even be possible. Note that this
topic is being explored in a more general fashion in JSON Web Token
Best Current Practices . The proposed
best practices in that draft may also be applicable for particular
SET profiles and use cases.If a SET needs to be retained for audit purposes, JWS MAY be used to
provide verification of its authenticity.Event Transmitters SHOULD attempt to specialize feeds so that the
content is targeted to the specific business and protocol needs of an
Event Receiver.When sharing personally identifiable information or information that
is otherwise considered confidential to affected users, Event
Transmitters and Receivers MUST have the appropriate legal agreements
and user consent or terms of service in place.The propagation of subject identifiers can be perceived as personally
identifiable information. Where possible, Event Transmitters and
Receivers SHOULD devise approaches that prevent propagation – for
example, the passing of a hash value that requires the Event Receiver
to know the subject.This section establishes the IANA “SET Subject Identifier Types” registry
// TODOThis specification registers the “event” claim in the IANA “JSON Web Token
Claims” registry established by .Claim Name: “event”Claim Description: Security Event PayloadChange Controller: IESGSpecification Document(s): Section 2.1 of [[ this specification ]]This section registers the “application/secevent+jwt” media type
in the “Media Types” registry in the
manner described in , which can be used to indicate that the
content is a SET.Type name: applicationSubtype name: secevent+jwtRequired parameters: n/aOptional parameters: n/aEncoding considerations: 8bit; A SET is a JWT; JWT values are
encoded as a series of base64url-encoded values (some of which may
be the empty string) separated by period (‘.’) characters.Security considerations: See the Security Considerations section
of [[ this specification ]]Interoperability considerations: n/aPublished specification: Section 2.2 of [[ this specification ]]Applications that use this media type: TBDFragment identifier considerations: n/aAdditional information:Magic number(s): n/aFile extension(s): n/aMacintosh file type code(s): n/aPerson & email address to contact for further information:
Michael B. Jones, mbj@microsoft.comIntended usage: COMMONRestrictions on usage: noneAuthor: Michael B. Jones, mbj@microsoft.comChange controller: IESGProvisional registration? NoJSON Web Token ClaimsIANAMedia TypesIANAKey words for use in RFCs to Indicate Requirement LevelsIn 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.Uniform Resource Identifier (URI): Generic SyntaxA Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]The Transport Layer Security (TLS) Protocol Version 1.2This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]Internet Message FormatThis document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)Many application technologies enable secure communication between two entities by means of Internet Public Key Infrastructure Using X.509 (PKIX) certificates in the context of Transport Layer Security (TLS). This document specifies procedures for representing and verifying the identity of application services in such interactions. [STANDARDS-TRACK]The OAuth 2.0 Authorization FrameworkThe 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]JSON Web Token (JWT)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.Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are widely used to protect data exchanged over application protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the last few years, several serious attacks on TLS have emerged, including attacks on its most commonly used cipher suites and their modes of operation. This document provides recommendations for improving the security of deployed services that use TLS and DTLS. The recommendations are applicable to the majority of use cases.The international public telecommunication numbering planInternational Telecommunication UnionPersonal Assertion Token (PASSporT)This document defines a method for creating and validating a token that cryptographically verifies an originating identity, or more generally a URI or telephone number representing the originator of personal communications. The PASSporT token is cryptographically signed to protect the integrity of the identity the originator and to verify the assertion of the identity information at the destination. The cryptographic signature is defined with the intention that it can confidently verify the originating persona even when the signature is sent to the destination party over an insecure channel. PASSporT is particularly useful for many personal communications applications over IP networks and other multi-hop interconnection scenarios where the originating and destination parties may not have a direct trusted relationship.JSON Web Token Best Current PracticesJSON Web Tokens, also known as JWTs [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.OpenID Connect Core 1.0Multipurpose Internet Mail Extensions (MIME) Part Two: Media TypesThis second document defines the general structure of the MIME media typing system and defines an initial set of media types. [STANDARDS-TRACK]Media Type Specifications and Registration ProceduresThis document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.JSON Web Signature (JWS)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.JSON Web Encryption (JWE)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.Session Initiation Protocol (SIP) Via Header Field Parameter to Indicate Received RealmThis specification defines a new Session Initiation Protocol (SIP) Via header field parameter, 'received-realm', which allows a SIP entity acting as an entry point to a transit network to indicate from which adjacent upstream network a SIP request is received by using a network realm value associated with the adjacent network.The editors would like to thank Phil Hunt for his SET draft – on which much
of this specification is based – and his continuing contributions to this
draft.The editors would like to thank the participants on the IETF secevent
mailing list and related working groups for their support of this
specification.Draft 00 - A. Backman - Forked from draft-ietf-secevent-token-03Cleaned up text in section 2.Simplified JWT claim descriptions in section 2.1.Removed “txn” claim.Replaced multi-part “events” claim with “event” claim that contains a single event payload.Removed references to JWT “sub” claim and added “event.event_subject” claim.Replaced JWT “toe” claim with “event.event_time” claim.Added Subject Identifier Types and defined “implicit”, “email”, “phone_number”, and “iss_sub” types.Added Related Events event definition.Added guidance for event extensions.Draft 01 - A. BackmanAdded Acknowledgements section.Relaxed event_subject claim definition to allow usage of JWT “sub” claim.Draft 02 - A. BackmanAdded text to iat claim definition clarifying the difference between iat
and event_time.Removed “implicit” Subject Identifier Type.