diff --git a/xep-0388.xml b/xep-0388.xml index 9c4b7d3e..421f22b0 100644 --- a/xep-0388.xml +++ b/xep-0388.xml @@ -20,6 +20,19 @@ sasl2 &dcridland; + + 0.2.1 + 2017-08-24 + dwd + +
    +
  • That's a lot of XML errors. Sorry.
  • +
  • Clarified whose additional-data this is.
  • +
  • <:next> uses <initial-response>.
  • +
  • Added a bunch of example flows.
  • +
+
+
0.2.0 2017-08-14 @@ -126,12 +139,13 @@

Authentication may complete in one of three ways. It may complete successfully, in which case the client is authenticated. It may also fail, in which case the client is not authenticated and the stream and session state remain entirely unchanged.

Finally, it may have completed successfully, but further interaction is required - for example, a password change or second-factor authentication.

-

If the Client is now authenticated, the Server sends a <success/> element, which contains an OPTIONAL <additional-data/> element containing SASL additional data. It also contains a <authorization-identity/> element containing the negotiated identity - this is a bare JID, unless resource binding has occurred, in which case it is a full JID.

+

If the Client is now authenticated, the Server sends a <success/> element, which contains contains an <authorization-identity/> element containing the negotiated identity - this is a bare JID, unless resource binding has occurred, in which case it is a full JID.

+

It MAY contain an <additional-data> element, containing additional data from the exchange (task or SASL mechanism) that has just completed.

- + ip/AeIOfZXKBV+fW2smE0GUB3I//nnrrLCYkt0Vj - + juliet@montague.example/Balcony/a987dsh9a87sdh ]]> @@ -139,7 +153,7 @@ - SGFkIHlvdSBnb2luZywgdGhlcmUsIGRpZG4ndCBJPw== + SGFkIHlvdSBnb2luZywgdGhlcmUsIGRpZG4ndCBJPw== juliet@montague.example/Balcony/a987dsh9a87sdh @@ -173,15 +187,17 @@ HOTP-EXAMPLE TOTP-EXAMPLE - + This account requires 2FA ]]>

After the final octet of the first <continue> element, any SASL security layer negotiated in the preceding exchange SHALL be immediately in effect.

-

Clients respond with a <next/> element, which has a single mandatory attribute of "task", containing the selected task name, and contains an OPTIONAL base64 encoded initial response.

+

Clients respond with a <next/> element, which has a single mandatory attribute of "task", containing the selected task name, and contains an OPTIONAL base64 encoded initial response contained in an <initial-response> element.

- SSd2ZSBydW4gb3V0IG9mIGlkZWFzIGhlcmUu + + SSd2ZSBydW4gb3V0IG9mIGlkZWFzIGhlcmUu + ]]>
@@ -227,10 +243,222 @@ + +

This section provides a fictional example. It is important to note that many of the extensions used wihtin this section do not, in fact, exist and therefore are to be avoided.

+ +

Where no additional features that SASL2 makes available are used, the flow of information is identical to the original SASL profile. This example shows the new syntax and draws the reader's attention to the differences.

+ + + + PLAIN + SCRAM-SHA-1 + + + + + + AGFsaWNlQGV4YW1wbGUub3JnCjM0NQ== + + + + + alice@example.org + + + + + + + + + +]]> +

Use of SASL2 in this simple scenario saves one round-trip (due to the lack of stream restart).

+
+ +

Again, this is an equivalent flow to a common SASL1 flow, although using the CRAM-MD5 mechanism which is (thankfully) rarely used in practise.

+ + + + PLAIN + CRAM-MD5 + + + + + + + + + PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ+ + + + + + tim@example.org + + + + + + + + + +]]> +

Use of SASL2 in this simple scenario again simply saves one round-trip.

+
+ +

This moves into the deeply hypothetical. A binding extension is posited, alongside an unrealistic 2FA mechanism which somehow mutually authenticates because why not.

+ + + + BLURDYBLOOP + + + + + + + + SW5pdGlhbCBSZXNwb25zZQ== + + + this-one-please + + + + + + PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ+ + + + + + + QWRkaXRpb25hbCBEYXRh + + + UNREALISTIC-2FA + + + + + + + VW5yZWFsaXN0aWMgMkZBIElS + + + + + + + PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ+ + + + + + + + VW5yZWFsaXN0aWMgMkZBIG11dHVhbCBhdXRoIGRhdGE= + + + alice@example.org/this-one-please + + + + +]]> +

Although the unrealistic 2FA here uses 2 round-trips (real ones will probably use one), the embedding of resource binding as shown here means that a second RTT is saved by SASL2, and there's no net change. A more realistic example would see RTTs saved, and additional negotiations could be added to further reduce RTTs.

+
+
+

Relative to the SASL profile documented in RFC 6120, this introduces more data unprotected by any security layer negotiated by SASL itself.

While no actual exchanges are introduced that are unprotected, the nature of this exchange might allow for (for example) a resource binding extension to be introduced.

-

SASL security layers are sparingly used in the field, however., so this is thought to be a theoretical, rather than practical, concern.

+

SASL security layers are sparingly used in the field, however, so this is thought to be a theoretical, rather than practical, concern.

@@ -242,7 +470,7 @@ -

The author wishes to share any credit with many members of the community, including Lance Stout, Ralph Meijer, and Florian Schmaus.

+

The author wishes to share any credit with many members of the community, including Lance Stout, Ralph Meijer, Phil Roberts and Florian Schmaus.