ietf-corpus

rfc-4227

Using the Simple Object Access Protocol (SOAP) in Blocks Extensible Exchange Protocol (BEEP)

E. O'Tuathail, M. Rose
date2006-01 streamIETF wgnon working group statusPROPOSED STANDARD pages21 canonicalhttps://www.rfc-editor.org/rfc/rfc4227 doi10.17487/RFC4227 errataview
This memo specifies a Simple Object Access Protocol (SOAP) binding to the Blocks Extensible Exchange Protocol (BEEP) core. A SOAP binding describes how SOAP messages are transmitted in the network. The SOAP is an XML-based (eXtensible Markup Language) messaging protocol used to implement a wide variety of distributed messaging models. It defines a message format and describes a variety of message patterns, including, but not limited to, Remote Procedure Calling (RPC), asynchronous event notification, unacknowledged messages, and forwarding via SOAP intermediaries. [STANDARDS-TRACK]

obsoletes

updated by

Extracted elements (25)

design-rationale §6.2

Both 'soap.beep' and 'soap.beeps' URL schemes use identical address resolution algorithms and parameters (same SRV service name, same TCP port), distinguishing only whether session privacy tuning is required.

design-rationale §4.4

The BEEP profile for SOAP does not use the BEEP ERR message for SOAP faults; SOAP faults are always returned in RPY (one-to-one) or ANS (one-to-many) messages. ERR is reserved for BEEP-level errors unrelated to the SOAP envelope (e.g., malformed MIME).

design-rationale §2.1

The boot message serves two purposes: resource identification (each channel provides access to a single resource) and feature negotiation (allowing optional SOAP features such as compression to be negotiated per-channel). This mirrors HTTP's Host header and abs_path conventions.

interoperability-note §2

RFC 3288 used the profile URI 'http://iana.org/beep/soap' for SOAP 1.1. Implementations supporting SOAP 1.1 should recognize both that legacy URI and 'http://iana.org/beep/soap/1.1' for backward compatibility.

normative-requirement §5.3 MUST

An implementation of this binding MUST support the SOAP Message Exchange Pattern 'http://www.w3.org/2003/05/soap/mep/request-response/'.

normative-requirement §3 SHOULD

BEEP profile for SOAP envelopes SHOULD use the media type 'application/soap+xml'; for compatibility with RFC 3288 it MAY use 'application/xml'.

normative-requirement §1 MUST

Conforming implementations MUST support SOAP version 1.2 and MAY support other versions, such as SOAP version 1.1.

security

normative-requirement §5.5.1 MUST

To avoid deadlock during streaming, the requesting SOAP node MUST be able to process incoming SOAP response information while the SOAP request is still being transmitted.

normative-requirement §3 SHOULD

When an implementation supports MTOM/XOP, it SHOULD support the MIME Multipart/Related XOP Package format and MAY support additional formats.

protocol-element §4.1

A one-way message is implemented via a one-to-many BEEP exchange: the client sends a MSG containing a SOAP envelope and the server immediately returns a NUL message before processing the envelope.

protocol-element §4.3

A request/N-responses exchange is implemented via a one-to-many BEEP exchange: the client sends a MSG containing a SOAP envelope, and the server sends zero or more ANS messages each containing an envelope, followed by a NUL message.

protocol-element §4.2

A request-response exchange is implemented via a one-to-one BEEP exchange: the client sends a MSG containing a SOAP envelope and the server returns an RPY message containing a SOAP envelope.

protocol-element §2

The BEEP profile for SOAP is identified by the URI 'http://iana.org/beep/soap/VERSION' in the BEEP 'profile' element during channel creation, where VERSION is the numeric SOAP version (e.g., '1.2').

protocol-element §2.1

The 'bootmsg' element carries a mandatory 'resource' attribute (analogous to HTTP's abs_path Request-URI) and an optional 'features' attribute listing requested optional features. The 'bootrpy' element carries an optional 'features' attribute listing the accepted subset of features.

protocol-element §6.1

The 'soap.beep' URL scheme uses the generic URI syntax with 'soap.beep' as the scheme, a server-based naming authority for the host, and a path component mapping to the 'resource' attribute of the boot message (defaulting to '/' if absent).

dns

protocol-element §6.2

The 'soap.beeps' URL scheme is identical to 'soap.beep' except that the BEEP session must be tuned for privacy (via a transport security profile or a user authentication profile supporting transport security) before the SOAP profile starts.

security, tls

protocol-element §6.1.1

When the soap.beep URL authority contains a domain name with no port, the DNS SRV record algorithm is used with service 'soap-beep' and protocol 'tcp'; if no SRV RRs are found, the IANA-assigned well-known port is used.

dns

registry §8.4

IANA registers 'SOAP over BEEP' as a well-known TCP port number (short name: 'soap-beep') for use when no SRV record is present.

registry

registry §8.2

IANA registers the 'soap.beep' URL scheme identifying a SOAP resource made available using the BEEP profile for SOAP over TCP.

registry

registry §8.3

IANA registers the 'soap.beeps' URL scheme identifying a SOAP resource made available using the BEEP profile for SOAP after the BEEP session has been tuned for privacy.

registry

registry §8.1

IANA registers the URI prefix 'http://iana.org/beep/soap/VERSION' for the family of BEEP profiles for SOAP (one per SOAP version), superseding the earlier 'http://iana.org/beep/soap' registered for RFC 3288.

registry

security-consideration §9 MUST

All implementations MUST provide tuning profiles for authentication (SASL/DIGEST-MD5), confidentiality (TLS with TLS_RSA_WITH_AES_EDE_CBC_SHA), and both combined (TLS with client-side certificates). Implementations may additionally offer MIME-based security such as OpenPGP or S/MIME.

security, tls, crypto

state-machine §2

The BEEP profile for SOAP has two states: 'boot' and 'ready'. In 'boot', the requesting peer sends a 'bootmsg'; receiving a 'bootrpy' transitions to 'ready', while receiving an 'error' leaves the state unchanged. In 'ready', either peer may initiate SOAP message patterns; no state change occurs during message exchange.

state-machine §5.5.1

The requesting SOAP node state machine has states: Init (formulate BEEP message, begin transmission) → Requesting (transmit request, await response; on ERR → Fail, otherwise → Sending+Receiving) → Sending+Receiving (complete request/response; on completion → Success). Success and Fail are terminal states.

state-machine §5.5.2

The responding SOAP node state machine has states: Init (await inbound request; may only generate ERR) → Receiving (receive request, prepare response) → Receiving+Sending (complete receiving/sending) → Success. Success and Fail are terminal states.