[要約] RFC 6120は、XMPPのコアプロトコルであり、メッセージングとプレゼンス情報の拡張可能なプロトコルを定義しています。このRFCの目的は、クライアント間のリアルタイムコミュニケーションを可能にするための標準化と相互運用性の提供です。
Internet Engineering Task Force (IETF) P. Saint-Andre Request for Comments: 6120 Cisco Obsoletes: 3920 March 2011 Category: Standards Track ISSN: 2070-1721
Extensible Messaging and Presence Protocol (XMPP): Core
拡張可能なメッセージとプレゼンスプロトコル(XMPP):コア
Abstract
概要
The Extensible Messaging and Presence Protocol (XMPP) is an application profile of the Extensible Markup Language (XML) that enables the near-real-time exchange of structured yet extensible data between any two or more network entities. This document defines XMPP's core protocol methods: setup and teardown of XML streams, channel encryption, authentication, error handling, and communication primitives for messaging, network availability ("presence"), and request-response interactions. This document obsoletes RFC 3920.
拡張可能なメッセージと存在プロトコル(XMPP)は、任意の2つ以上のネットワークエンティティ間で構造化された拡張可能なデータのほぼリアルタイム交換を可能にする拡張可能なマークアップ言語(XML)のアプリケーションプロファイルです。このドキュメントでは、XMPPのコアプロトコルメソッドを定義しています。XMLストリームのセットアップと分解、チャネル暗号化、認証、エラー処理、およびメッセージングのための通信プリミティブ、ネットワーク可用性(「存在」)、リクエスト応答の相互作用。このドキュメントは、RFC 3920を廃止します。
Status of This Memo
本文書の位置付け
This is an Internet Standards Track document.
これは、インターネット標準トラックドキュメントです。
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.
このドキュメントは、インターネットエンジニアリングタスクフォース(IETF)の製品です。IETFコミュニティのコンセンサスを表しています。公開レビューを受けており、インターネットエンジニアリングステアリンググループ(IESG)からの出版が承認されています。インターネット標準の詳細については、RFC 5741のセクション2で入手できます。
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6120.
このドキュメントの現在のステータス、任意のERRATA、およびそのフィードバックを提供する方法に関する情報は、http://www.rfc-editor.org/info/rfc6120で取得できます。
Copyright Notice
著作権表示
Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved.
Copyright(c)2011 IETF Trustおよび文書著者として特定された人。全著作権所有。
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
このドキュメントは、BCP 78およびIETFドキュメント(http://trustee.ietf.org/license-info)に関連するIETF Trustの法的規定の対象となります。この文書に関するあなたの権利と制限を説明するので、これらの文書を注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、セクション4.Eで説明されている法的規定のセクション4.Eで説明されており、単純化されたBSDライセンスで説明されているように保証なしで提供される簡略化されたBSDライセンステキストを含める必要があります。
Table of Contents
目次
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8 1.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2. History . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3. Functional Summary . . . . . . . . . . . . . . . . . . . 9 1.4. Terminology . . . . . . . . . . . . . . . . . . . . . . 11 2. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1. Global Addresses . . . . . . . . . . . . . . . . . . . . 13 2.2. Presence . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3. Persistent Streams . . . . . . . . . . . . . . . . . . . 14 2.4. Structured Data . . . . . . . . . . . . . . . . . . . . 14 2.5. Distributed Network of Clients and Servers . . . . . . . 14 3. TCP Binding . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2. Resolution of Fully Qualified Domain Names . . . . . . . 17 3.2.1. Preferred Process: SRV Lookup . . . . . . . . . . . 17 3.2.2. Fallback Processes . . . . . . . . . . . . . . . . . 18 3.2.3. When Not to Use SRV . . . . . . . . . . . . . . . . 18 3.2.4. Use of SRV Records with Add-On Services . . . . . . 19 3.3. Reconnection . . . . . . . . . . . . . . . . . . . . . . 19 3.4. Reliability . . . . . . . . . . . . . . . . . . . . . . 20 4. XML Streams . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.1. Stream Fundamentals . . . . . . . . . . . . . . . . . . 20 4.2. Opening a Stream . . . . . . . . . . . . . . . . . . . . 23 4.3. Stream Negotiation . . . . . . . . . . . . . . . . . . . 24 4.3.1. Basic Concepts . . . . . . . . . . . . . . . . . . . 24 4.3.2. Stream Features Format . . . . . . . . . . . . . . . 25 4.3.3. Restarts . . . . . . . . . . . . . . . . . . . . . . 27 4.3.4. Resending Features . . . . . . . . . . . . . . . . . 27 4.3.5. Completion of Stream Negotiation . . . . . . . . . . 27 4.3.6. Determination of Addresses . . . . . . . . . . . . . 28 4.3.7. Flow Chart . . . . . . . . . . . . . . . . . . . . . 29 4.4. Closing a Stream . . . . . . . . . . . . . . . . . . . . 31 4.5. Directionality . . . . . . . . . . . . . . . . . . . . . 32 4.6. Handling of Silent Peers . . . . . . . . . . . . . . . . 33 4.6.1. Dead Connection . . . . . . . . . . . . . . . . . . 34 4.6.2. Broken Stream . . . . . . . . . . . . . . . . . . . 34 4.6.3. Idle Peer . . . . . . . . . . . . . . . . . . . . . 34 4.6.4. Use of Checking Methods . . . . . . . . . . . . . . 35 4.7. Stream Attributes . . . . . . . . . . . . . . . . . . . 35 4.7.1. from . . . . . . . . . . . . . . . . . . . . . . . . 35 4.7.2. to . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.7.3. id . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.7.4. xml:lang . . . . . . . . . . . . . . . . . . . . . . 39 4.7.5. version . . . . . . . . . . . . . . . . . . . . . . 41 4.7.6. Summary of Stream Attributes . . . . . . . . . . . . 43 4.8. XML Namespaces . . . . . . . . . . . . . . . . . . . . . 43
4.8.1. Stream Namespace . . . . . . . . . . . . . . . . . . 43 4.8.2. Content Namespace . . . . . . . . . . . . . . . . . 43 4.8.3. XMPP Content Namespaces . . . . . . . . . . . . . . 44 4.8.4. Other Namespaces . . . . . . . . . . . . . . . . . . 46 4.8.5. Namespace Declarations and Prefixes . . . . . . . . 47 4.9. Stream Errors . . . . . . . . . . . . . . . . . . . . . 48 4.9.1. Rules . . . . . . . . . . . . . . . . . . . . . . . 48 4.9.1.1. Stream Errors Are Unrecoverable . . . . . . . . . 48 4.9.1.2. Stream Errors Can Occur During Setup . . . . . . 49 4.9.1.3. Stream Errors When the Host Is Unspecified or Unknown . . . . . . . . . . . . . . . . . . . . . 50 4.9.1.4. Where Stream Errors Are Sent . . . . . . . . . . 50 4.9.2. Syntax . . . . . . . . . . . . . . . . . . . . . . . 51 4.9.3. Defined Stream Error Conditions . . . . . . . . . . 52 4.9.3.1. bad-format . . . . . . . . . . . . . . . . . . . 52 4.9.3.2. bad-namespace-prefix . . . . . . . . . . . . . . 52 4.9.3.3. conflict . . . . . . . . . . . . . . . . . . . . 53 4.9.3.4. connection-timeout . . . . . . . . . . . . . . . 54 4.9.3.5. host-gone . . . . . . . . . . . . . . . . . . . . 54 4.9.3.6. host-unknown . . . . . . . . . . . . . . . . . . 55 4.9.3.7. improper-addressing . . . . . . . . . . . . . . . 56 4.9.3.8. internal-server-error . . . . . . . . . . . . . . 56 4.9.3.9. invalid-from . . . . . . . . . . . . . . . . . . 56 4.9.3.10. invalid-namespace . . . . . . . . . . . . . . . . 57 4.9.3.11. invalid-xml . . . . . . . . . . . . . . . . . . . 57 4.9.3.12. not-authorized . . . . . . . . . . . . . . . . . 58 4.9.3.13. not-well-formed . . . . . . . . . . . . . . . . . 59 4.9.3.14. policy-violation . . . . . . . . . . . . . . . . 59 4.9.3.15. remote-connection-failed . . . . . . . . . . . . 60 4.9.3.16. reset . . . . . . . . . . . . . . . . . . . . . . 60 4.9.3.17. resource-constraint . . . . . . . . . . . . . . . 61 4.9.3.18. restricted-xml . . . . . . . . . . . . . . . . . 61 4.9.3.19. see-other-host . . . . . . . . . . . . . . . . . 62 4.9.3.20. system-shutdown . . . . . . . . . . . . . . . . . 64 4.9.3.21. undefined-condition . . . . . . . . . . . . . . . 64 4.9.3.22. unsupported-encoding . . . . . . . . . . . . . . 64 4.9.3.23. unsupported-feature . . . . . . . . . . . . . . . 65 4.9.3.24. unsupported-stanza-type . . . . . . . . . . . . . 65 4.9.3.25. unsupported-version . . . . . . . . . . . . . . . 66 4.9.4. Application-Specific Conditions . . . . . . . . . . 67 4.10. Simplified Stream Examples . . . . . . . . . . . . . . . 68 5. STARTTLS Negotiation . . . . . . . . . . . . . . . . . . . . 69 5.1. Fundamentals . . . . . . . . . . . . . . . . . . . . . . 69 5.2. Support . . . . . . . . . . . . . . . . . . . . . . . . 70 5.3. Stream Negotiation Rules . . . . . . . . . . . . . . . . 70 5.3.1. Mandatory-to-Negotiate . . . . . . . . . . . . . . . 70 5.3.2. Restart . . . . . . . . . . . . . . . . . . . . . . 70 5.3.3. Data Formatting . . . . . . . . . . . . . . . . . . 70 5.3.4. Order of TLS and SASL Negotiations . . . . . . . . . 71 5.3.5. TLS Renegotiation . . . . . . . . . . . . . . . . . 71 5.3.6. TLS Extensions . . . . . . . . . . . . . . . . . . . 72 5.4. Process . . . . . . . . . . . . . . . . . . . . . . . . 72 5.4.1. Exchange of Stream Headers and Stream Features . . . 72 5.4.2. Initiation of STARTTLS Negotiation . . . . . . . . . 73 5.4.2.1. STARTTLS Command . . . . . . . . . . . . . . . . 73 5.4.2.2. Failure Case . . . . . . . . . . . . . . . . . . 73 5.4.2.3. Proceed Case . . . . . . . . . . . . . . . . . . 74 5.4.3. TLS Negotiation . . . . . . . . . . . . . . . . . . 74 5.4.3.1. Rules . . . . . . . . . . . . . . . . . . . . . . 74 5.4.3.2. TLS Failure . . . . . . . . . . . . . . . . . . . 75 5.4.3.3. TLS Success . . . . . . . . . . . . . . . . . . . 76 6. SASL Negotiation . . . . . . . . . . . . . . . . . . . . . . 77 6.1. Fundamentals . . . . . . . . . . . . . . . . . . . . . . 77 6.2. Support . . . . . . . . . . . . . . . . . . . . . . . . 77 6.3. Stream Negotiation Rules . . . . . . . . . . . . . . . . 77 6.3.1. Mandatory-to-Negotiate . . . . . . . . . . . . . . . 77 6.3.2. Restart . . . . . . . . . . . . . . . . . . . . . . 78 6.3.3. Mechanism Preferences . . . . . . . . . . . . . . . 78 6.3.4. Mechanism Offers . . . . . . . . . . . . . . . . . . 78 6.3.5. Data Formatting . . . . . . . . . . . . . . . . . . 79 6.3.6. Security Layers . . . . . . . . . . . . . . . . . . 80 6.3.7. Simple User Name . . . . . . . . . . . . . . . . . . 80 6.3.8. Authorization Identity . . . . . . . . . . . . . . . 80 6.3.9. Realms . . . . . . . . . . . . . . . . . . . . . . . 81 6.3.10. Round Trips . . . . . . . . . . . . . . . . . . . . 81 6.4. Process . . . . . . . . . . . . . . . . . . . . . . . . 82 6.4.1. Exchange of Stream Headers and Stream Features . . . 82 6.4.2. Initiation . . . . . . . . . . . . . . . . . . . . . 83 6.4.3. Challenge-Response Sequence . . . . . . . . . . . . 84 6.4.4. Abort . . . . . . . . . . . . . . . . . . . . . . . 84 6.4.5. SASL Failure . . . . . . . . . . . . . . . . . . . . 85 6.4.6. SASL Success . . . . . . . . . . . . . . . . . . . . 86 6.5. SASL Errors . . . . . . . . . . . . . . . . . . . . . . 87 6.5.1. aborted . . . . . . . . . . . . . . . . . . . . . . 88 6.5.2. account-disabled . . . . . . . . . . . . . . . . . . 88 6.5.3. credentials-expired . . . . . . . . . . . . . . . . 88 6.5.4. encryption-required . . . . . . . . . . . . . . . . 89 6.5.5. incorrect-encoding . . . . . . . . . . . . . . . . . 89 6.5.6. invalid-authzid . . . . . . . . . . . . . . . . . . 89 6.5.7. invalid-mechanism . . . . . . . . . . . . . . . . . 90 6.5.8. malformed-request . . . . . . . . . . . . . . . . . 90 6.5.9. mechanism-too-weak . . . . . . . . . . . . . . . . . 90 6.5.10. not-authorized . . . . . . . . . . . . . . . . . . . 91 6.5.11. temporary-auth-failure . . . . . . . . . . . . . . . 91 6.6. SASL Definition . . . . . . . . . . . . . . . . . . . . 91 7. Resource Binding . . . . . . . . . . . . . . . . . . . . . . 92
7.1. Fundamentals . . . . . . . . . . . . . . . . . . . . . . 92 7.2. Support . . . . . . . . . . . . . . . . . . . . . . . . 93 7.3. Stream Negotiation Rules . . . . . . . . . . . . . . . . 93 7.3.1. Mandatory-to-Negotiate . . . . . . . . . . . . . . . 93 7.3.2. Restart . . . . . . . . . . . . . . . . . . . . . . 93 7.4. Advertising Support . . . . . . . . . . . . . . . . . . 93 7.5. Generation of Resource Identifiers . . . . . . . . . . . 94 7.6. Server-Generated Resource Identifier . . . . . . . . . . 94 7.6.1. Success Case . . . . . . . . . . . . . . . . . . . . 94 7.6.2. Error Cases . . . . . . . . . . . . . . . . . . . . 95 7.6.2.1. Resource Constraint . . . . . . . . . . . . . . . 95 7.6.2.2. Not Allowed . . . . . . . . . . . . . . . . . . . 96 7.7. Client-Submitted Resource Identifier . . . . . . . . . . 96 7.7.1. Success Case . . . . . . . . . . . . . . . . . . . . 96 7.7.2. Error Cases . . . . . . . . . . . . . . . . . . . . 97 7.7.2.1. Bad Request . . . . . . . . . . . . . . . . . . . 97 7.7.2.2. Conflict . . . . . . . . . . . . . . . . . . . . 97 7.7.3. Retries . . . . . . . . . . . . . . . . . . . . . . 99 8. XML Stanzas . . . . . . . . . . . . . . . . . . . . . . . . . 99 8.1. Common Attributes . . . . . . . . . . . . . . . . . . . 100 8.1.1. to . . . . . . . . . . . . . . . . . . . . . . . . . 100 8.1.1.1. Client-to-Server Streams . . . . . . . . . . . . 100 8.1.1.2. Server-to-Server Streams . . . . . . . . . . . . 101 8.1.2. from . . . . . . . . . . . . . . . . . . . . . . . . 101 8.1.2.1. Client-to-Server Streams . . . . . . . . . . . . 101 8.1.2.2. Server-to-Server Streams . . . . . . . . . . . . 102 8.1.3. id . . . . . . . . . . . . . . . . . . . . . . . . . 103 8.1.4. type . . . . . . . . . . . . . . . . . . . . . . . . 103 8.1.5. xml:lang . . . . . . . . . . . . . . . . . . . . . . 103 8.2. Basic Semantics . . . . . . . . . . . . . . . . . . . . 105 8.2.1. Message Semantics . . . . . . . . . . . . . . . . . 105 8.2.2. Presence Semantics . . . . . . . . . . . . . . . . . 105 8.2.3. IQ Semantics . . . . . . . . . . . . . . . . . . . . 105 8.3. Stanza Errors . . . . . . . . . . . . . . . . . . . . . 107 8.3.1. Rules . . . . . . . . . . . . . . . . . . . . . . . 108 8.3.2. Syntax . . . . . . . . . . . . . . . . . . . . . . . 109 8.3.3. Defined Conditions . . . . . . . . . . . . . . . . . 110 8.3.3.1. bad-request . . . . . . . . . . . . . . . . . . . 110 8.3.3.2. conflict . . . . . . . . . . . . . . . . . . . . 111 8.3.3.3. feature-not-implemented . . . . . . . . . . . . . 111 8.3.3.4. forbidden . . . . . . . . . . . . . . . . . . . . 112 8.3.3.5. gone . . . . . . . . . . . . . . . . . . . . . . 113 8.3.3.6. internal-server-error . . . . . . . . . . . . . . 113 8.3.3.7. item-not-found . . . . . . . . . . . . . . . . . 114 8.3.3.8. jid-malformed . . . . . . . . . . . . . . . . . . 114 8.3.3.9. not-acceptable . . . . . . . . . . . . . . . . . 115 8.3.3.10. not-allowed . . . . . . . . . . . . . . . . . . . 116 8.3.3.11. not-authorized . . . . . . . . . . . . . . . . . 116 8.3.3.12. policy-violation . . . . . . . . . . . . . . . . 117 8.3.3.13. recipient-unavailable . . . . . . . . . . . . . . 117 8.3.3.14. redirect . . . . . . . . . . . . . . . . . . . . 118 8.3.3.15. registration-required . . . . . . . . . . . . . . 119 8.3.3.16. remote-server-not-found . . . . . . . . . . . . . 119 8.3.3.17. remote-server-timeout . . . . . . . . . . . . . . 120 8.3.3.18. resource-constraint . . . . . . . . . . . . . . . 121 8.3.3.19. service-unavailable . . . . . . . . . . . . . . . 121 8.3.3.20. subscription-required . . . . . . . . . . . . . . 122 8.3.3.21. undefined-condition . . . . . . . . . . . . . . . 123 8.3.3.22. unexpected-request . . . . . . . . . . . . . . . 123 8.3.4. Application-Specific Conditions . . . . . . . . . . 124 8.4. Extended Content . . . . . . . . . . . . . . . . . . . . 125 9. Detailed Examples . . . . . . . . . . . . . . . . . . . . . . 128 9.1. Client-to-Server Examples . . . . . . . . . . . . . . . 128 9.1.1. TLS . . . . . . . . . . . . . . . . . . . . . . . . 128 9.1.2. SASL . . . . . . . . . . . . . . . . . . . . . . . . 130 9.1.3. Resource Binding . . . . . . . . . . . . . . . . . . 132 9.1.4. Stanza Exchange . . . . . . . . . . . . . . . . . . 133 9.1.5. Close . . . . . . . . . . . . . . . . . . . . . . . 134 9.2. Server-to-Server Examples . . . . . . . . . . . . . . . 134 9.2.1. TLS . . . . . . . . . . . . . . . . . . . . . . . . 134 9.2.2. SASL . . . . . . . . . . . . . . . . . . . . . . . . 136 9.2.3. Stanza Exchange . . . . . . . . . . . . . . . . . . 137 9.2.4. Close . . . . . . . . . . . . . . . . . . . . . . . 137 10. Server Rules for Processing XML Stanzas . . . . . . . . . . . 138 10.1. In-Order Processing . . . . . . . . . . . . . . . . . . 138 10.2. General Considerations . . . . . . . . . . . . . . . . . 140 10.3. No 'to' Address . . . . . . . . . . . . . . . . . . . . 141 10.3.1. Message . . . . . . . . . . . . . . . . . . . . . . 141 10.3.2. Presence . . . . . . . . . . . . . . . . . . . . . . 141 10.3.3. IQ . . . . . . . . . . . . . . . . . . . . . . . . . 141 10.4. Remote Domain . . . . . . . . . . . . . . . . . . . . . 142 10.4.1. Existing Stream . . . . . . . . . . . . . . . . . . 142 10.4.2. No Existing Stream . . . . . . . . . . . . . . . . . 142 10.4.3. Error Handling . . . . . . . . . . . . . . . . . . . 143 10.5. Local Domain . . . . . . . . . . . . . . . . . . . . . . 143 10.5.1. domainpart . . . . . . . . . . . . . . . . . . . . . 143 10.5.2. domainpart/resourcepart . . . . . . . . . . . . . . 143 10.5.3. localpart@domainpart . . . . . . . . . . . . . . . . 143 10.5.3.1. No Such User . . . . . . . . . . . . . . . . . . 144 10.5.3.2. User Exists . . . . . . . . . . . . . . . . . . . 144 10.5.4. localpart@domainpart/resourcepart . . . . . . . . . 144 11. XML Usage . . . . . . . . . . . . . . . . . . . . . . . . . . 145 11.1. XML Restrictions . . . . . . . . . . . . . . . . . . . . 145 11.2. XML Namespace Names and Prefixes . . . . . . . . . . . . 146 11.3. Well-Formedness . . . . . . . . . . . . . . . . . . . . 146 11.4. Validation . . . . . . . . . . . . . . . . . . . . . . . 147 11.5. Inclusion of XML Declaration . . . . . . . . . . . . . . 147 11.6. Character Encoding . . . . . . . . . . . . . . . . . . . 147 11.7. Whitespace . . . . . . . . . . . . . . . . . . . . . . . 148 11.8. XML Versions . . . . . . . . . . . . . . . . . . . . . . 148 12. Internationalization Considerations . . . . . . . . . . . . . 148 13. Security Considerations . . . . . . . . . . . . . . . . . . . 148 13.1. Fundamentals . . . . . . . . . . . . . . . . . . . . . . 148 13.2. Threat Model . . . . . . . . . . . . . . . . . . . . . . 149 13.3. Order of Layers . . . . . . . . . . . . . . . . . . . . 150 13.4. Confidentiality and Integrity . . . . . . . . . . . . . 150 13.5. Peer Entity Authentication . . . . . . . . . . . . . . . 151 13.6. Strong Security . . . . . . . . . . . . . . . . . . . . 151 13.7. Certificates . . . . . . . . . . . . . . . . . . . . . . 152 13.7.1. Certificate Generation . . . . . . . . . . . . . . . 152 13.7.1.1. General Considerations . . . . . . . . . . . . . 152 13.7.1.2. Server Certificates . . . . . . . . . . . . . . . 153 13.7.1.3. Client Certificates . . . . . . . . . . . . . . . 156 13.7.1.4. XmppAddr Identifier Type . . . . . . . . . . . . 156 13.7.2. Certificate Validation . . . . . . . . . . . . . . . 157 13.7.2.1. Server Certificates . . . . . . . . . . . . . . . 158 13.7.2.2. Client Certificates . . . . . . . . . . . . . . . 158 13.7.2.3. Checking of Certificates in Long-Lived Streams . 160 13.7.2.4. Use of Certificates in XMPP Extensions . . . . . 160 13.8. Mandatory-to-Implement TLS and SASL Technologies . . . . 160 13.8.1. For Authentication Only . . . . . . . . . . . . . . 161 13.8.2. For Confidentiality Only . . . . . . . . . . . . . . 161 13.8.3. For Confidentiality and Authentication with Passwords . . . . . . . . . . . . . . . . . . . . . 162 13.8.4. For Confidentiality and Authentication without Passwords . . . . . . . . . . . . . . . . . . . . . 163 13.9. Technology Reuse . . . . . . . . . . . . . . . . . . . . 163 13.9.1. Use of Base 64 in SASL . . . . . . . . . . . . . . . 163 13.9.2. Use of DNS . . . . . . . . . . . . . . . . . . . . . 163 13.9.3. Use of Hash Functions . . . . . . . . . . . . . . . 164 13.9.4. Use of SASL . . . . . . . . . . . . . . . . . . . . 164 13.9.5. Use of TLS . . . . . . . . . . . . . . . . . . . . . 165 13.9.6. Use of UTF-8 . . . . . . . . . . . . . . . . . . . . 165 13.9.7. Use of XML . . . . . . . . . . . . . . . . . . . . . 166 13.10. Information Leaks . . . . . . . . . . . . . . . . . . . 166 13.10.1. IP Addresses . . . . . . . . . . . . . . . . . . . . 166 13.10.2. Presence Information . . . . . . . . . . . . . . . . 166 13.11. Directory Harvesting . . . . . . . . . . . . . . . . . . 166 13.12. Denial of Service . . . . . . . . . . . . . . . . . . . 167 13.13. Firewalls . . . . . . . . . . . . . . . . . . . . . . . 169 13.14. Interdomain Federation . . . . . . . . . . . . . . . . . 169 13.15. Non-Repudiation . . . . . . . . . . . . . . . . . . . . 169 14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 170 14.1. XML Namespace Name for TLS Data . . . . . . . . . . . . 170 14.2. XML Namespace Name for SASL Data . . . . . . . . . . . . 170 14.3. XML Namespace Name for Stream Errors . . . . . . . . . . 170 14.4. XML Namespace Name for Resource Binding . . . . . . . . 171 14.5. XML Namespace Name for Stanza Errors . . . . . . . . . . 171 14.6. GSSAPI Service Name . . . . . . . . . . . . . . . . . . 171 14.7. Port Numbers and Service Names . . . . . . . . . . . . . 171 15. Conformance Requirements . . . . . . . . . . . . . . . . . . 172 16. References . . . . . . . . . . . . . . . . . . . . . . . . . 181 16.1. Normative References . . . . . . . . . . . . . . . . . . 181 16.2. Informative References . . . . . . . . . . . . . . . . . 184 Appendix A. XML Schemas . . . . . . . . . . . . . . . . . . . . 190 A.1. Stream Namespace . . . . . . . . . . . . . . . . . . . . 190 A.2. Stream Error Namespace . . . . . . . . . . . . . . . . . 192 A.3. STARTTLS Namespace . . . . . . . . . . . . . . . . . . . 193 A.4. SASL Namespace . . . . . . . . . . . . . . . . . . . . . 194 A.5. Client Namespace . . . . . . . . . . . . . . . . . . . . 196 A.6. Server Namespace . . . . . . . . . . . . . . . . . . . . 201 A.7. Resource Binding Namespace . . . . . . . . . . . . . . . 206 A.8. Stanza Error Namespace . . . . . . . . . . . . . . . . . 206 Appendix B. Contact Addresses . . . . . . . . . . . . . . . . . 208 Appendix C. Account Provisioning . . . . . . . . . . . . . . . . 208 Appendix D. Differences from RFC 3920 . . . . . . . . . . . . . 208 Appendix E. Acknowledgements . . . . . . . . . . . . . . . . . . 210
The Extensible Messaging and Presence Protocol (XMPP) is an application profile of the Extensible Markup Language [XML] that enables the near-real-time exchange of structured yet extensible data between any two or more network entities. This document defines XMPP's core protocol methods: setup and teardown of XML streams, channel encryption, authentication, error handling, and communication primitives for messaging, network availability ("presence"), and request-response interactions.
拡張可能なメッセージと存在プロトコル(XMPP)は、任意の2つ以上のネットワークエンティティ間で構造化された拡張可能なデータのほぼリアルタイム交換を可能にする拡張可能なマークアップ言語[XML]のアプリケーションプロファイルです。このドキュメントでは、XMPPのコアプロトコルメソッドを定義しています。XMLストリームのセットアップと分解、チャネル暗号化、認証、エラー処理、およびメッセージングのための通信プリミティブ、ネットワーク可用性(「存在」)、リクエスト応答の相互作用。
The basic syntax and semantics of XMPP were developed originally within the Jabber open-source community, mainly in 1999. In late 2002, the XMPP Working Group was chartered with developing an adaptation of the base Jabber protocol that would be suitable as an IETF instant messaging (IM) and presence technology in accordance with [IMP-REQS]. In October 2004, [RFC3920] and [RFC3921] were published, representing the most complete definition of XMPP at that time.
XMPPの基本的な構文とセマンティクスは、主に1999年にJabberのオープンソースコミュニティ内で開発されました。2002年後半、XMPPワーキンググループは、IETFインスタントメッセージングとして適したベースジャバープロトコルの適応の開発に巻き込まれました。(IM)および[IMP-Reqs]に従っての存在技術。2004年10月に[RFC3920]および[RFC3921]が公開され、当時のXMPPの最も完全な定義を表しています。
Since 2004 the Internet community has gained extensive implementation and deployment experience with XMPP, including formal interoperability testing carried out under the auspices of the XMPP Standards Foundation (XSF). This document incorporates comprehensive feedback from software developers and XMPP service providers, including a number of backward-compatible modifications summarized under Appendix D. As a result, this document reflects the rough consensus of the Internet community regarding the core features of XMPP 1.0, thus obsoleting RFC 3920.
2004年以来、インターネットコミュニティは、XMPP標準財団(XSF)の後援の下で実施された正式な相互運用性テストを含む、XMPPでの広範な実装および展開経験を獲得しています。このドキュメントには、ソフトウェア開発者とXMPPサービスプロバイダーからの包括的なフィードバックが組み込まれています。これには、付録Dの下に要約されている多くの後方互換的な修正を含みます。その結果、このドキュメントは、XMPP 1.0のコア機能に関するインターネットコミュニティの大まかなコンセンサスを反映しています。RFC 3920。
This non-normative section provides a developer-friendly, functional summary of XMPP; refer to the sections that follow for a normative definition of XMPP.
この非規範的なセクションは、XMPPの開発者に優しい機能的な概要を提供します。XMPPの規範的定義については、次のセクションを参照してください。
The purpose of XMPP is to enable the exchange of relatively small pieces of structured data (called "XML stanzas") over a network between any two (or more) entities. XMPP is typically implemented using a distributed client-server architecture, wherein a client needs to connect to a server in order to gain access to the network and thus be allowed to exchange XML stanzas with other entities (which can be associated with other servers). The process whereby a client connects to a server, exchanges XML stanzas, and ends the connection is:
XMPPの目的は、任意の2つ(またはそれ以上)のエンティティ間のネットワークを介して、比較的小さな構造化データ(「XMLスタンザ」と呼ばれる)の交換を可能にすることです。XMPPは通常、分散クライアントサーバーアーキテクチャを使用して実装されます。クライアントは、ネットワークにアクセスするためにサーバーに接続する必要があり、したがってXMLスタンザを他のエンティティと交換することができます(他のサーバーに関連付けられます)。クライアントがサーバーに接続し、XMLスタンザを交換し、接続を終了するプロセスは次のとおりです。
1. Determine the IP address and port at which to connect, typically based on resolution of a fully qualified domain name (Section 3.2)
1. 通常、完全に適格なドメイン名の解像度に基づいて、接続するIPアドレスとポートを決定します(セクション3.2)
2. Open a Transmission Control Protocol [TCP] connection
2. 送信制御プロトコル[TCP]接続を開きます
3. Open an XML stream over TCP (Section 4.2)
3. TCPを介してXMLストリームを開く(セクション4.2)
4. Preferably negotiate Transport Layer Security [TLS] for channel encryption (Section 5)
4. チャネル暗号化の輸送層セキュリティ[TLS]を交渉することが望ましい(セクション5)
5. Authenticate using a Simple Authentication and Security Layer [SASL] mechanism (Section 6)
5. 簡単な認証とセキュリティレイヤー[SASL]メカニズムを使用して認証(セクション6)
6. Bind a resource to the stream (Section 7)
6. リソースをストリームにバインドします(セクション7)
7. Exchange an unbounded number of XML stanzas with other entities on the network (Section 8)
7. ネットワーク上の他のエンティティとバウンドされていないXMLスタンザを交換します(セクション8)
8. Close the XML stream (Section 4.4)
8. XMLストリームを閉じる(セクション4.4)
9. Close the TCP connection Within XMPP, one server can optionally connect to another server to enable inter-domain or inter-server communication. For this to happen, the two servers need to negotiate a connection between themselves and then exchange XML stanzas; the process for doing so is:
9. XMPP内のTCP接続を閉じると、1つのサーバーがオプションで別のサーバーに接続して、ドメイン間またはサーバー間通信を有効にすることができます。これを行うには、2つのサーバーが自分自身とXMLスタンザを交換することと交換する必要があります。そうするためのプロセスは次のとおりです。
1. Determine the IP address and port at which to connect, typically based on resolution of a fully qualified domain name (Section 3.2)
1. 通常、完全に適格なドメイン名の解像度に基づいて、接続するIPアドレスとポートを決定します(セクション3.2)
2. Open a TCP connection
2. TCP接続を開きます
3. Open an XML stream (Section 4.2)
3. XMLストリームを開く(セクション4.2)
4. Preferably negotiate TLS for channel encryption (Section 5)
4. できればチャネル暗号化のTLSを交渉する(セクション5)
5. Authenticate using a Simple Authentication and Security Layer [SASL] mechanism (Section 6) *
5. 単純な認証とセキュリティレイヤー[SASL]メカニズムを使用して認証(セクション6) *
6. Exchange an unbounded number of XML stanzas both directly for the servers and indirectly on behalf of entities associated with each server, such as connected clients (Section 8)
6. 接続されたクライアントなど、各サーバーに関連付けられているエンティティに代わって、サーバーと間接的に直接、XMLスタンザの無制限の数を交換します(セクション8)
7. Close the XML stream (Section 4.4)
7. XMLストリームを閉じる(セクション4.4)
8. Close the TCP connection
8. TCP接続を閉じます
* Interoperability Note: At the time of writing, most deployed servers still use the Server Dialback protocol [XEP-0220] to provide weak identity verification instead of using SASL with PKIX certificates to provide strong authentication, especially in cases where SASL negotiation would not result in strong authentication anyway (e.g., because TLS negotiation was not mandated by the peer server, or because the PKIX certificate presented by the peer server during TLS negotiation is self-signed and has not been previously accepted); for details, see [XEP-0220]. The solutions specified in this document offer a significantly stronger level of security (see also Section 13.6).
* 相互運用性注:執筆時点では、ほとんどの展開されたサーバーがサーバーダイヤルバックプロトコル[XEP-0220]を使用して、SASLをPKIX証明書で使用して強力な認証を提供するのではなく、弱いID検証を提供します。とにかく強力な認証(たとえば、TLS交渉はピアサーバーによって義務付けられていなかったため、またはTLS交渉中にピアサーバーによって提示されたPKIX証明書が自己署名されており、以前に受け入れられていないため);詳細については、[XEP-0220]を参照してください。このドキュメントで指定されたソリューションは、セキュリティのレベルが大幅に強力になることを提供します(セクション13.6も参照)。
This document specifies how clients connect to servers and specifies the basic semantics of XML stanzas. However, this document does not define the "payloads" of the XML stanzas that might be exchanged once a connection is successfully established; instead, those payloads are defined by various XMPP extensions. For example, [XMPP-IM] defines extensions for basic instant messaging and presence functionality. In addition, various specifications produced in the XSF's XEP series [XEP-0001] define extensions for a wide range of applications.
このドキュメントは、クライアントがサーバーに接続する方法を指定し、XMLスタンザの基本的なセマンティクスを指定します。ただし、このドキュメントでは、接続が正常に確立されると交換される可能性のあるXMLスタンザの「ペイロード」を定義していません。代わりに、これらのペイロードはさまざまなXMPPエクステンションによって定義されます。たとえば、[XMPP-IM]は、基本的なインスタントメッセージングと存在機能の拡張機能を定義します。さらに、XSFのXEPシリーズ[XEP-0001]で作成されたさまざまな仕様は、幅広いアプリケーションの拡張機能を定義しています。
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 RFC 2119 [KEYWORDS].
キーワードは「必須」、「必要」、「必須」、「shall」、「shall "、" bood "、" low "not"、 "becommended"、 "bodement"、 ""、 "、" optional「このドキュメントでは、RFC 2119 [キーワード]で説明されているように解釈されます。
Certain security-related terms are to be understood in the sense defined in [SEC-TERMS]; such terms include, but are not limited to, "assurance", "attack", "authentication", "authorization", "certificate", "certification authority", "certification path", "confidentiality", "credential", "downgrade", "encryption", "hash value", "identity", "integrity", "signature", "self-signed certificate", "sign", "spoof", "tamper", "trust", "trust anchor", "validate", and "verify".
特定のセキュリティ関連の用語は、[secterms]で定義されている意味で理解されるべきです。このような条件には、「保証」、「攻撃」、「認証」、「認証」、「証明書」、「認定機関」、「認定パス」、「機密性」、「資格情報」、「ダウングレード」が含まれますが、これらに限定されません。"、"暗号化 "、"ハッシュバリュー "、「アイデンティティ」、「整合性」、「署名」、「自己署名証明書」、「符号」、「スプーフィング」、「タンパー」、「信頼」、「信頼アンカー」、「検証」、および「検証」。
Certain terms related to certificates, domains, and application service identity are to be understood in the sense defined in [TLS-CERTS]; these include, but are not limited to, "PKIX certificate", "source domain", "derived domain", and the identifier types "CN-ID", "DNS-ID", and "SRV-ID".
証明書、ドメイン、およびアプリケーションサービスのIDに関連する特定の用語は、[TLS-Certs]で定義されている意味で理解されるべきです。これらには、「PKIX証明書」、「ソースドメイン」、「派生ドメイン」、および識別子タイプ「CN-ID」、「DNS-ID」、および「SRV-ID」が含まれますが、これらに限定されません。
Other security-related terms are to be understood in the sense defined in the referenced specifications (for example, "denial of service" as described in [DOS] or "end entity certificate" as described in [PKIX]).
他のセキュリティ関連の用語は、参照される仕様で定義されている意味で理解されます(たとえば、[PKIX]で説明されている[DOS]または「End Entity証明書」で説明されている「サービスの拒否」)。
The term "whitespace" is used to refer to any character or characters matching the "S" production from [XML], i.e., one or more instances of the SP, HTAB, CR, or LF rules defined in [ABNF].
「whitespace」という用語は、[xml]からの「s」制作に一致するキャラクターまたはキャラクター、つまり[abnf]で定義されたSP、htab、cr、またはLFルールの1つ以上のインスタンスを参照するために使用されます。
The terms "localpart", "domainpart", and "resourcepart" are defined in [XMPP-ADDR].
「LocalPart」、「DomainPart」、および「ResourcePart」という用語は、[XMPP-ADDR]で定義されています。
The term "bare JID" refers to an XMPP address of the form <localpart@domainpart> (for an account at a server) or of the form <domainpart> (for a server).
「bare jid」という用語は、フォーム<localpart@domainpart>(サーバーのアカウントの場合)またはフォーム<domainpart>(サーバーの場合)のxmppアドレスを指します。
The term "full JID" refers to an XMPP address of the form <localpart@domainpart/resourcepart> (for a particular authorized client or device associated with an account) or of the form <domainpart/resourcepart> (for a particular resource or script associated with a server).
「フルJID」という用語は、フォーム<localPart@domainpart/resourcePart>(アカウントに関連付けられた特定の承認されたクライアントまたはデバイスに対して)またはフォーム<domainpart/resourcePart>(特定のリソースまたはスクリプトのフォームのXMPPアドレスを指します。サーバーに関連付けられています)。
The term "XML stream" (also "stream") is defined under Section 4.1.
「XMLストリーム」(「ストリーム」)という用語は、セクション4.1で定義されています。
The term "XML stanza" (also "stanza") is defined under Section 4.1. There are three kinds of stanzas: message, presence, and IQ (short for "Info/Query"). These communication primitives are defined under Sections 8.2.1, 8.2.2, and 8.2.3, respectively.
「XML Stanza」(「Stanza」も「スタンザ」)という用語は、セクション4.1で定義されています。スタンザには、メッセージ、存在感、IQの3種類があります(「情報/クエリ」の略です)。これらの通信プリミティブは、それぞれセクション8.2.1、8.2.2、および8.2.3で定義されています。
The term "originating entity" refers to the entity that first generates a stanza that is sent over an XMPP network (e.g., a connected client, an add-on service, or a server). The term "generated stanza" refers to the stanza so generated.
「元のエンティティ」という用語は、XMPPネットワーク(接続されたクライアント、アドオンサービス、またはサーバーなど)で送信されるスタンザを最初に生成するエンティティを指します。「生成されたスタンザ」という用語は、生成されたスタンザを指します。
The term "input stream" designates an XML stream over which a server receives data from a connected client or remote server, and the term "output stream" designates an XML stream over which a server sends data to a connected client or remote server. The following terms designate some of the actions that a server can perform when processing data received over an input stream:
「入力ストリーム」という用語は、接続されたクライアントまたはリモートサーバーからサーバーがデータを受信するXMLストリームを指定し、「出力ストリーム」という用語は、サーバーが接続されたクライアントまたはリモートサーバーにデータを送信するXMLストリームを指定します。次の用語では、入力ストリームを介して受信したデータを処理するときにサーバーが実行できるアクションの一部を指定します。
route: pass the data to a remote server for direct processing by the remote server or eventual delivery to a client associated with the remote server
ルート:リモートサーバーによる直接処理のためにデータをリモートサーバーに渡すか、リモートサーバーに関連付けられているクライアントに最終的な配信
deliver: pass the data to a connected client
配信:データを接続されたクライアントに渡します
ignore: discard the data without acting upon it or returning an error to the sender
無視:データを作用せずにデータを破棄したり、送信者にエラーを返したりする
When the term "ignore" is used with regard to client processing of data it receives, the phrase "without acting upon it" explicitly includes not presenting the data to a human user.
「無視」という用語が受信するデータのクライアント処理に関して使用される場合、「それに基づいて行動せずに」というフレーズには、データを人間のユーザーに明示的に提示しないことが含まれます。
Following the "XML Notation" used in [IRI] to represent characters that cannot be rendered in ASCII-only documents, some examples in this document use the form "&#x...." as a notational device to represent [UNICODE] characters (e.g., the string "ř" stands for the Unicode character LATIN SMALL LETTER R WITH CARON); this form is definitely not to be sent over the wire in XMPP systems.
Consistent with the convention used in [URI] to represent Uniform Resource Identifiers, XMPP addresses in running text are enclosed between '<' and '>' (although natively they are not URIs).
[URI]で使用されている条約と一致して、均一なリソース識別子を表すために、実行されたテキストのXMPPアドレスは「<」と '>'の間に囲まれています(ネイティブにはurisではありませんが)。
In examples, lines have been wrapped for improved readability, "[...]" means elision, and the following prepended strings are used (these prepended strings are not to be sent over the wire):
たとえば、読みやすさを改善するためにラインが包まれています。「[...]は排出を意味し、次の準備された文字列が使用されます(これらの準備された文字列はワイヤー上に送られません):
o C: = a client
o C:=クライアント
o E: = any XMPP entity o I: = an initiating entity
o e:=任意のXMPPエンティティo i:=開始エンティティ
o P: = a peer server
o P:=ピアサーバー
o R: = a receiving entity
o R:=受信エンティティ
o S: = a server
o S:=サーバー
o S1: = server1
o S1:= server1
o S2: = server2
o S2:= server2
Readers need to be aware that the examples are not exhaustive and that, in examples for some protocol flows, the alternate steps shown would not necessarily be triggered by the exact data sent in the previous step; in all cases the protocol definitions specified in this document or in normatively referenced documents rule over any examples provided here. All examples are fictional and the information exchanged (e.g., usernames and passwords) does not represent any existing users or servers.
読者は、例が網羅的ではなく、一部のプロトコルフローの例では、示されている代替手順が前のステップで送信された正確なデータによって必ずしもトリガーされるわけではないことに注意する必要があります。すべての場合において、このドキュメントまたは規範的に参照されたドキュメントで指定されたプロトコル定義は、ここに記載されている例について規則します。すべての例は架空のものであり、交換された情報(ユーザー名やパスワードなど)は、既存のユーザーやサーバーを表していません。
XMPP provides a technology for the asynchronous, end-to-end exchange of structured data by means of direct, persistent XML streams among a distributed network of globally addressable, presence-aware clients and servers. Because this architectural style involves ubiquitous knowledge of network availability and a conceptually unlimited number of concurrent information transactions in the context of a given client-to-server or server-to-server session, we label it "Availability for Concurrent Transactions" (ACT) to distinguish it from the "Representational State Transfer" [REST] architectural style familiar from the World Wide Web. Although the architecture of XMPP is similar in important ways to that of email (see [EMAIL-ARCH]), it introduces several modifications to facilitate communication in close to real time. The salient features of this ACTive architectural style are as follows.
XMPPは、グローバルにアドレス指定可能な存在感を覚えるクライアントおよびサーバーの分散ネットワーク間の直接的な永続的なXMLストリームを使用して、構造化されたデータの非同期でエンドツーエンドの交換のためのテクノロジーを提供します。このアーキテクチャスタイルには、ネットワークの可用性に関するユビキタスな知識と、特定のクライアントからサーバー間またはサーバー間セッションのコンテキストでの概念的に無制限の同時情報トランザクションが含まれるため、「同時トランザクションの可用性」(ACT)にラベルを付けますWorld Wide Webから馴染みのある「代表的な状態転送」[REST]建築スタイルと区別するため。XMPPのアーキテクチャは、メールのアーキテクチャと類似していますが([電子メール-Arch]を参照)、リアルタイムに近いコミュニケーションを促進するためにいくつかの変更を導入します。このアクティブな建築スタイルの顕著な特徴は次のとおりです。
As with email, XMPP uses globally unique addresses (based on the Domain Name System) in order to route and deliver messages over the network. All XMPP entities are addressable on the network, most particularly clients and servers but also various additional services that can be accessed by clients and servers. In general, server addresses are of the form <domainpart> (e.g., <im.example.com>), accounts hosted at a server are of the form <localpart@domainpart> (e.g., <juliet@im.example.com>, called a "bare JID"), and a particular connected device or resource that is currently authorized for interaction on behalf of an account is of the form <localpart@domainpart/resourcepart> (e.g., <juliet@im.example.com/balcony>, called a "full JID"). For historical reasons, XMPP addresses are often called Jabber IDs or JIDs. Because the formal specification of the XMPP address format depends on internationalization technologies that are in flux at the time of writing, the format is defined in [XMPP-ADDR] instead of this document. The terms "localpart", "domainpart", and "resourcepart" are defined more formally in [XMPP-ADDR].
電子メールと同様に、XMPPは、ネットワーク上にメッセージをルーティングして配信するために、グローバルに一意のアドレス(ドメイン名システムに基づいて)を使用します。すべてのXMPPエンティティは、ネットワーク、特にクライアントとサーバーでアドレス指定可能ですが、クライアントやサーバーがアクセスできるさまざまな追加サービスもあります。一般に、サーバーアドレスは<domainpart>(例:<im.example.com>)の形式です。サーバーでホストされているアカウントは、<localpart@domainpart>(例えば、<juliet@im.example.com>、「bare jid」と呼ばれる)、およびアカウントに代わってインタラクションが現在許可されている特定の接続されたデバイスまたはリソースは、フォーム<localpart@domainpart/resourcepart>(例えば、<juliet@im.example.com/バルコニー>、「フルジッド」と呼ばれる)。歴史的な理由から、XMPPアドレスはしばしばJabber IDまたはJIDと呼ばれます。XMPPアドレス形式の正式な仕様は、執筆時点でフラックスにある国際化テクノロジーに依存するため、このドキュメントではなく[XMPP-ADDR]で形式が定義されます。「localpart」、「domainpart」、および「resourcepart」という用語は、[xmpp-addr]でより正式に定義されています。
XMPP includes the ability for an entity to advertise its network availability or "presence" to other entities. In XMPP, this availability for communication is signaled end-to-end by means of a dedicated communication primitive: the <presence/> stanza. Although knowledge of network availability is not strictly necessary for the exchange of XMPP messages, it facilitates real-time interaction because the originator of a message can know before initiating communication that the intended recipient is online and available. End-to-end presence is defined in [XMPP-IM].
XMPPには、エンティティがネットワークの可用性または「存在」を他のエンティティに宣伝する機能が含まれています。XMPPでは、この通信の可用性は、専用の通信原始的な原始によってエンドツーエンドであることを示しています:<encold/> stanza。XMPPメッセージの交換にはネットワークの可用性に関する知識は厳密に必要ではありませんが、メッセージのオリジネーターは、意図した受信者がオンラインで利用可能であることをコミュニケーションを開始する前に知ることができるため、リアルタイムの相互作用を促進します。エンドツーエンドの存在は[XMPP-IM]で定義されています。
Availability for communication is also built into each point-to-point "hop" through the use of persistent XML streams over long-lived TCP connections. These "always-on" client-to-server and server-to-server streams enable each party to push data to the other party at any time for immediate routing or delivery. XML streams are defined under Section 4.
通信の可用性は、長寿命のTCP接続で永続的なXMLストリームを使用することにより、各ポイントツーポイント「ホップ」にも組み込まれています。これらの「常にオン」のクライアントからサーバーへのサーバーからサーバー間ストリームにより、各当事者は即時ルーティングまたは配信のためにいつでもデータを相手にプッシュできます。XMLストリームは、セクション4で定義されています。
The basic protocol data unit in XMPP is not an XML stream (which simply provides the transport for point-to-point communication) but an XML "stanza", which is essentially a fragment of XML that is sent over a stream. The root element of a stanza includes routing attributes (such as "from" and "to" addresses), and the child elements of the stanza contain a payload for delivery to the intended recipient. XML stanzas are defined under Section 8.
XMPPの基本的なプロトコルデータユニットは、XMLストリーム(ポイントツーポイント通信のトランスポートを提供するだけです)ではなく、XML「スタンザ」であり、本質的にストリームに送信されるXMLのフラグメントです。スタンザのルート要素には、ルーティング属性(「from」や「to」など)が含まれ、スタンザの子要素には、意図した受信者への配達のペイロードが含まれています。XMLスタンザはセクション8で定義されています。
In practice, XMPP consists of a network of clients and servers that inter-communicate (however, communication between any two given deployed servers is strictly discretionary and a matter of local service policy). Thus, for example, the user <juliet@im.example.com> associated with the server <im.example.com> might be able to exchange messages, presence, and other structured data with the user <romeo@example.net> associated with the server <example.net>. This pattern is familiar from messaging protocols that make use of global addresses, such as the email network (see [SMTP] and [EMAIL-ARCH]). As a result, end-to-end communication in XMPP is logically peer-to-peer but physically client-to-server-to-server-to-client, as illustrated in the following diagram.
実際には、XMPPは相互に通信するクライアントとサーバーのネットワークで構成されています(ただし、展開されたサーバーの任意の2つの通信は厳密に裁量的であり、ローカルサービスポリシーの問題です)。したがって、たとえば、サーバーに関連付けられているユーザー<juliet@im.example.com> <im.example.com>は、メッセージ、存在、その他の構造化データをユーザー<romeo@example.net>と交換できる可能性があります。サーバーに関連付けられています<example.net>。このパターンは、電子メールネットワークなどのグローバルアドレスを使用するメッセージングプロトコルから馴染みがあります([SMTP]や[電子メールアーチ]を参照)。その結果、XMPPでのエンドツーエンドの通信は、論理的にピアツーピアですが、次の図に示されているように、物理的にはクライアントからサーバーへの登録者から介護者へとクライアントです。
example.net <--------------> im.example.com ^ ^ | | v v romeo@example.net juliet@im.example.com
Figure 1: Distributed Client-Server Architecture
図1:分散クライアントサーバーアーキテクチャ
Informational Note: Architectures that employ XML streams (Section 4) and XML stanzas (Section 8) but that establish peer-to-peer connections directly between clients using technologies based on [LINKLOCAL] have been deployed, but such architectures are not defined in this specification and are best described as "XMPP-like"; for details, see [XEP-0174]. In addition, XML streams can be established end-to-end over any reliable transport, including extensions to XMPP itself; however, such methods are out of scope for this specification.
情報ノート:XMLストリーム(セクション4)およびXMLスタンザ(セクション8)を使用しているが、[LinkLocal]に基づいたテクノロジーを使用してクライアント間でピアツーピア接続を直接確立するアーキテクチャは展開されていますが、このようなアーキテクチャはこれで定義されていません。仕様と「xmpp-like」と最もよく説明されています。詳細については、[XEP-0174]を参照してください。さらに、XMPはXMPP自体への拡張を含む、信頼できる輸送でエンドツーエンドを確立できます。ただし、このような方法は、この仕様の範囲外です。
The following paragraphs describe the responsibilities of clients and servers on the network.
次の段落では、ネットワーク上のクライアントとサーバーの責任について説明しています。
A client is an entity that establishes an XML stream with a server by authenticating using the credentials of a registered account (via SASL negotiation (Section 6)) and that then completes resource binding (Section 7) in order to enable delivery of XML stanzas between the server and the client over the negotiated stream. The client then uses XMPP to communicate with its server, other clients, and any other entities on the network, where the server is responsible for delivering stanzas to other connected clients at the same server or routing them to remote servers. Multiple clients can connect simultaneously to a server on behalf of the same registered account, where each client is differentiated by the resourcepart of an XMPP address (e.g., <juliet@im.example.com/balcony> vs. <juliet@im.example.com/chamber>), as defined under [XMPP-ADDR] and Section 7.
クライアントは、登録済みアカウントの資格情報を使用して(SASL交渉(セクション6)を介して)認証することによりサーバーを備えたXMLストリームを確立するエンティティであり、その後、リソースバインディング(セクション7)を完成させて、XMLスタンザの間で配信できるようにします。ネゴシエートされたストリーム上のサーバーとクライアント。その後、クライアントはXMPPを使用して、サーバー、他のクライアント、およびネットワーク上の他のエンティティと通信します。サーバーは、同じサーバーの他の接続クライアントにスタンザを配信するか、リモートサーバーにルーティングする責任があります。複数のクライアントは、同じ登録済みアカウントに代わってサーバーに同時に接続できます。各クライアントは、XMPPアドレスのリソースパートによって区別されます(例:<juliet@im.example.com/balcony> vs. <juliet@im.example.com/chamber>)、[xmpp-addr]およびセクション7で定義されています。
A server is an entity whose primary responsibilities are to:
サーバーは、主な責任が次のエンティティです。
o Manage XML streams (Section 4) with connected clients and deliver XML stanzas (Section 8) to those clients over the negotiated streams; this includes responsibility for ensuring that a client authenticates with the server before being granted access to the XMPP network.
o 接続されたクライアントを使用してXMLストリーム(セクション4)を管理し、XMLスタンザ(セクション8)を交渉したストリームを介してそれらのクライアントに配信します。これには、XMPPネットワークへのアクセスが許可される前に、クライアントがサーバーで認証されることを保証する責任が含まれます。
o Subject to local service policies on server-to-server communication, manage XML streams (Section 4) with remote servers and route XML stanzas (Section 8) to those servers over the negotiated streams.
o サーバーからサーバーへの通信に関するローカルサービスポリシーを条件として、リモートサーバーとルートXMLスタンザ(セクション8)を使用してXMLストリーム(セクション4)を交渉したストリーム上のサーバーに管理します。
Depending on the application, the secondary responsibilities of an XMPP server can include:
アプリケーションに応じて、XMPPサーバーの二次的な責任には以下を含めることができます。
o Storing data that is used by clients (e.g., contact lists for users of XMPP-based instant messaging and presence applications as defined in [XMPP-IM]); in this case, the relevant XML stanza is handled directly by the server itself on behalf of the client and is not routed to a remote server or delivered to a connected client.
o クライアントが使用するデータの保存(たとえば、[XMPP-IM]で定義されているXMPPベースのインスタントメッセージングおよびプレゼンスアプリケーションのユーザーの連絡先リスト。この場合、関連するXMLスタンザは、クライアントに代わってサーバー自体によって直接処理され、リモートサーバーにルーティングされたり、接続されたクライアントに配信されたりしません。
o Hosting add-on services that also use XMPP as the basis for communication but that provide additional functionality beyond that defined in this document or in [XMPP-IM]; examples include multi-user conferencing services as specified in [XEP-0045] and publish-subscribe services as specified in [XEP-0060].
o また、XMPPを通信の基礎として使用しますが、このドキュメントまたは[XMPP-IM]で定義されているものを超えて追加の機能を提供するアドオンサービスをホスティングします。例には、[XEP-0045]で指定されているマルチユーザー会議サービスと[XEP-0060]で指定されている出版サービスが含まれます。
As XMPP is defined in this specification, an initiating entity (client or server) MUST open a Transmission Control Protocol [TCP] connection to the receiving entity (server) before it negotiates XML streams with the receiving entity. The parties then maintain that TCP connection for as long as the XML streams are in use. The rules specified in the following sections apply to the TCP binding.
XMPPはこの仕様で定義されているため、開始エンティティ(クライアントまたはサーバー)は、受信エンティティとXMLストリームを交渉する前に、受信エンティティ(サーバー)への送信制御プロトコル[TCP]接続を開く必要があります。当事者は、XMLストリームが使用されている限り、TCP接続を維持します。次のセクションで指定されたルールは、TCP結合に適用されます。
Informational Note: There is no necessary coupling of XML streams to TCP, and other transports are possible. For example, two entities could connect to each other by means of [HTTP] as specified in [XEP-0124] and [XEP-0206]. However, this specification defines only a binding of XMPP to TCP.
情報ノート:XMLストリームのTCPへの必要な結合はありません。他のトランスポートは可能です。たとえば、[XEP-0124]および[XEP-0206]で指定されているように、[HTTP]によって2つのエンティティが互いに接続できます。ただし、この仕様では、XMPPのTCPへの結合のみを定義します。
Because XML streams are sent over TCP, the initiating entity needs to determine the IPv4 or IPv6 address (and port) of the receiving entity before it can attempt to open an XML stream. Typically this is done by resolving the receiving entity's fully qualified domain name or FQDN (see [DNS-CONCEPTS]).
XMLストリームはTCPを介して送信されるため、開始エンティティはXMLストリームを開こうとする前に、受信エンティティのIPv4またはIPv6アドレス(およびポート)を決定する必要があります。通常、これは受信エンティティの完全に適格なドメイン名またはFQDNを解決することによって行われます([DNSConcepts]を参照)。
The preferred process for FQDN resolution is to use [DNS-SRV] records as follows:
FQDN解像度の優先プロセスは、次のように[DNS-SRV]レコードを使用することです。
1. The initiating entity constructs a DNS SRV query whose inputs are:
1. 開始エンティティは、入力が次のDNS SRVクエリを構築します。
* a Service of "xmpp-client" (for client-to-server connections) or "xmpp-server" (for server-to-server connections)
* 「xmpp-client」(クライアント間接続用)または「xmpp-server」(サーバー間接続用)のサービス
* a Proto of "tcp"
* 「TCP」の原子
* a Name corresponding to the "origin domain" [TLS-CERTS] of the XMPP service to which the initiating entity wishes to connect (e.g., "example.net" or "im.example.com")
* 開始エンティティが接続を希望するXMPPサービスの「Origin Domain」[TLS-Certs]に対応する名前(例: "emple.net"または "im.example.com"))
2. The result is a query such as "_xmpp-client._tcp.example.net." or "_xmpp-server._tcp.im.example.com.".
2. その結果、「_xmpp-client._tcp.example.net」などのクエリがあります。または「_xmpp-server._tcp.im.example.com」。
3. If a response is received, it will contain one or more combinations of a port and FDQN, each of which is weighted and prioritized as described in [DNS-SRV]. (However, if the result of the SRV lookup is a single resource record with a Target of ".", i.e., the root domain, then the initiating entity MUST abort SRV processing at this point because according to [DNS-SRV] such a Target "means that the service is decidedly not available at this domain".)
3. 応答が受信されると、[DNS-SRV]で説明されているように、それぞれが重み付けされ、優先順位付けされているポートとFDQNの1つ以上の組み合わせが含まれます。(ただし、SRVルックアップの結果が「。」、つまりルートドメインのターゲットを持つ単一のリソースレコードである場合、[DNS-SRV]によると、この時点で開始エンティティはSRV処理を中止する必要があります。ターゲットは、「このドメインでサービスが明らかに利用できないことを意味します」)。)
4. The initiating entity chooses at least one of the returned FQDNs to resolve (following the rules in [DNS-SRV]), which it does by performing DNS "A" or "AAAA" lookups on the FDQN; this will result in an IPv4 or IPv6 address.
4. 開始エンティティは、返されたFQDNSの少なくとも1つを選択して解決します([DNS-SRV]のルールに従ってください)。これは、FDQNでDNS「A」または「AAAA」ルックアップを実行することで行います。これにより、IPv4またはIPv6アドレスが発生します。
5. The initiating entity uses the IP address(es) from the successfully resolved FDQN (with the corresponding port number returned by the SRV lookup) as the connection address for the receiving entity.
5. 開始エンティティは、受信エンティティの接続アドレスとして、正常に解決されたFDQN(対応するポート番号がSRVルックアップで返される)からIPアドレス(ES)を使用します。
6. If the initiating entity fails to connect using that IP address but the "A" or "AAAA" lookups returned more than one IP address, then the initiating entity uses the next resolved IP address for that FDQN as the connection address.
6. 開始エンティティがそのIPアドレスを使用して接続できない場合、「A」または「AAAA」ルックアップが複数のIPアドレスを返した場合、開始エンティティはそのFDQNの次の解決されたIPアドレスを接続アドレスとして使用します。
7. If the initiating entity fails to connect using all resolved IP addresses for a given FDQN, then it repeats the process of resolution and connection for the next FQDN returned by the SRV lookup based on the priority and weight as defined in [DNS-SRV].
7. 開始エンティティが特定のFDQNのすべての解決されたIPアドレスを使用して接続できない場合、[DNS-SRV]で定義されている優先度と重量に基づいてSRVルックアップによって返される次のFQDNの解像度と接続のプロセスを繰り返します。
8. If the initiating entity receives a response to its SRV query but it is not able to establish an XMPP connection using the data received in the response, it SHOULD NOT attempt the fallback process described in the next section (this helps to prevent a state mismatch between inbound and outbound connections).
8. 開始エンティティがSRVクエリへの応答を受信しているが、応答で受信されたデータを使用してXMPP接続を確立できない場合、次のセクションで説明されているフォールバックプロセスを試みてはなりません(これにより、状態の不一致を防ぐのに役立ちます。インバウンドおよびアウトバウンド接続)。
9. If the initiating entity does not receive a response to its SRV query, it SHOULD attempt the fallback process described in the next section.
9. 開始エンティティがSRVクエリへの応答を受け取らない場合、次のセクションで説明したフォールバックプロセスを試みる必要があります。
The fallback process SHOULD be a normal "A" or "AAAA" address record resolution to determine the IPv4 or IPv6 address of the origin domain, where the port used is the "xmpp-client" port of 5222 for client-to-server connections or the "xmpp-server" port of 5269 for server-to-server connections (these are the default ports as registered with the IANA as described under Section 14.7).
フォールバックプロセスは、通常の「A」または「AAAA」アドレスレコード解像度である必要があります。これは、クライアント間接続用の5222の「XMPP-Client」ポートであるOrigin DomainのIPv4またはIPv6アドレスを決定します。または、サーバー間接続用の5269の「xmpp-server」ポート(セクション14.7に記載されているIANAに登録されているデフォルトのポートです)。
If connections via TCP are unsuccessful, the initiating entity might attempt to find and use alternative connection methods such as the HTTP binding (see [XEP-0124] and [XEP-0206]), which might be discovered using [DNS-TXT] records as described in [XEP-0156].
TCPを介した接続が失敗した場合、開始エンティティは、[DNS-TXT] Recordsを使用して発見される可能性のあるHTTPバインディング([XEP-0124]および[XEP-0206]を参照)などの代替接続方法を見つけて使用しようとする可能性があります。[XEP-0156]で説明されているように。
If the initiating entity has been explicitly configured to associate a particular FQDN (and potentially port) with the origin domain of the receiving entity (say, to "hardcode" an association from an origin domain of example.net to a configured FQDN of apps.example.com), the initiating entity is encouraged to use the configured name instead of performing the preferred SRV resolution process on the origin domain.
開始エンティティが、特定のFQDN(および潜在的にポート)を受信エンティティの起源ドメインに関連付けるように明示的に構成されている場合(たとえば、例えば、example.netのオリジンドメインからAppsの設定されたfqdnに関連する関連性を「ハードコード」します。example.com)、開始エンティティは、Originドメインで優先されたSRV解像度プロセスを実行する代わりに、構成された名前を使用することをお勧めします。
Many XMPP servers are implemented in such a way that they can host add-on services (beyond those defined in this specification and [XMPP-IM]) at DNS domain names that typically are "subdomains" of the main XMPP service (e.g., conference.example.net for a [XEP-0045] service associated with the example.net XMPP service) or "subdomains" of the first-level domain of the underlying service (e.g., muc.example.com for a [XEP-0045] service associated with the im.example.com XMPP service). If an entity associated with a remote XMPP server wishes to communicate with such an add-on service, it would generate an appropriate XML stanza and the remote server would attempt to resolve the add-on service's DNS domain name via an SRV lookup on resource records such as "_xmpp-server._tcp.conference.example.net." or "_xmpp-server._tcp.muc.example.com.". Therefore, if the administrators of an XMPP service wish to enable entities associated with remote servers to access such add-on services, they need to advertise the appropriate "_xmpp-server" SRV records in addition to the "_xmpp-server" record for their main XMPP service. In case SRV records are not available, the fallback methods described under Section 3.2.2 can be used to resolve the DNS domain names of add-on services.
多くのXMPPサーバーは、通常、メインXMPPサービスの「サブドメイン」であるDNSドメイン名でアドオンサービス(この仕様で定義されているものと[XMPP-IM]で定義されているものを超えて)をホストできるように実装されています(例えば、会議、会議[xep-0045] example.net xmppサービスに関連付けられた[xep-0045]サービス用の.example.netまたは基礎となるサービスの第1レベルのドメインの「サブドメイン」(例:muc.example.com for a [xep-0045]IM.example.com XMPPサービスに関連するサービス)。リモートXMPPサーバーに関連付けられているエンティティがこのようなアドオンサービスと通信したい場合、適切なXMLスタンザを生成し、リモートサーバーはリソースレコードのSRV検索を介してアドオンサービスのDNSドメイン名を解決しようとします「_xmpp-server._tcp.conference.example.net」などまたは「_xmpp-server._tcp.muc.example.com」。したがって、XMPPサービスの管理者が、リモートサーバーに関連付けられたエンティティがそのようなアドオンサービスにアクセスできるようにすることを希望する場合、彼らは彼らの「_XMPP-Server」レコードに加えて、適切な「_xmpp-server」SRVレコードを宣伝する必要があります。メインXMPPサービス。SRVレコードが利用できない場合、セクション3.2.2で説明されているフォールバック方法を使用して、アドオンサービスのDNSドメイン名を解決できます。
It can happen that an XMPP server goes offline unexpectedly while servicing TCP connections from connected clients and remote servers. Because the number of such connections can be quite large, the reconnection algorithm employed by entities that seek to reconnect can have a significant impact on software performance and network congestion. If an entity chooses to reconnect, it:
接続されたクライアントとリモートサーバーからのTCP接続をサービスしながら、XMPPサーバーが予期せずオフラインになることがあります。そのような接続の数は非常に大きい可能性があるため、再接続を求めているエンティティが採用している再接続アルゴリズムは、ソフトウェアのパフォーマンスとネットワークの混雑に大きな影響を与える可能性があります。エンティティが再接続することを選択した場合、それは次のとおりです。
o SHOULD set the number of seconds that expire before reconnecting to an unpredictable number between 0 and 60 (this helps to ensure that not all entities attempt to reconnect at exactly the same number of seconds after being disconnected).
o 0〜60の予測不可能な数に再接続する前に有効期限が切れる秒数を設定する必要があります(これにより、すべてのエンティティが切断されてからまったく同じ秒数で再接続しようとしないことを確認するのに役立ちます)。
o SHOULD back off increasingly on the time between subsequent reconnection attempts (e.g., in accordance with "truncated binary exponential backoff" as described in [ETHERNET]) if the first reconnection attempt does not succeed.
o 最初の再接続試行が成功しない場合、後続の再接続試行の間にますます後退する必要があります(たとえば、[イーサネット]で説明されている「切り捨てられたバイナリ指数バックオフ」に従って)。
It is RECOMMENDED to make use of TLS session resumption [TLS-RESUME] when reconnecting. A future version of this document, or a separate specification, might provide more detailed guidelines regarding methods for speeding the reconnection process.
再接続するときは、TLSセッション再開[TLS-Resume]を使用することをお勧めします。このドキュメントの将来のバージョン、または個別の仕様は、再接続プロセスを高速化する方法に関するより詳細なガイドラインを提供する場合があります。
The use of long-lived TCP connections in XMPP implies that the sending of XML stanzas over XML streams can be unreliable, since the parties to a long-lived TCP connection might not discover a connectivity disruption in a timely manner. At the XMPP application layer, long connectivity disruptions can result in undelivered stanzas. Although the core XMPP technology defined in this specification does not contain features to overcome this lack of reliability, there exist XMPP extensions for doing so (e.g., [XEP-0198]).
XMPPでの長寿命のTCP接続の使用は、XMLストリームを介したXMLスタンザの送信が信頼できない可能性があることを意味します。XMPPアプリケーションレイヤーでは、長い接続性の破壊により、巻き戻されていないスタンザが生じる可能性があります。この仕様で定義されているコアXMPPテクノロジーには、この信頼性の欠如を克服する機能は含まれていませんが、そうするためのXMPP拡張機能が存在します(例:[XEP-0198])。
Two fundamental concepts make possible the rapid, asynchronous exchange of relatively small payloads of structured information between XMPP entities: XML streams and XML stanzas. These terms are defined as follows.
2つの基本的な概念により、XMPPエンティティ間の構造化された情報の比較的小さなペイロードの迅速で非同期交換:XMLストリームとXMLスタンザが可能になります。これらの用語は、次のように定義されています。
Definition of XML Stream: An XML stream is a container for the exchange of XML elements between any two entities over a network. The start of an XML stream is denoted unambiguously by an opening "stream header" (i.e., an XML <stream> tag with appropriate attributes and namespace declarations), while the end of the XML stream is denoted unambiguously by a closing XML </stream> tag. During the life of the stream, the entity that initiated it can send an unbounded number of XML elements over the stream, either elements used to negotiate the stream (e.g., to complete TLS negotiation (Section 5) or SASL negotiation (Section 6)) or XML stanzas. The "initial stream" is negotiated from the initiating entity (typically a client or server) to the receiving entity (typically a server), and can be seen as corresponding to the initiating entity's "connection to" or "session with" the receiving entity. The initial stream enables unidirectional communication from the initiating entity to the receiving entity; in order to enable exchange of stanzas from the receiving entity to the initiating entity, the receiving entity MUST negotiate a stream in the opposite direction (the "response stream").
XMLストリームの定義:XMLストリームは、ネットワーク上の任意の2つのエンティティ間でXML要素を交換するためのコンテナです。XMLストリームの開始は、オープニング「ストリームヘッダー」(つまり、適切な属性と名前空間宣言を備えたXML <stream>タグ)によって明確に示され、XMLストリームの終了はXML </ストリームの閉鎖によって明確に示されます>タグ。ストリームの存続期間中、それを開始したエンティティは、ストリームの交渉に使用される要素(例:TLS交渉(セクション5))またはSASLの交渉(セクション6)のいずれかの要素に、ストリーム上に無制限の数のXML要素を送信することができます。またはXMLスタンザ。「初期ストリーム」は、開始エンティティ(通常はクライアントまたはサーバー)から受信エンティティ(通常はサーバー)にネゴシエートされ、開始エンティティの「接続」または「セッション」の受信エンティティに対応すると見なすことができます。。初期のストリームにより、開始エンティティから受信エンティティへの単方向通信が可能になります。受信エンティティから開始エンティティへのスタンザの交換を可能にするために、受信エンティティは反対方向にストリームを交渉する必要があります(「応答ストリーム」)。
Definition of XML Stanza: An XML stanza is the basic unit of meaning in XMPP. A stanza is a first-level element (at depth=1 of the stream) whose element name is "message", "presence", or "iq" and whose qualifying namespace is 'jabber:client' or 'jabber:server'. By contrast, a first-level element qualified by any other namespace is not an XML stanza (stream errors, stream features, TLS-related elements, SASL-related elements, etc.), nor is a
XMLスタンザの定義:XMLスタンザは、XMPPの意味の基本単位です。スタンザは、要素名が「メッセージ」、「存在感」、または「IQ」であり、適格な名前空間が「Jabber:Client」または「Jabber:Server」である最初のレベルの要素(ストリームの深さ= 1)です。対照的に、他の名前空間で資格のある第1レベルの要素は、XMLスタンザ(ストリームエラー、ストリーム機能、TLS関連要素、SASL関連要素など)ではなく、
<message/>, <presence/>, or <iq/> element that is qualified by the 'jabber:client' or 'jabber:server' namespace but that occurs at a depth other than one (e.g., a <message/> element contained within an extension element (Section 8.4) for reporting purposes), nor is a <message/>, <presence/>, or <iq/> element that is qualified by a namespace other than 'jabber:client' or 'jabber:server'. An XML stanza typically contains one or more child elements (with accompanying attributes, elements, and XML character data) as necessary in order to convey the desired information, which MAY be qualified by any XML namespace (see [XML-NAMES] as well as Section 8.4 in this specification).
<message/>、<infaction/>、または<iq/>要素「jabber:client」または 'jabber:server' namespaceによって資格がありますが、それは1以外の深さで発生します(例:a <message/>レポート目的のために拡張要素(セクション8.4)内に含まれる要素、<メッセージ/>、<プレゼンス/>、または<iq/>要素は、「jabber:client」または 'jabber以外の名前空間で資格がある<iq/>要素でもありません:サーバ'。XMLスタンザには通常、必要に応じて、必要に応じて1つ以上の子要素(付随する属性、要素、XML文字データを備えた)が含まれています。この仕様のセクション8.4)。
There are three kinds of stanzas: message, presence, and IQ (short for "Info/Query"). These stanza types provide three different communication primitives: a "push" mechanism for generalized messaging, a specialized "publish-subscribe" mechanism for broadcasting information about network availability, and a "request-response" mechanism for more structured exchanges of data (similar to [HTTP]). Further explanations are provided under Section 8.2.1, Section 8.2.2, and Section 8.2.3, respectively.
スタンザには、メッセージ、存在感、IQの3種類があります(「情報/クエリ」の略です)。これらのスタンザタイプは、3つの異なる通信プリミティブを提供します。一般化されたメッセージングの「プッシュ」メカニズム、ネットワークの可用性に関する情報をブロードキャストするための専門的な「パブリッシュサブスクライブ」メカニズム、およびより構造化されたデータ交換のための「要求応答」メカニズム([http])。さらなる説明は、それぞれセクション8.2.1、セクション8.2.2、およびセクション8.2.3に基づいて提供されています。
Consider the example of a client's connection to a server. The client initiates an XML stream by sending a stream header to the server, preferably preceded by an XML declaration specifying the XML version and the character encoding supported (see Section 11.5 and Section 11.6). Subject to local policies and service provisioning, the server then replies with a second XML stream back to the client, again preferably preceded by an XML declaration. Once the client has completed SASL negotiation (Section 6) and resource binding (Section 7), the client can send an unbounded number of XML stanzas over the stream. When the client desires to close the stream, it simply sends a closing </stream> tag to the server as further described under Section 4.4.
サーバーへのクライアントの接続の例を考えてください。クライアントは、XMLバージョンとサポートされているキャラクターエンコードを指定するXML宣言の前に、ストリームヘッダーをサーバーに送信することによりXMLストリームを開始します(セクション11.5およびセクション11.6を参照)。ローカルポリシーとサービスのプロビジョニングに従い、サーバーは2番目のXMLストリームでクライアントに戻り、できればXML宣言が前に回答します。クライアントがSASL交渉(セクション6)とリソース拘束力(セクション7)を完了すると、クライアントはストリーム上に無制限の数のXMLスタンザを送信できます。クライアントがストリームを閉じることを希望する場合、セクション4.4でさらに説明するように、単に</stream>タグをサーバーに送信します。
In essence, then, one XML stream functions as an envelope for the XML stanzas sent during a session and another XML stream functions as an envelope for the XML stanzas received during a session. We can represent this in a simplistic fashion as follows.
本質的に、1つのXMLストリームは、セッション中に送信されたXMLスタンザのエンベロープとして機能し、別のXMLストリームはセッション中に受け取ったXMLスタンザの封筒として機能します。これを次のように単純化する方法で表現できます。
+--------------------+--------------------+ | INITIAL STREAM | RESPONSE STREAM | +--------------------+--------------------+ | <stream> | | |--------------------|--------------------| | | <stream> | |--------------------|--------------------| | <presence> | | | <show/> | | | </presence> | | |--------------------|--------------------| | <message to='foo'> | | | <body/> | | | </message> | | |--------------------|--------------------| | <iq to='bar' | | | type='get'> | | | <query/> | | | </iq> | | |--------------------|--------------------| | | <iq from='bar' | | | type='result'> | | | <query/> | | | </iq> | |--------------------|--------------------| | [ ... ] | | |--------------------|--------------------| | | [ ... ] | |--------------------|--------------------| | </stream> | | |--------------------|--------------------| | | </stream> | +--------------------+--------------------+
Figure 2: A Simplistic View of Two Streams
図2:2つのストリームの単純なビュー
Those who are accustomed to thinking of XML in a document-centric manner might find the following analogies useful:
文書中心の方法でXMLを考えることに慣れている人は、次の類推が役立つかもしれません。
o The two XML streams are like two "documents" (matching the "document" production from [XML]) that are built up through the accumulation of XML stanzas.
o 2つのXMLストリームは、XMLスタンザの蓄積によって構築された2つの「ドキュメント」([XML]からの「ドキュメント」制作と一致する)のようなものです。
o The root <stream/> element is like the "document entity" for each "document" (as described in Section 4.8 of [XML]).
o root <stream/>要素は、[xml]のセクション4.8で説明されている各「ドキュメント」の「ドキュメントエンティティ」のようなものです。
o The XML stanzas sent over the streams are like "fragments" of the "documents" (as described in [XML-FRAG]).
o ストリームに送信されるXMLスタンザは、[XML-Frag]で説明されているように、「ドキュメント」の「フラグメント」のようなものです。
However, these descriptions are merely analogies, because XMPP does not deal in documents and fragments but in streams and stanzas.
ただし、XMPPはドキュメントやフラグメントではなく、ストリームとスタンザでは扱われないため、これらの説明は単なる類推です。
The remainder of this section defines the following aspects of XML streams (along with related topics):
このセクションの残りの部分では、XMLストリームの次の側面を(関連するトピックとともに)定義します。
o How to open a stream (Section 4.2)
o ストリームを開く方法(セクション4.2)
o The stream negotiation process (Section 4.3)
o ストリーム交渉プロセス(セクション4.3)
o How to close a stream (Section 4.4)
o ストリームを閉じる方法(セクション4.4)
o The directionality of XML streams (Section 4.5)
o XMLストリームの方向性(セクション4.5)
o How to handle peers that are silent (Section 4.6)
o サイレントの仲間を扱う方法(セクション4.6)
o The XML attributes of a stream (Section 4.7)
o ストリームのXML属性(セクション4.7)
o The XML namespaces of a stream (Section 4.8)
o ストリームのXMLネームスペース(セクション4.8)
o Error handling related to XML streams (Section 4.9)
o XMLストリームに関連するエラー処理(セクション4.9)
After connecting to the appropriate IP address and port of the receiving entity, the initiating entity opens a stream by sending a stream header (the "initial stream header") to the receiving entity.
適切なIPアドレスと受信エンティティのポートに接続した後、開始エンティティは、受信エンティティにストリームヘッダー(「初期ストリームヘッダー」)を送信することにより、ストリームを開きます。
I: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
The receiving entity then replies by sending a stream header of its own (the "response stream header") to the initiating entity.
その後、受信エンティティは、開始エンティティに独自のストリームヘッダー(「応答ストリームヘッダー」)を送信することで返信します。
R: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
The entities can then proceed with the remainder of the stream negotiation process.
エンティティは、ストリームネゴシエーションプロセスの残りの部分を進めることができます。
Because the receiving entity for a stream acts as a gatekeeper to the domains it services, it imposes certain conditions for connecting as a client or as a peer server. At a minimum, the initiating entity needs to authenticate with the receiving entity before it is allowed to send stanzas to the receiving entity (for client-to-server streams this means using SASL as described under Section 6). However, the receiving entity can consider conditions other than authentication to be mandatory-to-negotiate, such as encryption using TLS as described under Section 5. The receiving entity informs the initiating entity about such conditions by communicating "stream features": the set of particular protocol interactions that the initiating entity needs to complete before the receiving entity will accept XML stanzas from the initiating entity, as well as any protocol interactions that are voluntary-to-negotiate but that might improve the handling of an XML stream (e.g., establishment of application-layer compression as described in [XEP-0138]).
ストリームの受信エンティティは、ドメインITサービスのゲートキーパーとして機能するため、クライアントまたはピアサーバーとして接続するための特定の条件を課します。少なくとも、開始エンティティは、受信エンティティにスタンザを送信する前に、受信エンティティと認証する必要があります(クライアントからサーバーのストリームの場合、これはセクション6で説明されているようにSASLを使用します)。ただし、受信エンティティは、セクション5に記載されているTLSを使用した暗号化など、認証以外の条件を義務付けられることを考慮することができます。開始エンティティが受信エンティティが開始エンティティからXMLスタンザを受け入れる前に完了する必要がある特定のプロトコルの相互作用、および自発的なものから交渉するプロトコルの相互作用は、XMLストリームの取り扱いを改善する可能性がある(例えば、設立を改善する可能性がある[XEP-0138]に記載されているアプリケーション層圧縮の)。
The existence of conditions for connecting implies that streams need to be negotiated. The order of layers (TCP, then TLS, then SASL, then XMPP as described under Section 13.3) implies that stream negotiation is a multi-stage process. Further structure is imposed by two factors: (1) a given stream feature might be offered only to certain entities or only after certain other features have been negotiated (e.g., resource binding is offered only after SASL authentication), and (2) stream features can be either mandatory-to-negotiate or voluntary-to-negotiate. Finally, for security reasons the parties to a stream need to discard knowledge that they gained during the negotiation process after successfully completing the protocol interactions defined for certain features (e.g., TLS in all cases and SASL in the case when a security layer might be established, as defined in the specification for the relevant SASL mechanism). This is done by flushing the old stream context and exchanging new stream headers over the existing TCP connection.
接続するための条件の存在は、ストリームを交渉する必要があることを意味します。レイヤーの順序(TCP、TLS、次にSASL、次にセクション13.3で説明されているXMPP)は、ストリーム交渉がマルチステージプロセスであることを意味します。さらなる構造は2つの要因によって課されます。(1)特定のストリーム機能は、特定のエンティティにのみ提供されるか、特定の他の機能がネゴシエートされた後にのみ提供される場合があります(例:リソースバインディングはSASL認証後にのみ提供されます)、(2)ストリーム機能義務的なものから交渉するか、自発的であることがあります。最後に、セキュリティ上の理由から、特定の機能に対して定義されたプロトコルインタラクションを正常に完了した後、交渉プロセス中に得た知識を廃棄する必要があります(たとえば、すべての場合にTLS、セキュリティレイヤーが確立される場合のSASL、関連するSASLメカニズムの仕様で定義されています)。これは、古いストリームコンテキストをフラッシュし、既存のTCP接続上で新しいストリームヘッダーを交換することによって行われます。
If the initiating entity includes in the initial stream header the 'version' attribute set to a value of at least "1.0" (see Section 4.7.5), after sending the response stream header the receiving entity MUST send a <features/> child element (typically prefixed by the stream namespace prefix as described under Section 4.8.5) to the initiating entity in order to announce any conditions for continuation of the stream negotiation process. Each condition takes the form of a child element of the <features/> element, qualified by a namespace that is different from the stream namespace and the content namespace. The <features/> element can contain one child, contain multiple children, or be empty.
開始エンティティが初期ストリームヘッダーに含まれている場合、「バージョン」属性が少なくとも「1.0」の値に設定されている場合(セクション4.7.5を参照)、応答ストリームヘッダーを送信した後、受信エンティティは<機能/>子を送信する必要があります。ストリームネゴシエーションプロセスの継続条件を発表するために、開始エンティティに、セクション4.8.5に記載されているストリーム名空間プレフィックスでプレフィックスを付けます)。各条件は、<feature/>要素の子要素の形をとっており、ストリーム名空間やコンテンツネームスペースとは異なる名前空間で資格があります。<feature/>要素には、1人の子供を含めるか、複数の子供を含む、または空にすることができます。
Implementation Note: The order of child elements contained in any given <features/> element is not significant.
実装注:特定の<機能/>要素に含まれる子要素の順序は重要ではありません。
If a particular stream feature is or can be mandatory-to-negotiate, the definition of that feature needs to do one of the following:
特定のストリーム機能が義務的であるか、依存する可能性がある場合、その機能の定義は次のいずれかを実行する必要があります。
1. Declare that the feature is always mandatory-to-negotiate (e.g., this is true of resource binding for XMPP clients); or
1. この機能は常に必須であることを宣言します(たとえば、これはXMPPクライアントのリソースバインディングに当てはまります)。また
2. Specify a way for the receiving entity to flag the feature as mandatory-to-negotiate for this interaction (e.g., for STARTTLS, this is done by including an empty <required/> element in the advertisement for that stream feature, but that is not a generic format for all stream features); it is RECOMMENDED that stream feature definitions for new mandatory-to-negotiate features do so by including an empty <required/> element as is done for STARTTLS.
2. 受信エンティティがこの相互作用に対して必須として機能にフラグを立てる方法を指定します(例えば、startTLSの場合、これはそのストリーム機能の広告に空の<必須/>要素を含めることによって行われますが、それはそうではありませんすべてのストリーム機能の汎用形式);StartTLSに対して行われているように、空の<必須/>要素を含めることにより、新しい強制対交渉機能のストリーム機能定義を行うことをお勧めします。
Informational Note: Because there is no generic format for indicating that a feature is mandatory-to-negotiate, it is possible that a feature that is not understood by the initiating entity might be considered mandatory-to-negotiate by the receiving entity, resulting in failure of the stream negotiation process. Although such an outcome would be undesirable, the working group deemed it rare enough that a generic format was not needed.
情報ノート:機能が必須であることを示すための一般的な形式がないため、開始エンティティによって理解されていない機能は、受信エンティティによって必須と見なされる可能性があります。ストリーム交渉プロセスの失敗。そのような結果は望ましくないでしょうが、ワーキンググループは、一般的な形式が必要ないほど珍しいと考えていました。
For security reasons, certain stream features necessitate the initiating entity to send a new initial stream header upon successful negotiation of the feature (e.g., TLS in all cases and SASL in the case when a security layer might be established). If this is true of a given stream feature, the definition of that feature needs to specify that a stream restart is expected after negotiation of the feature.
セキュリティ上の理由から、特定のストリーム機能により、機能の交渉が成功したときに新しい初期ストリームヘッダーを送信するために開始エンティティが必要です(たとえば、すべての場合のTLSおよびセキュリティレイヤーが確立される場合のSASL)。これが特定のストリーム機能に当てはまる場合、その機能の定義は、機能の交渉後にストリーム再起動が予想されることを指定する必要があります。
A <features/> element that contains at least one mandatory-to-negotiate feature indicates that the stream negotiation is not complete and that the initiating entity MUST negotiate further features.
少なくとも1つの必須のネゴシエートへの機能を含む<機能/>要素は、ストリームの交渉が完全ではなく、開始エンティティがさらなる機能をネゴシエートする必要があることを示しています。
R: <stream:features> <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'> <required/> </starttls> </stream:features>
A <features/> element MAY contain more than one mandatory-to-negotiate feature. This means that the initiating entity can choose among the mandatory-to-negotiate features at this stage of the stream negotiation process. As an example, perhaps a future technology will perform roughly the same function as TLS, so the receiving entity might advertise support for both TLS and the future technology at the same stage of the stream negotiation process. However, this applies only at a given stage of the stream negotiation process and does not apply to features that are mandatory-to-negotiate at different stages (e.g., the receiving entity would not advertise both STARTTLS and SASL as mandatory-to-negotiate, or both SASL and resource binding as mandatory-to-negotiate, because TLS would need to be negotiated before SASL and because SASL would need to be negotiated before resource binding).
A <feature/>要素には、複数の必須対応機能が含まれる場合があります。これは、開始エンティティが、ストリームネゴシエーションプロセスのこの段階で、必須の機能を選択できるようにすることができることを意味します。例として、おそらく将来のテクノロジーはTLSとほぼ同じ機能を実行するため、受信エンティティは、ストリームネゴシエーションプロセスの同じ段階でTLSと将来のテクノロジーの両方のサポートを宣伝する可能性があります。ただし、これはストリームネゴシエーションプロセスの特定の段階でのみ適用され、異なる段階で義務的に合うようにする機能には適用されません(たとえば、受信エンティティはStartTLSとSASLの両方を強制的に交渉することを宣伝しません。または、TLSをSASLの前に交渉する必要があり、SASLがリソース拘束の前に交渉する必要があるため、SASLとリソースの両方の拘束力が強制的に交渉される必要があります。
A <features/> element that contains both mandatory-to-negotiate and voluntary-to-negotiate features indicates that the negotiation is not complete but that the initiating entity MAY complete the voluntary-to-negotiate feature(s) before it attempts to negotiate the mandatory-to-negotiate feature(s).
A <機能/>要素は、必須の否定的および自発的な機能の両方を含む要素は、交渉が完全ではないが、開始エンティティが交渉を試みる前に自発的な機能を完了する可能性があることを示しています。必須から交渉される機能。
R: <stream:features> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/> <compression xmlns='http://jabber.org/features/compress'> <method>zlib</method> <method>lzw</method> </compression> </stream:features>
A <features/> element that contains only voluntary-to-negotiate features indicates that the stream negotiation is complete and that the initiating entity is cleared to send XML stanzas, but that the initiating entity MAY negotiate further features if desired.
自発的なネゴシエートの機能のみを含む<機能/>要素は、ストリームの交渉が完了し、開始エンティティがXMLスタンザを送信するためにクリアされていることを示していますが、開始エンティティは必要に応じてさらなる機能を交渉する可能性があります。
R: <stream:features> <compression xmlns='http://jabber.org/features/compress'> <method>zlib</method> <method>lzw</method> </compression> </stream:features>
An empty <features/> element indicates that the stream negotiation is complete and that the initiating entity is cleared to send XML stanzas.
空の<機能/>要素は、ストリームのネゴシエーションが完了し、開始エンティティがXMLスタンザを送信するためにクリアされていることを示します。
R: <stream:features/>
On successful negotiation of a feature that necessitates a stream restart, both parties MUST consider the previous stream to be replaced but MUST NOT send a closing </stream> tag and MUST NOT terminate the underlying TCP connection; instead, the parties MUST reuse the existing connection, which might be in a new state (e.g., encrypted as a result of TLS negotiation). The initiating entity then MUST send a new initial stream header, which SHOULD be preceded by an XML declaration as described under Section 11.5. When the receiving entity receives the new initial stream header, it MUST generate a new stream ID (instead of reusing the old stream ID) before sending a new response stream header (which SHOULD be preceded by an XML declaration as described under Section 11.5).
ストリームの再起動を必要とする機能の交渉が成功した場合、両当事者は以前のストリームを交換することを検討する必要がありますが、クロージング</stream>タグを送信してはならず、基礎となるTCP接続を終了してはなりません。代わりに、当事者は既存の接続を再利用する必要があります。既存の接続は、新しい状態にある可能性があります(たとえば、TLS交渉の結果として暗号化されます)。開始エンティティは、セクション11.5に記載されているように、XML宣言が先行する必要がある新しい初期ストリームヘッダーを送信する必要があります。受信エンティティが新しい初期ストリームヘッダーを受信する場合、新しい応答ストリームヘッダーを送信する前に、新しいストリームIDを(古いストリームIDを再利用する代わりに)生成する必要があります(セクション11.5に記載されているようにXML宣言が先行する必要があります)。
The receiving entity MUST send an updated list of stream features to the initiating entity after a stream restart. The list of updated features MAY be empty if there are no further features to be advertised or MAY include any combination of features.
受信エンティティは、ストリームの再起動後、ストリーム機能の更新リストを開始エンティティに送信する必要があります。更新された機能のリストは、宣伝すべき機能がない場合、または機能の任意の組み合わせを含める場合がある場合に空になる場合があります。
The receiving entity indicates completion of the stream negotiation process by sending to the initiating entity either an empty <features/> element or a <features/> element that contains only voluntary-to-negotiate features. After doing so, the receiving entity MAY send an empty <features/> element (e.g., after negotiation of such voluntary-to-negotiate features) but MUST NOT send additional stream features to the initiating entity (if the receiving entity has new features to offer, preferably limited to mandatory-to-negotiate or security-critical features, it can simply close the stream with a <reset/> stream error (Section 4.9.3.16) and then advertise the new features when the initiating entity reconnects, preferably closing existing streams in a staggered way so that not all of the initiating entities reconnect at once). Once stream negotiation is complete, the initiating entity is cleared to send XML stanzas over the stream for as long as the stream is maintained by both parties.
受信エンティティは、空の<機能/>要素または自発的なネゴシエートのみのみを含む<feature/>要素のいずれかを開始エンティティに送信することにより、ストリームネゴシエーションプロセスの完了を示します。そうする後、受信エンティティは空の<機能/>要素(例えば、そのような自発的な交渉機能の交渉後)を送信する場合がありますが、開始エンティティに追加のストリーム機能を送信してはなりません(受信エンティティに新しい機能がある場合オファーは、必須またはセキュリティクリティカルな機能に限定されることが望ましいため、<set/>ストリームエラー(セクション4.9.3.16)でストリームを閉じるだけで、開始エンティティが再接続するときに新機能を宣伝し、できれば閉じることができます既存のストリームはずらされた方法で、すべての開始エンティティが一度に再接続するわけではありません)。ストリームのネゴシエーションが完了すると、開始エンティティは、ストリームが両当事者によって維持されている限り、XMLスタンザをストリーム上に送信するためにクリアされます。
Informational Note: Resource binding as specified under Section 7 is an historical exception to the foregoing rule, since it is mandatory-to-negotiate for clients but uses XML stanzas for negotiation purposes.
情報ノート:セクション7で指定されているリソースバインディングは、前述のルールの歴史的例外です。これは、クライアントには必須であるが、交渉目的でXMLスタンザを使用するためです。
The initiating entity MUST NOT attempt to send XML stanzas (Section 8) to entities other than itself (i.e., the client's connected resource or any other authenticated resource of the client's account) or the server to which it is connected until stream negotiation has been completed. Even if the initiating entity does attempt to do so, the receiving entity MUST NOT accept such stanzas and MUST close the stream with a <not-authorized/> stream error (Section 4.9.3.12). This rule applies to XML stanzas only (i.e., <message/>, <presence/>, and <iq/> elements qualified by the content namespace) and not to XML elements used for stream negotiation (e.g., elements used to complete TLS negotiation (Section 5) or SASL negotiation (Section 6)).
開始エンティティは、XMLスタンザ(セクション8)をそれ自体以外のエンティティ(つまり、クライアントの接続されたリソースまたはクライアントのアカウントのその他の認証されたリソース)またはストリームネゴシエーションが完了するまで接続されているサーバーに送信しようとしてはなりません。開始エンティティがそうしようとしたとしても、受信エンティティはそのようなスタンザを受け入れてはなりません。このルールは、XMLスタンザのみに適用されます(すなわち、<メッセージ/>、<プレゼンス/>、および<IQ/>要素がコンテンツネームスペースで適格です)。(セクション5)またはSASL交渉(セクション6))。
After the parties to an XML stream have completed the appropriate aspects of stream negotiation, the receiving entity for a stream MUST determine the initiating entity's JID.
XMLストリームの当事者がストリームネゴシエーションの適切な側面を完了した後、ストリームの受信エンティティは開始エンティティのJIDを決定する必要があります。
For client-to-server communication, both SASL negotiation (Section 6) and resource binding (Section 7) MUST be completed before the server can determine the client's address. The client's bare JID (<localpart@domainpart>) MUST be the authorization identity (as defined by [SASL]), either (1) as directly communicated by the client during SASL negotiation (Section 6) or (2) as derived by the server from the authentication identity if no authorization identity was specified during SASL negotiation. The resourcepart of the full JID (<localpart@domainpart/resourcepart>) MUST be the resource negotiated by the client and server during resource binding (Section 7). A client MUST NOT attempt to guess at its JID but instead MUST consider its JID to be whatever the server returns to it during resource binding. The server MUST ensure that the resulting JID (including localpart, domainpart, resourcepart, and separator characters) conforms to the canonical format for XMPP addresses defined in [XMPP-ADDR]; to meet this restriction, the server MAY replace the JID sent by the client with the canonicalized JID as determined by the server and communicate that JID to the client during resource binding.
クライアント間通信の場合、サーバーがクライアントのアドレスを決定する前に、SASL交渉(セクション6)とリソースバインディング(セクション7)の両方を完了する必要があります。クライアントの裸のjid(<localpart@domainpart>)は、SASL交渉中にクライアントによって直接伝えられているように、(1)のいずれかの認証ID([SASL]によって定義されている)でなければなりません(セクション6)、または(2)SASL交渉中に認証IDが指定されていない場合、認証IDからサーバー。フルJID(<localPart@domainpart/resourcePart>)のリソースパートは、リソースバインディング中にクライアントとサーバーによって交渉されたリソースでなければなりません(セクション7)。クライアントは、JIDを推測しようとしてはなりませんが、代わりに、JIDがリソースバインディング中にサーバーが戻ってくるものであると考える必要があります。サーバーは、結果のJID(LocalPart、DomainPart、ResourcePart、およびSeparator文字を含む)が、[XMPP-ADDR]で定義されたXMPPアドレスの正規形式に適合することを確認する必要があります。この制限を満たすために、サーバーは、サーバーによって決定されたように、クライアントから送信されたJIDを標準化されたJIDに置き換え、そのJIDをリソースバインディング中にクライアントに通知することができます。
For server-to-server communication, the initiating server's bare JID (<domainpart>) MUST be the authorization identity (as defined by [SASL]), either (1) as directly communicated by the initiating server during SASL negotiation (Section 6) or (2) as derived by the receiving server from the authentication identity if no authorization identity was specified during SASL negotiation. In the absence of SASL negotiation, the receiving server MAY consider the authorization identity to be an identity negotiated within the relevant verification protocol (e.g., the 'from' attribute of the <result/> element in Server Dialback [XEP-0220]).
サーバー間通信の場合、SASL交渉中に開始サーバーによって直接通知される(1)のいずれかのいずれかの承認アイデンティティ([SASL]によって定義されている)の開始サーバーの裸のJID(<domainpart>)は、承認ID([SASL]によって定義されている)でなければなりません(セクション6)または(2)SASL交渉中に承認IDが指定されていない場合、認証IDから受信サーバーによって導出されるように。SASL交渉がない場合、受信サーバーは、認証IDが関連する検証プロトコル内でネゴシエートされたIDと見なす場合があります(例:Server Dialback [XEP-0220]の<結果/>要素の「from」属性)。
Security Warning: Because it is possible for a third party to tamper with information that is sent over the stream before a security layer such as TLS is successfully negotiated, it is advisable for the receiving server to treat any such unprotected information with caution; this applies especially to the 'from' and 'to' addresses on the first initial stream header sent by the initiating entity.
セキュリティ警告:TLSなどのセキュリティレイヤーが正常に交渉される前にストリームを介して送信される情報を第三者が改ざんする可能性があるため、受信サーバーがそのような保護されていない情報を注意して扱うことをお勧めします。これは、特に開始エンティティによって送信された最初の初期ストリームヘッダーの「From」および「to」アドレスに適用されます。
We summarize the foregoing rules in the following non-normative flow chart for the stream negotiation process, presented from the perspective of the initiating entity.
開始エンティティの観点から提示された、ストリームネゴシエーションプロセスの以下の非規範的なフローチャートに、前述のルールを要約します。
+---------------------+ | open TCP connection | +---------------------+ | v +---------------+ | send initial |<-------------------------+ | stream header | ^ +---------------+ | | | v | +------------------+ | | receive response | | | stream header | | +------------------+ | | | v | +----------------+ | | receive stream | | +------------------>| features | | ^ {OPTIONAL} +----------------+ | | | | | v | | +<-----------------+ | | | | | {empty?} ----> {all voluntary?} ----> {some mandatory?} | | | no | no | | | | yes | yes | yes | | | v v | | | +---------------+ +----------------+ | | | | MAY negotiate | | MUST negotiate | | | | | any or none | | one feature | | | | +---------------+ +----------------+ | | v | | | | +---------+ v | | | | DONE |<----- {negotiate?} | | | +---------+ no | | | | yes | | | | v v | | +--------->+<---------+ | | | | | v | +<-------------------------- {restart mandatory?} ------------>+ no yes
Figure 3: Stream Negotiation Flow Chart
図3:ストリームネゴシエーションフローチャート
An XML stream from one entity to another can be closed at any time, either because a specific stream error (Section 4.9) has occurred or in the absence of an error (e.g., when a client simply ends its session).
特定のストリームエラー(セクション4.9)が発生したか、エラーがない場合(たとえば、クライアントが単にセッションを終了する場合)、あるエンティティから別のエンティティへのXMLストリームをいつでも閉じることができます。
A stream is closed by sending a closing </stream> tag.
クロージング</stream>タグを送信することにより、ストリームが閉じられます。
E: </stream:stream>
If the parties are using either two streams over a single TCP connection or two streams over two TCP connections, the entity that sends the closing stream tag MUST behave as follows:
当事者が単一のTCP接続で2つのストリームを使用している場合、または2つのTCP接続で2つのストリームを使用している場合、クロージングストリームタグを送信するエンティティは次のように動作する必要があります。
1. Wait for the other party to also close its outbound stream before terminating the underlying TCP connection(s); this gives the other party an opportunity to finish transmitting any outbound data to the closing entity before the termination of the TCP connection(s).
1. 基礎となるTCP接続を終了する前に、相手がアウトバウンドストリームを閉じるのを待ちます。これにより、TCP接続が終了する前に、アウトバウンドデータの送信を終了エンティティに送信する機会が相手になります。
2. Refrain from sending any further data over its outbound stream to the other entity, but continue to process data received from the other entity (and, if necessary, process such data).
2. アウトバウンドストリームを介して他のエンティティにさらなるデータを送信することは控えますが、他のエンティティから受信したデータの処理を続けます(必要に応じて、そのようなデータを処理します)。
3. Consider both streams to be void if the other party does not send its closing stream tag within a reasonable amount of time (where the definition of "reasonable" is a matter of implementation or deployment).
3. 相手が合理的な時間内にクロージングストリームタグを送信しない場合(「合理的」の定義が実装または展開の問題である場合)、両方のストリームが無効であると考えてください。
4. After receiving a reciprocal closing stream tag from the other party or waiting a reasonable amount of time with no response, terminate the underlying TCP connection(s).
4. 相互のクロージングストリームタグを相手から受け取った後、または応答なしで合理的な時間を待った後、基礎となるTCP接続を終了します。
Security Warning: In accordance with Section 7.2.1 of [TLS], to help prevent a truncation attack the party that is closing the stream MUST send a TLS close_notify alert and MUST receive a responding close_notify alert from the other party before terminating the underlying TCP connection(s).
セキュリティ警告:[TLS]のセクション7.2.1に従って、切り捨て攻撃を防ぐために、ストリームを閉鎖している当事者は、TLS close_notifyアラートを送信する必要があり、基礎となるTCPを終了する前に相手のclose_notifyアラートを受信する必要があります。接続(s)。
If the parties are using multiple streams over multiple TCP connections, there is no defined pairing of streams and therefore the behavior is a matter for implementation.
当事者が複数のTCP接続で複数のストリームを使用している場合、ストリームのペアリングは定義されていないため、動作は実装の問題です。
An XML stream is always unidirectional, by which is meant that XML stanzas can be sent in only one direction over the stream (either from the initiating entity to the receiving entity or from the receiving entity to the initiating entity).
XMLストリームは常に単方向です。つまり、XMLスタンザは、ストリーム上で(開始エンティティから受信エンティティへ、または受信エンティティから開始エンティティまで)1つの方向にのみ送信できます。
Depending on the type of session that has been negotiated and the nature of the entities involved, the entities might use:
交渉されたセッションの種類と、関係する事業体の性質に応じて、エンティティは以下を使用する場合があります。
o Two streams over a single TCP connection, where the security context negotiated for the first stream is applied to the second stream. This is typical for client-to-server sessions, and a server MUST allow a client to use the same TCP connection for both streams.
o 単一のTCP接続上の2つのストリーム。最初のストリームのセキュリティコンテキストが2番目のストリームに適用されます。これはクライアント間セッションに典型的なものであり、サーバーはクライアントが両方のストリームに対して同じTCP接続を使用できるようにする必要があります。
o Two streams over two TCP connections, where each stream is separately secured. In this approach, one TCP connection is used for the stream in which stanzas are sent from the initiating entity to the receiving entity, and the other TCP connection is used for the stream in which stanzas are sent from the receiving entity to the initiating entity. This is typical for server-to-server sessions.
o 2つのTCP接続にわたって2つのストリームがあり、各ストリームが個別に保護されています。このアプローチでは、1つのTCP接続は、スタンザが開始エンティティから受信エンティティに送信されるストリームに使用され、もう1つのTCP接続は、スタンザが受信エンティティから開始エンティティに送信されるストリームに使用されます。これは、サーバー間セッションに典型的なものです。
o Multiple streams over two or more TCP connections, where each stream is separately secured. This approach is sometimes used for server-to-server communication between two large XMPP service providers; however, this can make it difficult to maintain coherence of data received over multiple streams in situations described under Section 10.1, which is why a server MAY close the stream with a <conflict/> stream error (Section 4.9.3.3) if a remote server attempts to negotiate more than one stream (as described under Section 4.9.3.3).
o 各ストリームが個別に保護されている2つ以上のTCP接続にわたる複数のストリーム。このアプローチは、2つの大規模なXMPPサービスプロバイダー間のサーバー間通信に使用されることがあります。ただし、これにより、セクション10.1で説明されている状況で複数のストリームで受信されたデータのコヒーレンスを維持することが困難になる可能性があります。そのため複数のストリームを交渉しようとする試み(セクション4.9.3.3で説明されています)。
This concept of directionality applies only to stanzas and explicitly does not apply to first-level children of the stream root that are used to bootstrap or manage the stream (e.g., first-level elements used for TLS negotiation, SASL negotiation, Server Dialback [XEP-0220], and Stream Management [XEP-0198]).
この方向性の概念はスタンザにのみ適用され、明示的には、ストリームのブートストラップまたは管理に使用されるストリームルートの第1レベルの子供には適用されません(たとえば、TLS交渉、SASL交渉、サーバーダイアック[Xep-0220]、およびストリーム管理[XEP-0198])。
The foregoing considerations imply that while completing STARTTLS negotiation (Section 5) and SASL negotiation (Section 6) two servers would use one TCP connection, but after the stream negotiation process is done that original TCP connection would be used only for the initiating server to send XML stanzas to the receiving server. In order for the receiving server to send XML stanzas to the initiating server, the receiving server would need to reverse the roles and negotiate an XML stream from the receiving server to the initiating server over a separate TCP connection. This separate TCP connection is then secured using a new round of TLS and/or SASL negotiation.
前述の考慮事項は、StartTLSの交渉(セクション5)とSASL交渉(セクション6)を完了している間、2つのサーバーが1つのTCP接続を使用することを意味しますが、ストリーム交渉プロセスが完了した後、元のTCP接続は開始サーバーが送信するためにのみ使用されることを意味します。受信サーバーへのXMLスタンザ。受信サーバーがXMLスタンザを開始サーバーに送信するためには、受信サーバーは役割を逆転させ、レシーブサーバーから別のTCP接続を介して開始サーバーにXMLストリームをネゴシエートする必要があります。この別のTCP接続は、TLSおよび/またはSASL交渉の新しいラウンドを使用して保護されます。
Implementation Note: For historical reasons, a server-to-server session always uses two TCP connections. While that approach remains the standard behavior described in this document, extensions such as [XEP-0288] enable servers to negotiate the use of a single TCP connection for bidirectional stanza exchange.
実装注:歴史的な理由から、サーバー間セッションは常に2つのTCP接続を使用します。このアプローチはこのドキュメントで説明されている標準動作のままですが、[XEP-0288]などの拡張により、サーバーは双方向Stanza Exchangeの単一のTCP接続の使用を交渉できます。
Informational Note: Although XMPP developers sometimes apply the terms "unidirectional" and "bidirectional" to the underlying TCP connection (e.g., calling the TCP connection for a client-to-server session "bidirectional" and the TCP connection for a server-to-server session "unidirectional"), strictly speaking a stream is always unidirectional (because the initiating entity and receiving entity always have a minimum of two streams, one in each direction) and a TCP connection is always bidirectional (because TCP traffic can be sent in both directions). Directionality applies to the application-layer traffic sent over the TCP connection, not to the transport-layer traffic sent over the TCP connection itself.
情報ノート:XMPP開発者は、基礎となるTCP接続に「単方向」と「双方向」という用語を適用することがあります(たとえば、クライアント間セッションのTCP接続を「双方向」とサーバーからサーバーへのTCP接続を呼び出します - サーバーセッション「単方向」)、厳密に言えば、ストリームは常に単方向です(開始エンティティと受信エンティティには常に最低2つのストリームがあり、1つはそれぞれの方向に1つあります)。両方方向)。方向性は、TCP接続全体で送信されるTCP接続で送信されるアプリケーション層トラフィックに適用されます。
When an entity that is a party to a stream has not received any XMPP traffic from its stream peer for some period of time, the peer might appear to be silent. There are several reasons why this might happen:
ストリームの当事者であるエンティティが、ストリームピアからしばらくの間XMPPトラフィックを受け取っていない場合、ピアは沈黙しているように見えるかもしれません。これが起こるかもしれない理由はいくつかあります:
1. The underlying TCP connection is dead.
1. 基礎となるTCP接続が死んでいます。
2. The XML stream is broken despite the fact that the underlying TCP connection is alive.
2. 基礎となるTCP接続が生きているという事実にもかかわらず、XMLストリームは壊れています。
3. The peer is idle and simply has not sent any XMPP traffic over its XML stream to the entity.
3. ピアはアイドル状態であり、XMPLストリームを介してXMPPトラフィックをエンティティに送信していません。
These three conditions are best handled separately, as described in the following sections.
これらの3つの条件は、次のセクションで説明されているように、個別に最適に処理するのが最適です。
Implementation Note: For the purpose of handling silent peers, we treat a two unidirectional TCP connections as conceptually equivalent to a single bidirectional TCP connection (see Section 4.5); however, implementers need to be aware that, in the case of two unidirectional TCP connections, responses to traffic at the XMPP application layer will come back from the peer on the second TCP connection. In addition, the use of multiple streams in each direction (which is a somewhat frequent deployment choice for server-to-server connectivity among large XMPP service providers) further complicates application-level checking of XMPP streams and their underlying TCP connections, because there is no necessary correlation between any given initial stream and any given response stream.
実装注:サイレントピアを処理するために、2つの単方向TCP接続を単一の双方向TCP接続と概念的に同等に扱います(セクション4.5を参照)。ただし、実装者は、2つの単方向TCP接続の場合、XMPPアプリケーションレイヤーでのトラフィックへの応答が2番目のTCP接続でピアから戻ってくることに注意する必要があります。さらに、各方向に複数のストリームを使用すること(大規模なXMPPサービスプロバイダー間のサーバー間接続のためのやや頻繁な展開の選択肢です)は、XMPPストリームとその基礎となるTCP接続のアプリケーションレベルのチェックをさらに複雑にします。特定の初期ストリームと特定の応答ストリームの間に必要な相関はありません。
If the underlying TCP connection is dead, stream-level checks (e.g., [XEP-0199] and [XEP-0198]) are ineffective. Therefore, it is unnecessary to close the stream with or without an error, and it is appropriate instead to simply terminate the TCP connection.
基礎となるTCP接続が死んでいる場合、ストリームレベルのチェック(例:[XEP-0199]および[XEP-0198])は効果的ではありません。したがって、エラーの有無にかかわらずストリームを閉じる必要はありません。代わりに、TCP接続を単純に終了することが適切です。
One common method for checking the TCP connection is to send a space character (U+0020) between XML stanzas, which is allowed for XML streams as described under Section 11.7; the sending of such a space character is properly called a "whitespace keepalive" (the term "whitespace ping" is often used, despite the fact that it is not a ping since no "pong" is possible). However, this is not allowed during TLS negotiation or SASL negotiation, as described under Section 5.3.3 and Section 6.3.5.
TCP接続をチェックする一般的な方法の1つは、セクション11.7で説明されているようにXMLストリームに許可されるXMLスタンザ間でスペース文字(U 0020)を送信することです。このようなスペースのキャラクターの送信は、「ホワイトスペースのキープライブ」とは適切に呼ばれます(「ホワイトスペースping」という用語は、「ポン」がないためpingではないという事実にもかかわらず、しばしば使用されます)。ただし、これは、セクション5.3.3およびセクション6.3.5で説明されているように、TLS交渉またはSASL交渉中には許可されていません。
Even if the underlying TCP connection is alive, the peer might never respond to XMPP traffic that the entity sends, whether normal stanzas or specialized stream-checking traffic such as the application-level pings defined in [XEP-0199] or the more comprehensive Stream Management protocol defined in [XEP-0198]. In this case, it is appropriate for the entity to close a broken stream with a <connection-timeout/> stream error (Section 4.9.3.4).
基礎となるTCP接続が生きている場合でも、ピアは、[XEP-0199]またはより包括的なストリームで定義されているアプリケーションレベルのPingなどの通常のスタンザまたは特殊なストリームチェックトラフィックであろうと、エンティティが送信するXMPPトラフィックに応答しない場合があります[XEP-0198]で定義された管理プロトコル。この場合、エンティティが<Connection-TimeOut/>ストリームエラー(セクション4.9.3.4)で壊れたストリームを閉じることが適切です。
Even if the underlying TCP connection is alive and the stream is not broken, the peer might have sent no stanzas for a certain period of time. In this case, the peer itself MAY close the stream (as described under Section 4.4) rather than leaving an unused stream open. If the idle peer does not close the stream, the other party MAY either close the stream using the handshake described under Section 4.4 or close the stream with a stream error (e.g., <resource-constraint/> (Section 4.9.3.17) if the entity has reached a limit on the number of open TCP connections or <policy-violation/> (Section 4.9.3.14) if the connection has exceeded a local timeout policy). However, consistent with the order of layers (specified under Section 13.3), the other party is advised to verify that the underlying TCP connection is alive and the stream is unbroken (as described above) before concluding that the peer is idle. Furthermore, it is preferable to be liberal in accepting idle peers, since experience has shown that doing so improves the reliability of communication over XMPP networks and that it is typically more efficient to maintain a stream between two servers than to aggressively time out such a stream.
基礎となるTCP接続が生きていて、ストリームが壊れていない場合でも、ピアは一定の期間スタンザを送らなかったかもしれません。この場合、ピア自体は、未使用のストリームを開いたままにするのではなく、ストリームを閉じることができます(セクション4.4で説明されているように)。アイドルピアがストリームを閉じない場合、相手はセクション4.4で説明されているハンドシェイクを使用してストリームを閉じるか、ストリームエラーでストリームを閉じることができます(例:<resource-constraint/>(セクション4.9.3.17)の場合(セクション4.9.3.17)エンティティは、接続がローカルタイムアウトポリシーを超えた場合、オープンTCP接続の数または<ポリシーバイオレーション/>(セクション4.9.3.14)の制限に達しました)。ただし、レイヤーの順序(セクション13.3で指定)と一致して、他の当事者は、基礎となるTCP接続が生きていることを確認することをお勧めします。さらに、アイドルピアを受け入れる際にリベラルであることが望ましいです。これは、その経験がXMPPネットワークを介した通信の信頼性を改善し、通常、そのようなストリームを積極的にタイムアウトするよりも2つのサーバー間でストリームを維持する方が効率的であることを示しているためです。。
Implementers are advised to support whichever stream-checking and connection-checking methods they deem appropriate, but to carefully weigh the network impact of such methods against the benefits of discovering broken streams and dead TCP connections in a timely manner. The length of time between the use of any particular check is very much a matter of local service policy and depends strongly on the network environment and usage scenarios of a given deployment and connection type. At the time of writing, it is RECOMMENDED that any such check be performed not more than once every 5 minutes and that, ideally, such checks will be initiated by clients rather than servers. Those who implement XMPP software and deploy XMPP services are encouraged to seek additional advice regarding appropriate timing of stream-checking and connection-checking methods, particularly when power-constrained devices are being used (e.g., in mobile environments).
実装者は、適切と思われるストリームチェックおよび接続チェックメソッドをサポートすることをお勧めしますが、そのような方法のネットワークの影響を、壊れたストリームとデッドTCP接続をタイムリーに発見する利点に対して慎重に比較検討することをお勧めします。特定のチェックの使用までの時間の長さは、ローカルサービスポリシーの問題であり、特定の展開と接続タイプのネットワーク環境と使用シナリオに強く依存します。執筆時点では、そのような小切手は5分ごとに1回しか実行されず、理想的には、そのようなチェックはサーバーではなくクライアントによって開始されることをお勧めします。XMPPソフトウェアを実装し、XMPPサービスを展開する人は、特に電力制約のデバイスが使用されている場合(モバイル環境など)、ストリームチェックおよび接続チェックメソッドの適切なタイミングに関する追加のアドバイスを求めることをお勧めします。
The attributes of the root <stream/> element are defined in the following sections.
ルート<ストリーム/>要素の属性は、次のセクションで定義されています。
Security Warning: Until and unless the confidentiality and integrity of the stream are protected via TLS as described under Section 5 or an equivalent security layer (such as the SASL GSSAPI mechanism), the attributes provided in a stream header could be tampered with by an attacker.
セキュリティ警告:セクション5または同等のセキュリティレイヤー(SASL GSSAPIメカニズムなど)で説明されているように、ストリームの機密性と整合性がTLSを介して保護されない限り、ストリームヘッダーで提供される属性は攻撃者によって改ざんされる可能性があります。。
Implementation Note: The attributes of the root <stream/> element are not prepended by a namespace prefix because, as explained in [XML-NAMES], "[d]efault namespace declarations do not apply directly to attribute names; the interpretation of unprefixed attributes is determined by the element on which they appear."
実装注:root <stream/>要素の属性は、[xml-names]で説明されているように、「d] efault namespace宣言が属性名に直接適用されないため、名前空間プレフィックスによって準備されていません。属性は、それらが表示される要素によって決定されます。」
The 'from' attribute specifies an XMPP identity of the entity sending the stream element.
「From」属性は、ストリーム要素を送信するエンティティのXMPP IDを指定します。
For initial stream headers in client-to-server communication, the 'from' attribute is the XMPP identity of the principal controlling the client, i.e., a JID of the form <localpart@domainpart>. The client might not know the XMPP identity, e.g., because the XMPP identity is assigned at a level other than the XMPP application layer (as in the Generic Security Service Application Program Interface [GSS-API]) or is derived by the server from information provided by the client (as in some deployments of end-user certificates with the SASL EXTERNAL mechanism). Furthermore, if the client considers the XMPP identity to be private information then it is advised not to include a 'from' attribute before the confidentiality and integrity of the stream are protected via TLS or an equivalent security layer. However, if the client knows the XMPP identity then it SHOULD include the 'from' attribute after the confidentiality and integrity of the stream are protected via TLS or an equivalent security layer.
クライアント間通信の初期ストリームヘッダーの場合、「From」属性は、クライアントを制御するプリンシパルのXMPP ID、つまりフォームのJID <localPart@domainpart>です。クライアントは、XMPPアイデンティティがXMPPアプリケーションレイヤー以外のレベル(汎用セキュリティサービスアプリケーションプログラムインターフェイス[GSS-API]など)以外のレベルで割り当てられているか、情報からサーバーによって導出されているため、XMPPアイデンティティを知らない場合があります。クライアントによって提供されます(SASL外部メカニズムを備えたエンドユーザー証明書の一部の展開のように)。さらに、クライアントがXMPP IDを個人情報と見なしている場合、ストリームの機密性と整合性がTLSまたは同等のセキュリティレイヤーを介して保護される前に、「From」属性を含めないことをお勧めします。ただし、クライアントがXMPPアイデンティティを知っている場合、ストリームの機密性と整合性がTLSまたは同等のセキュリティレイヤーを介して保護された後の「From」属性を含める必要があります。
I: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
For initial stream headers in server-to-server communication, the 'from' attribute is one of the configured FQDNs of the server, i.e., a JID of the form <domainpart>. The initiating server might have more than one XMPP identity, e.g., in the case of a server that provides virtual hosting, so it will need to choose an identity that is associated with this output stream (e.g., based on the 'to' attribute of the stanza that triggered the stream negotiation attempt). Because a server is a "public entity" on the XMPP network, it MUST include the 'from' attribute after the confidentiality and integrity of the stream are protected via TLS or an equivalent security layer.
サーバー間通信の初期ストリームヘッダーの場合、「From」属性は、サーバーの構成されたFQDNの1つ、つまりフォーム<domainpart>のJIDです。開始サーバーは、仮想ホスティングを提供するサーバーの場合、複数のXMPPアイデンティティを持っている可能性があるため、この出力ストリームに関連付けられているIDを選択する必要があります(例:ストリーム交渉の試みを引き起こしたスタンザ)。サーバーはXMPPネットワーク上の「パブリックエンティティ」であるため、ストリームの機密性と整合性がTLSまたは同等のセキュリティレイヤーを介して保護された後、「From」属性を含める必要があります。
I: <?xml version='1.0'?> <stream:stream from='example.net' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams'>
For response stream headers in both client-to-server and server-to-server communication, the receiving entity MUST include the 'from' attribute and MUST set its value to one of the receiving entity's FQDNs (which MAY be an FQDN other than that specified in the 'to' attribute of the initial stream header, as described under Section 4.9.1.3 and Section 4.9.3.6).
クライアントからサーバー間およびサーバー間通信の両方の応答ストリームヘッダーの場合、受信エンティティには「From」属性を含める必要があり、受信エンティティのFQDNSのいずれかにその価値を設定する必要があります(これはそれ以外のFQDNである可能性がありますセクション4.9.1.3およびセクション4.9.3.6で説明されているように、初期ストリームヘッダーの「to」属性で指定されています。
R: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
Whether or not the 'from' attribute is included, each entity MUST verify the identity of the other entity before exchanging XML stanzas with it, as described under Section 13.5.
「From」属性が含まれているかどうかにかかわらず、各エンティティは、セクション13.5で説明されているように、XMLスタンザを交換する前に他のエンティティの身元を検証する必要があります。
Interoperability Note: It is possible that implementations based on [RFC3920] will not include the 'from' address on any stream headers (even ones whose confidentiality and integrity are protected); an entity SHOULD be liberal in accepting such stream headers.
相互運用性注:[RFC3920]に基づく実装には、任意のストリームヘッダー(機密性と整合性が保護されているものでも)に「From」アドレスが含まれない可能性があります。エンティティは、そのようなストリームヘッダーを受け入れる上でリベラルでなければなりません。
For initial stream headers in both client-to-server and server-to-server communication, the initiating entity MUST include the 'to' attribute and MUST set its value to a domainpart that the initiating entity knows or expects the receiving entity to service. (The same information can be provided in other ways, such as a Server Name Indication during TLS negotiation as described in [TLS-EXT].)
クライアントからサーバー間およびサーバー間通信の両方の初期ストリームヘッダーの場合、開始エンティティは「to」属性を含める必要があり、開始エンティティが受信エンティティがサービスを知っているか期待するドメインパートにその価値を設定する必要があります。([TLS-Ext]で説明されているように、TLS交渉中のサーバー名表示など、同じ情報を他の方法で提供できます。)
I: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
For response stream headers in client-to-server communication, if the client included a 'from' attribute in the initial stream header then the server MUST include a 'to' attribute in the response stream header and MUST set its value to the bare JID specified in the 'from' attribute of the initial stream header. If the client did not include a 'from' attribute in the initial stream header then the server MUST NOT include a 'to' attribute in the response stream header.
クライアント間通信の応答ストリームヘッダーの場合、クライアントが初期ストリームヘッダーに「From」属性を含めた場合、サーバーは応答ストリームヘッダーに「to」属性を含める必要があり、その値をむき出しのJIDに設定する必要があります初期ストリームヘッダーの「From」属性で指定されています。クライアントが初期ストリームヘッダーに「From」属性を含めなかった場合、サーバーは応答ストリームヘッダーに「to」属性を含める必要はありません。
R: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
For response stream headers in server-to-server communication, the receiving entity MUST include a 'to' attribute in the response stream header and MUST set its value to the domainpart specified in the 'from' attribute of the initial stream header.
サーバーからサーバーへの通信の応答ストリームヘッダーの場合、受信エンティティには、応答ストリームヘッダーに「to」属性を含める必要があり、初期ストリームヘッダーの「From」属性で指定されたDomainPartにその値を設定する必要があります。
R: <?xml version='1.0'?> <stream:stream from='im.example.com' id='g4qSvGvBxJ+xeAd7QKezOQJFFlw=' to='example.net' version='1.0' xml:lang='en' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams'>
Whether or not the 'to' attribute is included, each entity MUST verify the identity of the other entity before exchanging XML stanzas with it, as described under Section 13.5.
「to」属性が含まれているかどうかにかかわらず、各エンティティは、セクション13.5で説明されているように、XMLスタンザを交換する前に他のエンティティの身元を検証する必要があります。
Interoperability Note: It is possible that implementations based on [RFC3920] will not include the 'to' address on stream headers; an entity SHOULD be liberal in accepting such stream headers.
相互運用性注:[RFC3920]に基づく実装には、ストリームヘッダーに「To」アドレスが含まれない可能性があります。エンティティは、そのようなストリームヘッダーを受け入れる上でリベラルでなければなりません。
The 'id' attribute specifies a unique identifier for the stream, called a "stream ID". The stream ID MUST be generated by the receiving entity when it sends a response stream header and MUST BE unique within the receiving application (normally a server).
「ID」属性は、「ストリームID」と呼ばれるストリームの一意の識別子を指定します。ストリームIDは、応答ストリームヘッダーを送信し、受信アプリケーション内(通常はサーバー)内で一意でなければならないときに受信エンティティによって生成される必要があります。
Security Warning: The stream ID MUST be both unpredictable and non-repeating because it can be security-critical when reused by an authentication mechanisms, as is the case for Server Dialback [XEP-0220] and the "XMPP 0.9" authentication mechanism used before RFC 3920 defined the use of SASL in XMPP; for recommendations regarding randomness for security purposes, see [RANDOM].
セキュリティ警告:ストリームIDは、サーバーダイヤルバック[XEP-0220]の場合と同様に、認証メカニズムによって再利用されるときにセキュリティが批判的である可能性があるため、予測不可能で非繰り返しでなければなりません。RFC 3920は、XMPPでのSASLの使用を定義しました。セキュリティ目的でのランダム性に関する推奨事項については、[ランダム]を参照してください。
For initial stream headers, the initiating entity MUST NOT include the 'id' attribute; however, if the 'id' attribute is included, the receiving entity MUST ignore it.
初期のストリームヘッダーの場合、開始エンティティには「ID」属性を含めてはなりません。ただし、「ID」属性が含まれている場合、受信エンティティはそれを無視する必要があります。
For response stream headers, the receiving entity MUST include the 'id' attribute.
応答ストリームヘッダーの場合、受信エンティティには「ID」属性を含める必要があります。
R: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
Interoperability Note: In RFC 3920, the text regarding inclusion of the 'id' attribute was ambiguous, leading some implementations to leave the attribute off the response stream header.
相互運用性注:RFC 3920では、「ID」属性を含めることに関するテキストはあいまいであり、いくつかの実装が応答ストリームヘッダーから属性を離れるようにしています。
The 'xml:lang' attribute specifies an entity's preferred or default language for any human-readable XML character data to be sent over the stream (an XML stanza can also possess an 'xml:lang' attribute, as discussed under Section 8.1.5). The syntax of this attribute is defined in Section 2.12 of [XML]; in particular, the value of the 'xml:lang' attribute MUST conform to the NMTOKEN datatype (as defined in Section 2.3 of [XML]) and MUST conform to the language identifier format defined in [LANGTAGS].
'xml:lang'属性は、ストリームを介して送信されるヒューマン読み取り可能なXML文字データのエンティティの優先言語またはデフォルト言語を指定します(XMLスタンザは、セクション8.1.5で説明するように、「XML:Lang」属性を所有できます。)。この属性の構文は、[XML]のセクション2.12で定義されています。特に、「XML:Lang」属性の値は、[langtags]で定義された言語識別子形式に準拠する必要があります([xml]のセクション2.3で定義されています)。
For initial stream headers, the initiating entity SHOULD include the 'xml:lang' attribute.
初期のストリームヘッダーの場合、開始エンティティには「XML:Lang」属性を含める必要があります。
I: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
For response stream headers, the receiving entity MUST include the 'xml:lang' attribute. The following rules apply:
応答ストリームヘッダーの場合、受信エンティティには「XML:Lang」属性を含める必要があります。次のルールが適用されます。
o If the initiating entity included an 'xml:lang' attribute in its initial stream header and the receiving entity supports that language in the human-readable XML character data that it generates and sends to the initiating entity (e.g., in the <text/> element for stream and stanza errors), the value of the 'xml:lang' attribute MUST be the identifier for the initiating entity's preferred language (e.g., "de-CH").
o 開始エンティティが初期のストリームヘッダーに「XML:Lang」属性を含め、受信エンティティが生成して開始エンティティに生成および送信する人間の読み取り可能なXML文字データの言語をサポートしている場合(例:<Text/>でストリームおよびスタンザエラーの要素)、「XML:LANG」属性の値は、開始エンティティの優先言語(例:「DE-CH」)の識別子でなければなりません。
o If the receiving entity supports a language that matches the initiating entity's preferred language according to the "lookup scheme" specified in Section 3.4 of [LANGMATCH] (e.g., "de" instead of "de-CH"), then the value of the 'xml:lang' attribute SHOULD be the identifier for the matching language.
o 受信エンティティが、[langmatch]のセクション3.4(たとえば、「de-ch」の代わりに「de」)で指定された「ルックアップスキーム」に従って開始エンティティの優先言語に一致する言語をサポートする場合、XML:Lang '属性は、一致する言語の識別子である必要があります。
o If the receiving entity does not support the initiating entity's preferred language or a matching language according to the lookup scheme (or if the initiating entity did not include the 'xml:lang' attribute in its initial stream header), then the value of the 'xml:lang' attribute MUST be the identifier for the default language of the receiving entity (e.g., "en").
o 受信エンティティが、ルックアップスキームに従って開始エンティティの優先言語または一致する言語をサポートしていない場合(または、初期のストリームヘッダーに「XML:Lang」属性が含まれていない場合)、XML:Lang '属性は、受信エンティティのデフォルト言語の識別子でなければなりません(例: "en")。
R: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
If the initiating entity included the 'xml:lang' attribute in its initial stream header, the receiving entity SHOULD remember that value as the default xml:lang for all stanzas sent by the initiating entity over the current stream. As described under Section 8.1.5, the initiating entity MAY include the 'xml:lang' attribute in any XML stanzas it sends over the stream. If the initiating entity does not include the 'xml:lang' attribute in any such stanza, the receiving entity SHOULD add the 'xml:lang' attribute to the stanza when routing it to a remote server or delivering it to a connected client, where the value of the attribute MUST be the identifier for the language preferred by the initiating entity (even if the receiving entity does not support that language for human-readable XML character data it generates and sends to the initiating entity, such as in stream or stanza errors). If the initiating entity includes the 'xml:lang' attribute in any such stanza, the receiving entity MUST NOT modify or delete it when routing it to a remote server or delivering it to a connected client.
開始エンティティが初期のストリームヘッダーに「XML:Lang」属性を含めた場合、受信エンティティは、現在のストリーム上で開始エンティティによって送信されるすべてのスタンザのデフォルトのXML:LANGとしてその値を覚えておく必要があります。セクション8.1.5で説明されているように、開始エンティティには、ストリームに送信されるXMLスタンザの「XML:Lang」属性が含まれる場合があります。開始エンティティにそのようなスタンザに「XML:Lang」属性が含まれていない場合、受信エンティティはそれをリモートサーバーにルーティングするとき、または接続されたクライアントに配信するときにスタンザに「XML:LANG」属性を追加する必要があります。属性の値は、開始エンティティが優先する言語の識別子でなければなりません(受信エンティティが、生成して生成し、ストリームやスタンザなどの開始エンティティに送信する人間の読み取り可能なXML文字データの言語をサポートしていなくてもエラー)。開始エンティティがそのようなスタンザに「XML:LANG」属性を含む場合、受信エンティティはそれをリモートサーバーにルーティングするとき、または接続されたクライアントに配信するときに変更または削除してはなりません。
The inclusion of the version attribute set to a value of at least "1.0" signals support for the stream-related protocols defined in this specification, including TLS negotiation (Section 5), SASL negotiation (Section 6), stream features (Section 4.3.2), and stream errors (Section 4.9).
TLS交渉(セクション5)、SASLネゴシエーション(セクション6)、ストリーム機能(セクション4.3など、この仕様で定義されたストリーム関連プロトコルを少なくとも「1.0」シグナルの値に設定するバージョン属性を含めること。2)、およびストリームエラー(セクション4.9)。
The version of XMPP specified in this specification is "1.0"; in particular, XMPP 1.0 encapsulates the stream-related protocols as well as the basic semantics of the three defined XML stanza types (<message/>, <presence/>, and <iq/> as described under Sections 8.2.1, 8.2.2, and 8.2.3, respectively).
この仕様で指定されたXMPPのバージョンは「1.0」です。特に、XMPP 1.0は、ストリーム関連のプロトコルと、3つの定義されたXMLスタンザタイプの基本的なセマンティクスをカプセル化します(<メッセージ/>、<存在/>、および<IQ/>セクション8.2.1、8.2で説明されています。それぞれ2、および8.2.3)。
The numbering scheme for XMPP versions is "<major>.<minor>". The major and minor numbers MUST be treated as separate integers and each number MAY be incremented higher than a single digit. Thus, "XMPP 2.4" would be a lower version than "XMPP 2.13", which in turn would be lower than "XMPP 12.3". Leading zeros (e.g., "XMPP 6.01") MUST be ignored by recipients and MUST NOT be sent.
XMPPバージョンの番号付けスキームは「<major>。<minor>」です。主要な数字とマイナー数は、個別の整数として扱う必要があり、各数値は1桁よりも高く増加することができます。したがって、「XMPP 2.4」は「XMPP 2.13」よりも低いバージョンであり、「XMPP 12.3」よりも低くなります。主要なゼロ(「XMPP 6.01」など)は受信者が無視する必要があり、送信してはなりません。
The major version number will be incremented only if the stream and stanza formats or obligatory actions have changed so dramatically that an older version entity would not be able to interoperate with a newer version entity if it simply ignored the elements and attributes it did not understand and took the actions defined in the older specification.
メジャーバージョン番号は、ストリームとスタンザ形式または義務的アクションが非常に劇的に変更された場合にのみ増加します。古い仕様で定義されたアクションを取得しました。
The minor version number will be incremented only if significant new capabilities have been added to the core protocol (e.g., a newly defined value of the 'type' attribute for message, presence, or IQ stanzas). The minor version number MUST be ignored by an entity with a smaller minor version number, but MAY be used for informational purposes by the entity with the larger minor version number (e.g., the entity with the larger minor version number would simply note that its correspondent would not be able to understand that value of the 'type' attribute and therefore would not send it).
マイナーバージョン番号は、重要な新しい機能がコアプロトコルに追加された場合にのみ増加します(たとえば、メッセージ、存在、またはIQスタンザの「タイプ」属性の新たに定義された値)。マイナーバージョン番号は、より小さなマイナーバージョン番号を持つエンティティによって無視する必要がありますが、より大きなマイナーバージョン番号を持つエンティティが情報目的で使用することができます(たとえば、より大きなマイナーバージョン番号を持つエンティティは、その特派員が単にその特派員に注意することに注意してください「タイプ」属性の価値を理解することはできず、したがって送信しません)。
The following rules apply to the generation and handling of the 'version' attribute within stream headers:
以下のルールは、ストリームヘッダー内の「バージョン」属性の生成と処理に適用されます。
1. The initiating entity MUST set the value of the 'version' attribute in the initial stream header to the highest version number it supports (e.g., if the highest version number it supports is that defined in this specification, it MUST set the value to "1.0").
1. 開始エンティティは、初期ストリームヘッダーの「バージョン」属性の値をサポートする最高バージョン番号に設定する必要があります(たとえば、サポートする最高のバージョン番号がこの仕様で定義されている場合、値を "1.0に設定する必要があります。")。
2. The receiving entity MUST set the value of the 'version' attribute in the response stream header to either the value supplied by the initiating entity or the highest version number supported by the receiving entity, whichever is lower. The receiving entity MUST perform a numeric comparison on the major and minor version numbers, not a string match on "<major>.<minor>".
2. 受信エンティティは、回答ストリームヘッダーの「バージョン」属性の値を、開始エンティティによって提供される値または受信エンティティによってサポートされる最高バージョン番号のいずれか低い方に設定する必要があります。受信エンティティは、「<major>。<minor>」の文字列マッチではなく、メジャーバージョンとマイナーバージョンの数値で数値比較を実行する必要があります。
3. If the version number included in the response stream header is at least one major version lower than the version number included in the initial stream header and newer version entities cannot interoperate with older version entities as described, the initiating entity SHOULD close the stream with an <unsupported-version/> stream error (Section 4.9.3.25).
3. 応答ストリームヘッダーに含まれるバージョン番号が初期ストリームヘッダーに含まれるバージョン番号より少なくとも1つのメジャーバージョンであり、新しいバージョンエンティティが説明されているように古いバージョンエンティティと相互に操作できない場合、開始エンティティは<でストリームを閉じる必要があります。サポートされていないバージョン/>ストリームエラー(セクション4.9.3.25)。
4. If either entity receives a stream header with no 'version' attribute, the entity MUST consider the version supported by the other entity to be "0.9" and SHOULD NOT include a 'version' attribute in the response stream header.
4. いずれかのエンティティが「バージョン」属性のないストリームヘッダーを受信した場合、エンティティは他のエンティティによってサポートされているバージョンを「0.9」と考える必要があり、応答ストリームヘッダーに「バージョン」属性を含めるべきではありません。
The following table summarizes the attributes of the root <stream/> element.
次の表は、ルート<stream/>要素の属性をまとめたものです。
+----------+--------------------------+-------------------------+ | | initiating to receiving | receiving to initiating | +----------+--------------------------+-------------------------+ | to | JID of receiver | JID of initiator | | from | JID of initiator | JID of receiver | | id | ignored | stream identifier | | xml:lang | default language | default language | | version | XMPP 1.0+ supported | XMPP 1.0+ supported | +----------+--------------------------+-------------------------+
Figure 4: Stream Attributes
図4:ストリーム属性
Readers are referred to the specification of XML namespaces [XML-NAMES] for a full understanding of the concepts used in this section, especially the concept of a "default namespace" as provided in Section 3 and Section 6.2 of that specification.
読者は、このセクションで使用されている概念、特にその仕様のセクション3およびセクション6.2に記載されている「デフォルトの名前空間」の概念を完全に理解するために、XML名空間[XML-Names]の仕様を参照されます。
The root <stream/> element ("stream header") MUST be qualified by the namespace 'http://etherx.jabber.org/streams' (the "stream namespace"). If this rule is violated, the entity that receives the offending stream header MUST close the stream with a stream error, which SHOULD be <invalid-namespace/> (Section 4.9.3.10), although some existing implementations send <bad-format/> (Section 4.9.3.1) instead.
root <stream/> element( "Stream Header")は、名前空間 'http://etherx.jabber.org/streams'( "stream namespace")で修飾する必要があります。このルールが違反されている場合、問題のあるストリームヘッダーを受信するエンティティは、ストリームエラーでストリームを閉じる必要があります。これは<invalid-namespace/>(セクション4.9.3.10)である必要があります。(セクション4.9.3.1)代わりに。
An entity MAY declare a "content namespace" as the default namespace for data sent over the stream (i.e., data other than elements qualified by the stream namespace). If so, (1) the content namespace MUST be other than the stream namespace, and (2) the content namespace MUST be the same for the initial stream and the response stream so that both streams are qualified consistently. The content namespace applies to all first-level child elements sent over the stream unless explicitly qualified by another namespace (i.e., the content namespace is the default namespace).
エンティティは、ストリーム上で送信されたデータのデフォルトの名前空間として「コンテンツネームスペース」を宣言することができます(つまり、ストリーム名空間で適格な要素以外のデータ)。その場合、(1)コンテンツネームスペースはストリームネームスペース以外でなければなりません。(2)コンテンツネームスペースは、両方のストリームが一貫して資格があるように、初期ストリームと応答ストリームで同じでなければなりません。コンテンツネームスペースは、別の名前空間で明示的に資格がない限り、ストリーム上で送信されるすべての第1レベルの子要素に適用されます(つまり、コンテンツネームスペースはデフォルトの名前空間です)。
Alternatively (i.e., instead of declaring the content namespace as the default namespace), an entity MAY explicitly qualify the namespace for each first-level child element of the stream, using so-called "prefix-free canonicalization". These two styles are shown in the following examples.
あるいは(つまり、コンテンツネームスペースをデフォルトの名前空間として宣言する代わりに)、エンティティは、いわゆる「プレフィックスフリーカノニカル化」を使用して、ストリームの各レベルの子要素の名前空間を明示的に認定する場合があります。これらの2つのスタイルは、次の例に示されています。
When a content namespace is declared as the default namespace, in rough outline a stream will look something like the following.
コンテンツネームスペースがデフォルトの名前空間として宣言されると、大まかなアウトラインでは、ストリームが次のようになります。
<stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <message> <body>foo</body> </message> </stream:stream>
When a content namespace is not declared as the default namespace and so-called "prefix-free canonicalization" is used instead, in rough outline a stream will look something like the following.
コンテンツネームスペースがデフォルトの名前空間として宣言されていない場合、いわゆる「プレフィックスフリーカノニカル化」が代わりに使用されます。大まかなアウトラインでは、ストリームは次のようになります。
<stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='http://etherx.jabber.org/streams'> <message xmlns='jabber:client'> <body>foo</body> </message> </stream>
Traditionally, most XMPP implementations have used the content-namespace-as-default-namespace style rather than the prefix-free canonicalization style for stream headers; however, both styles are acceptable since they are semantically equivalent.
従来、ほとんどのXMPP実装は、ストリームヘッダー用のプレフィックスフリーのカノニカル化スタイルではなく、コンテンツネームススペースとしての装飾品としてのスタイルを使用していました。ただし、両方のスタイルは意味的に同等であるため、許容されます。
XMPP as defined in this specification uses two content namespaces: 'jabber:client' and 'jabber:server'. These namespaces are nearly identical but are used in different contexts (client-to-server communication for 'jabber:client' and server-to-server communication for 'jabber:server'). The only difference between the two is that the 'to' and 'from' attributes are OPTIONAL on stanzas sent over XML streams qualified by the 'jabber:client' namespace, whereas they are REQUIRED on stanzas sent over XML streams qualified by the 'jabber: server' namespace. Support for these content namespaces implies support for the common attributes (Section 8.1) and basic semantics (Section 8.2) of all three core stanza types (message, presence, and IQ).
この仕様で定義されているXMPPでは、「Jabber:Client」と「Jabber:Server」の2つのコンテンツ名空間を使用します。これらの名前空間はほぼ同じですが、異なるコンテキストで使用されます(「Jabber:クライアント」のクライアント間通信と「Jabber:サーバー」のサーバー間通信)。2つの唯一の違いは、「to」と「from」属性は、「Jabber:client」名前空間で資格があるXMLストリームを介して送信されたスタンザでオプションであることですが、「Jabberが認定されたXMLストリームを介して送信されるスタンザで必要です。:server 'namespace。これらのコンテンツネームスペースのサポートは、3つのコアスタンザタイプ(メッセージ、存在、IQ)すべての共通属性(セクション8.1)と基本的なセマンティクス(セクション8.2)のサポートを意味します。
An implementation MAY support content namespaces other than 'jabber: client' or 'jabber:server'. However, because such namespaces would define applications other than XMPP, they are to be defined in separate specifications.
実装は、「Jabber:Client」または「Jabber:Server」以外のコンテンツ名空間をサポートする場合があります。ただし、そのような名前空間はXMPP以外のアプリケーションを定義するため、個別の仕様で定義されます。
An implementation MAY refuse to support any other content namespaces as default namespaces. If an entity receives a first-level child element qualified by a content namespace it does not support, it MUST close the stream with an <invalid-namespace/> stream error (Section 4.9.3.10).
実装は、他のコンテンツネームスペースをデフォルトの名前空間としてサポートすることを拒否する場合があります。エンティティがサポートしていないコンテンツネームスペースで資格のある最初のレベルの子要素を受信した場合、<invalid-namespace/>ストリームエラー(セクション4.9.3.10)でストリームを閉じる必要があります。
Client implementations MUST support the 'jabber:client' content namespace as a default namespace. The 'jabber:server' content namespace is out of scope for an XMPP client, and a client MUST NOT send stanzas qualified by the 'jabber:server' namespace.
クライアントの実装は、デフォルトの名前空間として「Jabber:クライアント」コンテンツ名空間をサポートする必要があります。「Jabber:Server」コンテンツネームスペースはXMPPクライアントにとって範囲外であり、クライアントは「Jabber:Server」名前空間で資格のあるスタンザを送信してはなりません。
Server implementations MUST support as default content namespaces both the 'jabber:client' namespace (when the stream is used for communication between a client and a server) and the 'jabber:server' namespace (when the stream is used for communication between two servers). When communicating with a connected client, a server MUST NOT send stanzas qualified by the 'jabber:server' namespace; when communicating with a peer server, a server MUST NOT send stanzas qualified by the 'jabber:client' namespace.
サーバーの実装は、デフォルトのコンテンツネームスペースとしてサポートする必要があります。「Jabber:クライアント」名空間(クライアントとサーバー間の通信にストリームが使用される場合)と「Jabber:Server」名前空間(2つのサーバー間の通信にストリームが使用される場合))。接続されたクライアントと通信する場合、サーバーは「Jabber:Server」の名前空間で資格のあるスタンザを送信してはなりません。ピアサーバーと通信する場合、サーバーは「Jabber:Client」名前空間で資格のあるスタンザを送信してはなりません。
Implementation Note: Because a client sends stanzas over a stream whose content namespace is 'jabber:client', if a server routes to a peer server a stanza it has received from a connected client then it needs to "re-scope" the stanza so that its content namespace is 'jabber:server'. Similarly, if a server delivers to a connected client a stanza it has received from a peer server then it needs to "re-scope" the stanza so that its content namespace is 'jabber:client'. This rule applies to XML stanzas as defined under Section 4.1 (i.e., a first-level <message/>, <presence/>, or <iq/> element qualified by the 'jabber:client' or 'jabber:server' namespace), and by namespace inheritance to all child elements of a stanza. However, the rule does not apply to elements qualified by namespaces other than 'jabber:client' and 'jabber:server' nor to any children of such elements (e.g., a <message/> element contained within an extension element (Section 8.4) for reporting purposes). Although it is not forbidden for an entity to generate stanzas in which an extension element contains a child element qualified by the 'jabber:client' or 'jabber:server' namespace, existing implementations handle such stanzas inconsistently; therefore, implementers are advised to weigh the likely lack of interoperability against the possible utility of such stanzas. Finally, servers are advised to apply stanza re-scoping to other stream connection methods and alternative XMPP connection methods, such as those specified in [XEP-0124], [XEP-0206], [XEP-0114], and [XEP-0225].
実装注:クライアントは、コンテンツネームスペースが「Jabber:クライアント」であるストリーム上にスタンザを送信するため、サーバーがピアサーバーにルーティングした場合、接続されたクライアントから受け取ったスタンザをルーティングすると、スタンザを「再スコープ」する必要があります。そのコンテンツネームスペースが「Jabber:Server」であること。同様に、サーバーが接続されたクライアントにピアサーバーから受け取ったスタンザを配信する場合、コンテンツ名空間が「Jabber:クライアント」になるようにスタンザを「再スコープ」する必要があります。このルールは、セクション4.1で定義されているようにXMLスタンザに適用されます(つまり、最初のレベル<メッセージ/>、<infaction/>、または<IQ/>要素「Jabber:client」または「jabber:server」名前空間によって適格です)、およびスタンザのすべての子要素への名前空間継承によって。ただし、このルールは、「Jabber:Client」および「Jabber:Server」以外の名前空間で適格な要素には適用されません。報告目的で)。エンティティが「Jabber:client」または「Jabber:server」ネームスペースで資格のある子要素を含むスタンザを生成することは禁止されていませんが、既存の実装はそのようなスタンザを一貫して処理します。したがって、実装者は、そのようなスタンザの可能性に対する相互運用性の欠如を比較検討することをお勧めします。最後に、サーバーは、[XEP-0124]、[XEP-0206]、[XEP-0114]、および[XEP-0225で指定されているものなど、他のストリーム接続法と代替XMPP接続法にStanza Re-scopingを適用することをお勧めします。]。
Either party to a stream MAY send data qualified by namespaces other than the content namespace and the stream namespace. For example, this is how data related to TLS negotiation and SASL negotiation are exchanged, as well as XMPP extensions such as Stream Management [XEP-0198] and Server Dialback [XEP-0220].
いずれかのパーティがストリームのいずれかの当事者は、コンテンツネームスペースとストリーム名空間以外の名前空間で適格なデータを送信する場合があります。たとえば、これは、TLS交渉とSASL交渉に関連するデータの交換方法、およびストリーム管理[XEP-0198]やサーバーダイヤルバック[XEP-0220]などのXMPP拡張機能です。
Interoperability Note: For historical reasons, some server implementations expect a declaration of the 'jabber:server: dialback' namespace on server-to-server streams, as explained in [XEP-0220].
相互運用性注:歴史的な理由から、一部のサーバーの実装は、[XEP-0220]で説明されているように、サーバーからサーバーへのストリームの「Jabber:Dialback」の名前空間の宣言を期待しています。
However, an XMPP server MUST NOT route or deliver data received over an input stream if that data is (a) qualified by another namespace and (b) addressed to an entity other than the server, unless the other party to the output stream over which the server would send the data has explicitly negotiated or advertised support for receiving arbitrary data from the server. This rule is included because XMPP is designed for the exchange of XML stanzas (not arbitrary XML data), and because allowing an entity to send arbitrary data to other entities could significantly increase the potential for exchanging malicious information. As an example of this rule, the server hosting the example.net domain would not route the following first-level XML element from <romeo@example.net> to <juliet@example.com>:
ただし、XMPPサーバーは、そのデータが(a)別の名前空間によって資格がある場合、および(b)出力ストリームの相手が出力ストリームの相手が存在しない限り、(b)宛先である場合、入力ストリームを介して受信したデータをルーティングまたは配信してはなりません。サーバーは、サーバーから任意のデータを受信するためのサポートを明示的にネゴシエートまたは宣伝したデータを送信します。XMPPはXMLスタンザ(任意のXMLデータではない)の交換用に設計されており、エンティティが他のエンティティに任意のデータを送信できるようにすることで、悪意のある情報を交換する可能性を大幅に増加させる可能性があるため、このルールが含まれています。このルールの例として、example.netドメインをホストするサーバーは、<romeo@example.net>から<juliet@example.com>まで次の第1レベルXML要素をルーティングしません。
<ns1:foo xmlns:ns1='http://example.org/ns1' from='romeo@example.net/resource1' to='juliet@example.com'> <ns1:bar/> </ns1:foo>
This rule also applies to first-level elements that look like stanzas but that are improperly namespaced and therefore really are not stanzas at all (see also Section 4.8.5), for example:
このルールは、スタンザのように見えるが、不適切に名前が付けられているため、実際にはまったくスタンザではない最初のレベルの要素にも適用されます(セクション4.8.5も参照)。
<ns2:message xmlns:ns2='http://example.org/ns2' from='romeo@example.net/resource1' to='juliet@example.com'> <body>hi</body> </ns2:message>
Upon receiving arbitrary first-level XML elements over an input stream, a server MUST either ignore the data or close the stream with a stream error, which SHOULD be <unsupported-stanza-type/> (Section 4.9.3.24).
入力ストリーム上で任意の第1レベルのXML要素を受信すると、サーバーはデータを無視するか、ストリームエラーでストリームを閉じる必要があります。
Because the content namespace is other than the stream namespace, if a content namespace is declared as the default namespace then the following statements are true:
コンテンツネームスペースはストリーム名空間以外であるため、コンテンツネームスペースがデフォルトの名前空間として宣言されている場合、次のステートメントは真です。
1. The stream header needs to contain a namespace declaration for both the content namespace and the stream namespace.
1. ストリームヘッダーには、コンテンツネームスペースとストリームネームスペースの両方の名前空間宣言を含める必要があります。
2. The stream namespace declaration needs to include a namespace prefix for the stream namespace.
2. Stream NameSpace宣言には、Stream NameSpaceの名前空間プレフィックスを含める必要があります。
Interoperability Note: For historical reasons, an implementation MAY accept only the prefix 'stream' for the stream namespace (resulting in prefixed names such as <stream:stream> and <stream: features>); this specification retains that allowance from [RFC3920] for the purpose of backward compatibility. Implementations are advised that using a prefix other than 'stream' for the stream namespace might result in interoperability problems. If an entity receives a stream header with a stream namespace prefix it does not accept, it MUST close the stream with a stream error, which SHOULD be <bad-namespace-prefix/> (Section 4.9.3.2), although some existing implementations send <bad-format/> (Section 4.9.3.1) instead.
相互運用性注:歴史的な理由から、実装は、ストリーム名空間のプレフィックス「ストリーム」のみを受け入れる場合があります(<stream:stream>や<stream:feature>などのプレフィックス名が得られます)。この仕様は、後方互換性を目的として、[RFC3920]からの手当を保持します。実装は、ストリーム名空間に「ストリーム」以外の接頭辞を使用すると、相互運用性の問題が発生する可能性があることをお勧めします。エンティティがストリーム名空間プレフィックスを使用してストリームヘッダーを受信した場合、それは受け入れないようにする場合、ストリームエラーでストリームを閉じる必要があります。<bad-format/>(セクション4.9.3.1)代わりに。
An implementation MUST NOT generate namespace prefixes for elements qualified by the content namespace (i.e., the default namespace for data sent over the stream) if the content namespace is 'jabber: client' or 'jabber:server'. For example, the following is illegal:
コンテンツネームスペースが「Jabber:client」または「Jabber:Server」の場合、実装はコンテンツ名空間(つまり、ストリームで送信されたデータのデフォルトの名前空間)によって適格な要素の名前空間プレフィックスを生成してはなりません。たとえば、以下は違法です。
<stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
<foo:message xmlns:foo='jabber:client'> <foo:body>foo</foo:body> </foo:message>
An XMPP entity SHOULD NOT accept data that violates this rule (in particular, an XMPP server MUST NOT route or deliver such data to another entity without first correcting the error); instead it SHOULD either ignore the data or close the stream with a stream error, which SHOULD be <bad-namespace-prefix/> (Section 4.9.3.2).
XMPPエンティティは、このルールに違反するデータを受け入れてはなりません(特に、XMPPサーバーは、最初にエラーを修正せずにそのようなデータを別のエンティティにルーティングまたは配信してはなりません)。代わりに、データを無視するか、ストリームエラーでストリームを閉じる必要があります。
Namespaces declared in a stream header MUST apply only to that stream (e.g., the 'jabber:server:dialback' namespace used in Server Dialback [XEP-0220]). In particular, because XML stanzas intended for routing or delivery over streams with other entities will lose the namespace context declared in the header of the stream in which those stanzas originated, namespaces for extended content within such stanzas MUST NOT be declared in that stream header (see also Section 8.4). If either party to a stream declares such namespaces, the other party to the stream SHOULD close the stream with an <invalid-namespace/> stream error (Section 4.9.3.10). In any case, an entity MUST ensure that such namespaces are properly declared (according to this section) when routing or delivering stanzas from an input stream to an output stream.
ストリームヘッダーで宣言された名前空間は、そのストリームにのみ適用する必要があります(たとえば、 'jabber:server:dialback' namespace [xep-0220])。特に、他のエンティティとのストリーム上のルーティングまたは配信を目的としたXMLスタンザは、それらのスタンザが発信したストリームのヘッダーで宣言された名前空間コンテキストを失うため、そのようなスタンザ内の拡張コンテンツの名前空間をそのストリームヘッダーで宣言する必要はありません(セクション8.4も参照してください。いずれかの当事者がそのような名前空間を宣言する場合、ストリームの他のパーティは、<invalid-namespace/>ストリームエラー(セクション4.9.3.10)でストリームを閉じる必要があります。いずれにせよ、エンティティは、入力ストリームから出力ストリームにスタンザをルーティングまたは配信するときに、そのような名前空間が(このセクションに従って)適切に宣言されるようにする必要があります。
The root stream element MAY contain an <error/> child element that is qualified by the stream namespace. The error child SHALL be sent by a compliant entity if it perceives that a stream-level error has occurred.
ルートストリーム要素には、ストリームネームスペースによって適格な<エラー/>子要素が含まれる場合があります。エラーの子は、ストリームレベルのエラーが発生したと認識している場合、準拠したエンティティによって送信されます。
The following rules apply to stream-level errors.
以下のルールは、ストリームレベルのエラーに適用されます。
Stream-level errors are unrecoverable. Therefore, if an error occurs at the level of the stream, the entity that detects the error MUST send an <error/> element with an appropriate child element specifying the error condition and then immediately close the stream as described under Section 4.4.
ストリームレベルのエラーは回復できません。したがって、ストリームのレベルでエラーが発生した場合、エラーを検出するエンティティは、エラー条件を指定する適切な子要素を持つ<エラー/>要素を送信し、セクション4.4に記載されているようにストリームを直ちに閉じる必要があります。
C: <message><body>No closing tag!</message>
S: <stream:error> <not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The entity that receives the stream error then SHALL close the stream as explained under Section 4.4.
ストリームエラーを受信するエンティティは、セクション4.4で説明されているように、ストリームを閉じるものとします。
C: </stream:stream>
If the error is triggered by the initial stream header, the receiving entity MUST still send the opening <stream> tag, include the <error/> element as a child of the stream element, and send the closing </stream> tag (preferably in the same TCP packet).
エラーが初期ストリームヘッダーによってトリガーされた場合、受信エンティティはまだopening <stream>タグを送信し、<エラー/>要素をストリーム要素の子として含め、閉じる</stream>タグを送信する必要があります(できればできれば</stream>タグを送信する必要があります同じTCPパケット)。
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://wrong.namespace.example.org/'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <invalid-namespace xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
If the initiating entity provides no 'to' attribute or provides an unknown host in the 'to' attribute and the error occurs during stream setup, the value of the 'from' attribute returned by the receiving entity in the stream header sent before closing the stream MUST be either an authoritative FQDN for the receiving entity or the empty string.
開始エンティティが「to」属性を提供しないか、「 'to」属性に不明なホストを提供し、ストリームのセットアップ中にエラーが発生する場合、閉じる前に送信されるストリームヘッダーの受信エンティティによって返される「From」属性の値が発生します。ストリームは、受信エンティティの権威あるFQDNまたは空の文字列のいずれかでなければなりません。
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='unknown.host.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <host-unknown xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
When two TCP connections are used between the initiating entity and the receiving entity (one in each direction) rather than using a single bidirectional connection, the following rules apply:
単一の双方向接続を使用するのではなく、開始エンティティと受信エンティティ(各方向に1つ)の間に2つのTCP接続が使用される場合、次のルールが適用されます。
o Stream-level errors related to the initial stream are returned by the receiving entity on the response stream via the same TCP connection.
o 初期ストリームに関連するストリームレベルのエラーは、同じTCP接続を介して応答ストリーム上の受信エンティティによって返されます。
o Stanza errors triggered by outbound stanzas sent from the initiating entity over the initial stream via the same TCP connection are returned by the receiving entity on the response stream via the other ("return") TCP connection, since they are inbound stanzas from the perspective of the initiating entity.
o 同じTCP接続を介して初期ストリームを介して開始エンティティから送信されたアウトバウンドスタンザによってトリガーされたスタンザエラーは、反対側(「返品」)TCP接続を介して応答ストリーム上の受信エンティティによって返されます。開始エンティティ。
The syntax for stream errors is as follows, where XML data shown within the square brackets '[' and ']' is OPTIONAL.
ストリームエラーの構文は次のとおりです。ここでは、四角い括弧内に表示されるXMLデータ['および']がオプションです。
<stream:error> <defined-condition xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> [<text xmlns='urn:ietf:params:xml:ns:xmpp-streams' xml:lang='langcode'> OPTIONAL descriptive text </text>] [OPTIONAL application-specific condition element] </stream:error>
The "defined-condition" MUST correspond to one of the stream error conditions defined under Section 4.9.3. However, because additional error conditions might be defined in the future, if an entity receives a stream error condition that it does not understand then it MUST treat the unknown condition as equivalent to <undefined-condition/> (Section 4.9.3.21). If the designers of an XMPP protocol extension or the developers of an XMPP implementation need to communicate a stream error condition that is not defined in this specification, they can do so by defining an application-specific error condition element qualified by an application-specific namespace.
「定義された条件」は、セクション4.9.3で定義されているストリームエラー条件の1つに対応する必要があります。ただし、追加のエラー条件が将来定義される可能性があるため、エンティティが理解できないストリームエラー条件を受け取る場合、未知の条件を<未定義条件/>に相当するものとして扱わなければなりません(セクション4.9.3.21)。XMPPプロトコル拡張機能の設計者またはXMPP実装の開発者が、この仕様で定義されていないストリームエラー条件を通信する必要がある場合、アプリケーション固有の名前空間で適格なアプリケーション固有のエラー条件要素を定義することでそうすることができます。。
The <error/> element:
<エラー/>要素:
o MUST contain a child element corresponding to one of the defined stream error conditions (Section 4.9.3); this element MUST be qualified by the 'urn:ietf:params:xml:ns:xmpp-streams' namespace.
o 定義されたストリームエラー条件の1つに対応する子要素を含める必要があります(セクション4.9.3)。この要素は、 'urn:ietf:params:xml:ns:xmpp-streams' namespaceによって資格がある必要があります。
o MAY contain a <text/> child element containing XML character data that describes the error in more detail; this element MUST be qualified by the 'urn:ietf:params:xml:ns:xmpp-streams' namespace and SHOULD possess an 'xml:lang' attribute specifying the natural language of the XML character data.
o エラーをより詳細に説明するXML文字データを含む<テキスト/>子要素が含まれる場合があります。この要素は、「urn:ietf:params:xml:ns:xmpp-streams」ネームスペースによって資格を付ける必要があり、XML文字データの自然言語を指定する「XML:LANG」属性を所有する必要があります。
o MAY contain a child element for an application-specific error condition; this element MUST be qualified by an application-defined namespace, and its structure is defined by that namespace (see Section 4.9.4).
o アプリケーション固有のエラー条件のための子要素が含まれる場合があります。この要素は、アプリケーション定義の名前空間で適格である必要があり、その構造はその名前空間で定義されます(セクション4.9.4を参照)。
The <text/> element is OPTIONAL. If included, it MUST be used only to provide descriptive or diagnostic information that supplements the meaning of a defined condition or application-specific condition. It MUST NOT be interpreted programmatically by an application. It MUST NOT be used as the error message presented to a human user, but MAY be shown in addition to the error message associated with the defined condition element (and, optionally, the application-specific condition element).
<テキスト/>要素はオプションです。含まれる場合は、定義された条件またはアプリケーション固有の条件の意味を補完する記述情報または診断情報を提供するためにのみ使用する必要があります。アプリケーションによってプログラムで解釈されてはなりません。人間のユーザーに提示されたエラーメッセージとして使用してはなりませんが、定義された条件要素(およびオプションでは、アプリケーション固有の条件要素)に関連付けられたエラーメッセージに加えて表示される場合があります。
The following stream-level error conditions are defined.
次のストリームレベルエラー条件が定義されています。
The entity has sent XML that cannot be processed.
エンティティは、処理できないXMLを送信しました。
(In the following example, the client sends an XMPP message that is not well-formed XML, which alternatively might trigger a <not-well-formed/> stream error (Section 4.9.3.13).)
(次の例では、クライアントは、よく形成されたXMLではないXMPPメッセージを送信します。これは、A <Not-Well-Formed/>ストリームエラー(セクション4.9.3.13)をトリガーする可能性があります。)
C: <message> <body>No closing tag! </message>
S: <stream:error> <bad-format xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
This error can be used instead of the more specific XML-related errors, such as <bad-namespace-prefix/>, <invalid-xml/>, <not-well-formed/>, <restricted-xml/>, and <unsupported-encoding/>. However, the more specific errors are RECOMMENDED.
このエラーは、<bad-namespace-prefix/>、<nivalid-xml/>、<not-well-formed/>、<restrived-xml/>、および<risted-xml/>など、より特定のXML関連エラーの代わりに使用できます。<unsupported-encoding/>。ただし、より具体的なエラーが推奨されます。
The entity has sent a namespace prefix that is unsupported, or has sent no namespace prefix on an element that needs such a prefix (see Section 11.2).
エンティティは、サポートされていない名前空間プレフィックスを送信するか、そのようなプレフィックスを必要とする要素に名前空間プレフィックスを送信しませんでした(セクション11.2を参照)。
(In the following example, the client specifies a namespace prefix of "foobar" for the XML stream namespace.)
(次の例では、クライアントはXMLストリーム名空間の「Foobar」の名前空間プレフィックスを指定します。)
C: <?xml version='1.0'?> <foobar:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xmlns='jabber:client' xmlns:foobar='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <bad-namespace-prefix xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The server either (1) is closing the existing stream for this entity because a new stream has been initiated that conflicts with the existing stream, or (2) is refusing a new stream for this entity because allowing the new stream would conflict with an existing stream (e.g., because the server allows only a certain number of connections from the same IP address or allows only one server-to-server stream for a given domain pair as a way of helping to ensure in-order processing as described under Section 10.1).
サーバーのいずれか(1)は、既存のストリームと競合する新しいストリームが開始されたため、(2)新しいエンティティの新しいストリームを拒否しているため、このエンティティの既存のストリームを閉じています。ストリーム(たとえば、サーバーは、同じIPアドレスから一定数の接続のみを許可するか、セクション10.1で説明されているように注文の処理を確保する方法として、特定のドメインペアに対して1つのサーバー間ストリームのみを許可するためです。)。
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <conflict xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
If a client receives a <conflict/> stream error (Section 4.9.3.3), during the resource binding aspect of its reconnection attempt it MUST NOT blindly request the resourcepart it used during the former session but instead MUST choose a different resourcepart; details are provided under Section 7.
クライアントが<競合/>ストリームエラー(セクション4.9.3.3)を受信した場合、再接続試行のリソース結合の側面で、前者のセッション中に使用したリソースパートを盲目的に要求してはならず、代わりに別のリソースパートを選択する必要があります。詳細はセクション7で提供されています。
One party is closing the stream because it has reason to believe that the other party has permanently lost the ability to communicate over the stream. The lack of ability to communicate can be discovered using various methods, such as whitespace keepalives as specified under Section 4.4, XMPP-level pings as defined in [XEP-0199], and XMPP Stream Management as defined in [XEP-0198].
ある当事者は、他の当事者がストリームを介して通信する能力を永久に失ったと信じる理由があるため、ストリームを閉鎖しています。通信能力の欠如は、セクション4.4で指定されているホワイトスペースのキープライブ、[XEP-0199]で定義されているXMPPレベルのping、[XEP-0198]で定義されているXMPPストリーム管理など、さまざまな方法を使用して発見できます。
P: <stream:error> <connection-timeout xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
Interoperability Note: RFC 3920 specified that the <connection-timeout/> stream error (Section 4.9.3.4) is to be used if the peer has not generated any traffic over the stream for some period of time. That behavior is no longer recommended; instead, the error SHOULD be used only if the connected client or peer server has not responded to data sent over the stream.
相互運用性注:RFC 3920は、ピアがある期間ストリームのトラフィックを生成していない場合、<Connection-TimeOut/>ストリームエラー(セクション4.9.3.4)を使用することを指定しました。その動作はもはや推奨されません。代わりに、接続されたクライアントまたはピアサーバーがストリーム上で送信されたデータに応答していない場合にのみ、エラーを使用する必要があります。
The value of the 'to' attribute provided in the initial stream header corresponds to an FQDN that is no longer serviced by the receiving entity.
初期ストリームヘッダーで提供される「to」属性の値は、受信エンティティによってサービスが提供されなくなったFQDNに対応します。
(In the following example, the peer specifies a 'to' address of "foo.im.example.com" when connecting to the "im.example.com" server, but the server no longer hosts a service at that address.)
(次の例では、ピアは、「im.example.com」サーバーに接続するときに「foo.im.example.com」の「to」アドレスを指定しますが、サーバーはそのアドレスでサービスをホストしなくなります。)
P: <?xml version='1.0'?> <stream:stream from='example.net' to='foo.im.example.com' version='1.0' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='g4qSvGvBxJ+xeAd7QKezOQJFFlw=' to='example.net' version='1.0' xml:lang='en' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <host-gone xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The value of the 'to' attribute provided in the initial stream header does not correspond to an FQDN that is serviced by the receiving entity.
初期ストリームヘッダーで提供される「to」属性の値は、受信エンティティによってサービスされるFQDNに対応するものではありません。
(In the following example, the peer specifies a 'to' address of "example.org" when connecting to the "im.example.com" server, but the server knows nothing of that address.)
(次の例では、ピアは「im.example.com」サーバーに接続するときに「example.org」の「 '〜」アドレスを指定しますが、サーバーはそのアドレスについては何も知りません。)
P: <?xml version='1.0'?> <stream:stream from='example.net' to='example.org' version='1.0' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='g4qSvGvBxJ+xeAd7QKezOQJFFlw=' to='example.net' version='1.0' xml:lang='en' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <host-unknown xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
A stanza sent between two servers lacks a 'to' or 'from' attribute, the 'from' or 'to' attribute has no value, or the value violates the rules for XMPP addresses [XMPP-ADDR].
2つのサーバーの間に送信されるスタンザには、「to」または「from」属性、 'from'または 'to'属性には値がありません。または、値はXMPPアドレスのルールに違反します[XMPP-ADDR]。
(In the following example, the peer sends a stanza without a 'to' address over a server-to-server stream.)
(次の例では、ピアはサーバーからサーバーへのストリームを介して「to」アドレスなしでスタンザを送信します。)
P: <message from='juliet@im.example.com'> <body>Wherefore art thou?</body> </message>
S: <stream:error> <improper-addressing xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The server has experienced a misconfiguration or other internal error that prevents it from servicing the stream.
サーバーは、誤解またはその他の内部エラーが発生しているため、ストリームのサービスを防ぎます。
S: <stream:error> <internal-server-error xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The data provided in a 'from' attribute does not match an authorized JID or validated domain as negotiated (1) between two servers using SASL or Server Dialback, or (2) between a client and a server via SASL authentication and resource binding.
「From」属性で提供されるデータは、SASLまたはサーバーのダイヤルバックを使用して2つのサーバー間で交渉された(1)SASL認証とリソースバインディングを介してクライアントとサーバーの間で交渉された(1)(1)検証済みドメインと一致しません。
(In the following example, a peer that has authenticated only as "example.net" attempts to send a stanza from an address at "example.org".)
(次の例では、「example.net」としてのみ認証されたピアは、「embles.org」の住所からスタンザを送信しようとします。)
P: <message from='romeo@example.org' to='juliet@im.example.com'> <body>Neither, fair saint, if either thee dislike.</body> </message>
S: <stream:error> <invalid-from xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The stream namespace name is something other than "http://etherx.jabber.org/streams" (see Section 11.2) or the content namespace declared as the default namespace is not supported (e.g., something other than "jabber:client" or "jabber:server").
ストリーム名の名前は「http://etherx.jabber.org/streams」(セクション11.2を参照)またはデフォルトの名前空間として宣言されたコンテンツ名空間以外のものです(たとえば、「Jabber:client」以外のものまたは「Jabber:サーバー」)。
(In the following example, the client specifies a namespace of 'http://wrong.namespace.example.org/' for the stream.)
(次の例では、クライアントは、ストリームの「http://wrong.namespace.example.org/」の名前空間を指定します。)
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xmlns='jabber:client' xmlns:stream='http://wrong.namespace.example.org/'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <invalid-namespace xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The entity has sent invalid XML over the stream to a server that performs validation (see Section 11.4).
エンティティは、検証を実行するサーバーにストリームを介して無効なXMLを送信しました(セクション11.4を参照)。
(In the following example, the peer attempts to send an IQ stanza of type "subscribe", but the XML schema defines no such value for the 'type' attribute.) P: <iq from='example.net' id='l3b1vs75' to='im.example.com' type='subscribe'> <ping xmlns='urn:xmpp:ping'/> </iq>
S: <stream:error> <invalid-xml xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The entity has attempted to send XML stanzas or other outbound data before the stream has been authenticated, or otherwise is not authorized to perform an action related to stream negotiation; the receiving entity MUST NOT process the offending data before sending the stream error.
エンティティは、ストリームが認証される前にXMLスタンザまたはその他のアウトバウンドデータを送信しようとしました。受信エンティティは、ストリームエラーを送信する前に問題のあるデータを処理してはなりません。
(In the following example, the client attempts to send XML stanzas before authenticating with the server.)
(次の例では、クライアントはサーバーを認証する前にXMLスタンザを送信しようとします。)
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
C: <message to='romeo@example.net'> <body>Wherefore art thou?</body> </message>
S: <stream:error> <not-authorized xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The initiating entity has sent XML that violates the well-formedness rules of [XML] or [XML-NAMES].
開始エンティティは、[XML]または[XML-Names]の整形式ルールに違反するXMLを送信しました。
(In the following example, the client sends an XMPP message that is not namespace-well-formed.)
(次の例では、クライアントは、名前空間ウェルに形成されていないXMPPメッセージを送信します。)
C: <message> <foo:body>What is this foo?</foo:body> </message>
S: <stream:error> <not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
Interoperability Note: In RFC 3920, the name of this error condition was "xml-not-well-formed" instead of "not-well-formed". The name was changed because the element name <xml-not-well-formed/> violates the constraint from Section 3 of [XML] that "names beginning with a match to (('X'|'x')('M'|'m')('L'|'l')) are reserved for standardization in this or future versions of this specification".
相互運用性注:RFC 3920では、このエラー条件の名前は「XML-Not-Well形式」ではなく「XML-Not-Well Formed」でした。要素名<xml-not-well-formed/>は、[xml]のセクション3からの制約に違反しているため、名前が変更されました。| 'm')( 'l' | 'l'))は、この仕様のこのバージョンまたは将来のバージョンの標準化のために予約されています。
The entity has violated some local service policy (e.g., a stanza exceeds a configured size limit); the server MAY choose to specify the policy in the <text/> element or in an application-specific condition element.
エンティティは、いくつかのローカルサービスポリシーに違反しています(たとえば、スタンザは設定されたサイズの制限を超えています)。サーバーは、<テキスト/>要素またはアプリケーション固有の条件要素でポリシーを指定することを選択できます。
(In the following example, the client sends an XMPP message that is too large according to the server's local service policy.)
(次の例では、クライアントはサーバーのローカルサービスポリシーに応じて大きすぎるXMPPメッセージを送信します。)
C: <message to='juliet@im.example.com' id='foo'> <body>[ ... the-emacs-manual ... ]</body> </message>
S: <stream:error> <policy-violation xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> <stanza-too-big xmlns='urn:xmpp:errors'/> </stream:error>
S: </stream:stream>
The server is unable to properly connect to a remote entity that is needed for authentication or authorization (e.g., in certain scenarios related to Server Dialback [XEP-0220]); this condition is not to be used when the cause of the error is within the administrative domain of the XMPP service provider, in which case the <internal-server-error/> condition is more appropriate.
サーバーは、認証または承認に必要なリモートエンティティに適切に接続できません(たとえば、サーバーダイヤルバックに関連する特定のシナリオ[XEP-0220])。この条件は、エラーの原因がXMPPサービスプロバイダーの管理ドメイン内にある場合に使用されません。
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <remote-connection-failed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The server is closing the stream because it has new (typically security-critical) features to offer, because the keys or certificates used to establish a secure context for the stream have expired or have been revoked during the life of the stream (Section 13.7.2.3), because the TLS sequence number has wrapped (Section 5.3.5), etc. The reset applies to the stream and to any security context established for that stream (e.g., via TLS and SASL), which means that encryption and authentication need to be negotiated again for the new stream (e.g., TLS session resumption cannot be used).
サーバーは、ストリームの安全なコンテキストを確立するために使用されるキーまたは証明書が、ストリームの存続期間中に失効または取り消されたため、提供する新しい(通常はセキュリティ上の)機能を備えているため、ストリームを閉じています(セクション13.7。2.3)、TLSシーケンス番号がラップされているため(セクション5.3.5)など。リセットは、ストリームとそのストリームのために確立されたセキュリティコンテキスト(TLSおよびSASLを介して)に適用されます。新しいストリームのために再び交渉するために(例:TLSセッション再開を使用できません)。
S: <stream:error> <reset xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The server lacks the system resources necessary to service the stream.
サーバーには、ストリームのサービスに必要なシステムリソースがありません。
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <resource-constraint xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The entity has attempted to send restricted XML features such as a comment, processing instruction, DTD subset, or XML entity reference (see Section 11.1).
エンティティは、コメント、処理命令、DTDサブセット、またはXMLエンティティリファレンスなどの制限付きXML機能を送信しようとしました(セクション11.1を参照)。
(In the following example, the client sends an XMPP message containing an XML comment.) C: <message to='juliet@im.example.com'> <!--<subject/>--> <body>This message has no subject.</body> </message>
S: <stream:error> <restricted-xml xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The server will not provide service to the initiating entity but is redirecting traffic to another host under the administrative control of the same service provider. The XML character data of the <see-other-host/> element returned by the server MUST specify the alternate FQDN or IP address at which to connect, which MUST be a valid domainpart or a domainpart plus port number (separated by the ':' character in the form "domainpart:port"). If the domainpart is the same as the source domain, derived domain, or resolved IPv4 or IPv6 address to which the initiating entity originally connected (differing only by the port number), then the initiating entity SHOULD simply attempt to reconnect at that address. (The format of an IPv6 address MUST follow [IPv6-ADDR], which includes the enclosing the IPv6 address in square brackets '[' and ']' as originally defined by [URI].) Otherwise, the initiating entity MUST resolve the FQDN specified in the <see-other-host/> element as described under Section 3.2.
サーバーは、開始エンティティにサービスを提供するのではなく、同じサービスプロバイダーの管理管理下で別のホストにトラフィックをリダイレクトしています。サーバーによって返される<see-host/>要素のxml文字データは、接続する代替fqdnまたはIPアドレスを指定する必要があります。「フォームの文字」domainpart:port ")。DomainPartがソースドメイン、派生ドメイン、または開始エンティティが最初に接続された(ポート番号のみによって異なる)IPv4またはIPv6アドレスを解決した場合、開始エンティティは単にそのアドレスで再接続しようとする必要があります。(IPv6アドレスの形式は[IPv6-ADDR]に従う必要があります。これには、元々[URI]で定義された四角いブラケット '['および ']でIPv6アドレスを囲むことが含まれます。)そうでなければ、開始エンティティはfqdnを解決する必要があります。セクション3.2で説明されているように、<see-other-host/>要素で指定されています。
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <see-other-host xmlns='urn:ietf:params:xml:ns:xmpp-streams'> [2001:41D0:1:A49b::1]:9222 </see-other-host> </stream:error> </stream:stream>
When negotiating a stream with the host to which it has been redirected, the initiating entity MUST apply the same policies it would have applied to the original connection attempt (e.g., a policy requiring TLS), MUST specify the same 'to' address on the initial stream header, and MUST verify the identity of the new host using the same reference identifier(s) it would have used for the original connection attempt (in accordance with [TLS-CERTS]). Even if the receiving entity returns a <see-other-host/> error before the confidentiality and integrity of the stream have been established (thus introducing the possibility of a denial-of-service attack), the fact that the initiating entity needs to verify the identity of the XMPP service based on the same reference identifiers implies that the initiating entity will not connect to a malicious entity. To reduce the possibility of a denial-of-service attack, (a) the receiving entity SHOULD NOT close the stream with a <see-other-host/> stream error until after the confidentiality and integrity of the stream have been protected via TLS or an equivalent security layer (such as the SASL GSSAPI mechanism), and (b) the receiving entity MAY have a policy of following redirects only if it has authenticated the receiving entity. In addition, the initiating entity SHOULD abort the connection attempt after a certain number of successive redirects (e.g., at least 2 but no more than 5).
ホストがリダイレクトされているホストとストリームを交渉する場合、開始エンティティは、元の接続試行(たとえば、TLSを必要とするポリシー)に適用したのと同じポリシーを適用する必要があります。初期のストリームヘッダー、および元の接続試行に使用した同じ参照識別子を使用して、新しいホストのIDを検証する必要があります([TLS-Certs]に従って)。受信エンティティが、ストリームの機密性と完全性が確立される前に<see-other-host/>エラーを返したとしても(したがって、サービス拒否攻撃の可能性を導入します)、開始エンティティが必要であるという事実同じ参照識別子に基づいてXMPPサービスのIDを確認すると、開始エンティティが悪意のあるエンティティに接続しないことを意味します。サービス拒否攻撃の可能性を減らすために、(a)受信エンティティは、TLSを介してストリームの機密性と整合性が保護されるまで、<see-other-host/>ストリームエラーでストリームを閉じるべきではありません。または、同等のセキュリティレイヤー(SASL GSSAPIメカニズムなど)、および(b)受信エンティティには、受信エンティティを認証した場合にのみ、リダイレクトに従うというポリシーがある場合があります。さらに、開始エンティティは、一定数の連続したリダイレクト(たとえば、少なくとも2回は5以下)の後に接続試行を中止する必要があります。
The server is being shut down and all active streams are being closed.
サーバーはシャットダウンされており、すべてのアクティブストリームが閉じられています。
S: <stream:error> <system-shutdown xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The error condition is not one of those defined by the other conditions in this list; this error condition SHOULD NOT be used except in conjunction with an application-specific condition.
エラー条件は、このリストの他の条件で定義されている条件の1つではありません。このエラー条件は、アプリケーション固有の条件と組み合わせた場合を除き、使用すべきではありません。
S: <stream:error> <undefined-condition xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> <app-error xmlns='http://example.org/ns'/> </stream:error> </stream:stream>
The initiating entity has encoded the stream in an encoding that is not supported by the server (see Section 11.6) or has otherwise improperly encoded the stream (e.g., by violating the rules of the [UTF-8] encoding).
開始エンティティは、サーバーによってサポートされていないエンコード(セクション11.6を参照)でストリームをエンコードしたか、それ以外の場合はストリームを不適切にエンコードしました(たとえば、[UTF-8]エンコーディングのルールに違反することにより)。
(In the following example, the client attempts to encode data using UTF-16 instead of UTF-8.)
(次の例では、クライアントはUTF-8の代わりにUTF-16を使用してデータをエンコードしようとします。)
C: <?xml version='1.0' encoding='UTF-16'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <unsupported-encoding xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The receiving entity has advertised a mandatory-to-negotiate stream feature that the initiating entity does not support, and has offered no other mandatory-to-negotiate feature alongside the unsupported feature.
受信エンティティは、開始エンティティがサポートしていない必須のストリーム機能を宣伝しており、サポートされていない機能とともに他の必須の機能を提供していません。
(In the following example, the receiving entity requires negotiation of an example feature, but the initiating entity does not support the feature.)
(次の例では、受信エンティティにはサンプル機能の交渉が必要ですが、開始エンティティは機能をサポートしていません。)
R: <stream:features> <example xmlns='urn:xmpp:example'> <required/> </example> </stream:features>
I: <stream:error> <unsupported-feature xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The initiating entity has sent a first-level child of the stream that is not supported by the server, either because the receiving entity does not understand the namespace or because the receiving entity does not understand the element name for the applicable namespace (which might be the content namespace declared as the default namespace).
開始エンティティは、受信エンティティが名前空間を理解していないか、受信エンティティが該当する名前空間の要素名を理解していないためです。コンテンツネームスペースは、デフォルトの名前空間として宣言されました)。
(In the following example, the client attempts to send a first-level child element of <pubsub/> qualified by the 'jabber:client' namespace, but the schema for that namespace defines no such element.)
(次の例では、クライアントは「jabber:client 'namespaceによって資格のある<pubsub/>の第1レベルの子要素を送信しようとしますが、その名前空間のスキーマはそのような要素を定義しません。)
C: <pubsub xmlns='jabber:client'> <publish node='princely_musings'> <item id='ae890ac52d0df67ed7cfdf51b644e901'> <entry xmlns='http://www.w3.org/2005/Atom'> <title>Soliloquy</title> <summary> To be, or not to be: that is the question: Whether 'tis nobler in the mind to suffer The slings and arrows of outrageous fortune, Or to take arms against a sea of troubles, And by opposing end them? </summary> <link rel='alternate' type='text/html' href='http://denmark.example/2003/12/13/atom03'/> <id>tag:denmark.example,2003:entry-32397</id> <published>2003-12-13T18:30:02Z</published> <updated>2003-12-13T18:30:02Z</updated> </entry> </item> </publish> </pubsub>
S: <stream:error> <unsupported-stanza-type xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
The 'version' attribute provided by the initiating entity in the stream header specifies a version of XMPP that is not supported by the server.
ストリームヘッダーの開始エンティティが提供する「バージョン」属性は、サーバーによってサポートされていないXMPPのバージョンを指定します。
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='11.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'> <stream:error> <unsupported-version xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
As noted, an application MAY provide application-specific stream error information by including a properly namespaced child in the error element. The application-specific element SHOULD supplement or further qualify a defined element. Thus, the <error/> element will contain two or three child elements.
前述のように、アプリケーションは、エラー要素に適切に名前付きの子供を含めることにより、アプリケーション固有のストリームエラー情報を提供する場合があります。アプリケーション固有の要素は、定義された要素を補足するか、さらに修飾する必要があります。したがって、<エラー/>要素には2つまたは3つの子要素が含まれます。
C: <message> <body> My keyboard layout is:
C:<message> <body>キーボードレイアウトは次のとおりです。
QWERTYUIOP{}| ASDFGHJKL:" ZXCVBNM<>? </body> </message>
S: <stream:error> <not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> <text xml:lang='en' xmlns='urn:ietf:params:xml:ns:xmpp-streams'> Some special application diagnostic information! </text> <escape-your-data xmlns='http://example.org/ns'/> </stream:error> </stream:stream>
This section contains two highly simplified examples of a stream-based connection between a client and a server; these examples are included for the purpose of illustrating the concepts introduced thus far, but the reader needs to be aware that these examples elide many details (see Section 9 for more complete examples).
このセクションには、クライアントとサーバーの間のストリームベースの接続の2つの非常に単純化された例が含まれています。これらの例は、これまでに導入された概念を説明する目的で含まれていますが、読者はこれらの例が多くの詳細を排除することに注意する必要があります(より完全な例についてはセクション9を参照)。
A basic connection:
基本的な接続:
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
[ ... stream negotiation ... ]
[...交渉をストリーム...]
C: <message from='juliet@im.example.com/balcony' to='romeo@example.net' xml:lang='en'> <body>Art thou not Romeo, and a Montague?</body> </message>
S: <message from='romeo@example.net/orchard' to='juliet@im.example.com/balcony' xml:lang='en'> <body>Neither, fair saint, if either thee dislike.</body> </message>
C: </stream:stream>
S: </stream:stream> A connection gone bad:
S:</stream:stream>接続が悪くなった:
C: <?xml version='1.0'?> <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <?xml version='1.0'?> <stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
[ ... stream negotiation ... ]
[...交渉をストリーム...]
C: <message from='juliet@im.example.com/balcony' to='romeo@example.net' xml:lang='en'> <body>No closing tag! </message>
S: <stream:error> <not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/> </stream:error> </stream:stream>
More detailed examples are provided under Section 9.
より詳細な例は、セクション9に記載されています。
XMPP includes a method for securing the stream from tampering and eavesdropping. This channel encryption method makes use of the Transport Layer Security [TLS] protocol, specifically a "STARTTLS" extension that is modeled after similar extensions for the [IMAP],
XMPPには、改ざんや盗聴からストリームを保護する方法が含まれています。このチャネル暗号化方法では、[IMAP]の同様の拡張後にモデル化された「StartTLS」拡張機能、特に[IMAP]の拡張後にモデル化された「StartTLS」拡張機能を使用します。
[POP3], and [ACAP] protocols as described in [USINGTLS]. The XML namespace name for the STARTTLS extension is 'urn:ietf:params:xml:ns:xmpp-tls'.
[pop3]、および[acap]プロトコル[busingtls]で説明されています。startTLS拡張子のXML名空間名は「urn:ietf:params:xml:ns:xmpp-tls」です。
Support for STARTTLS is REQUIRED in XMPP client and server implementations. An administrator of a given deployment MAY specify that TLS is mandatory-to-negotiate for client-to-server communication, server-to-server communication, or both. An initiating entity SHOULD use TLS to secure its stream with the receiving entity before proceeding with SASL authentication.
XMPPクライアントおよびサーバーの実装では、startTLSのサポートが必要です。特定の展開の管理者は、TLSがクライアント間通信、サーバー間通信、またはその両方に対して必須であることを指定する場合があります。開始エンティティは、SASL認証を進める前に、TLSを使用して受信エンティティでストリームを保護する必要があります。
If the receiving entity advertises only the STARTTLS feature or if the receiving entity includes the <required/> child element as explained under Section 5.4.1, the parties MUST consider TLS as mandatory-to-negotiate. If TLS is mandatory-to-negotiate, the receiving entity SHOULD NOT advertise support for any stream feature except STARTTLS during the initial stage of the stream negotiation process, because further stream features might depend on prior negotiation of TLS given the order of layers in XMPP (e.g., the particular SASL mechanisms offered by the receiving entity will likely depend on whether TLS has been negotiated).
After TLS negotiation, the parties MUST restart the stream.
TLS交渉の後、当事者はストリームを再起動する必要があります。
During STARTTLS negotiation, the entities MUST NOT send any whitespace as separators between XML elements (i.e., from the last character of the first-level <starttls/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-tls' namespace as sent by the initiating entity, until the last character of the first-level <proceed/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-tls' namespace as sent by the receiving entity). This prohibition helps to ensure proper security layer byte precision. Any such whitespace shown in the STARTTLS examples provided in this document is included only for the sake of readability.
starttlsの交渉中、エンティティはXML要素間のセパレーターとしてホワイトスペースを送信してはなりません(つまり、 'urn:ietf:params:xml:ns:xmpp-tlsによって認定された第1レベル<starttls/>要素の最後の文字から「urn:ietf:params:xml:ns:xmpp-tls 'namespaceが受信エンティティによって送信された最初のレベル<継続/>要素の最後の文字まで、開始エンティティが送信した名前空間。この禁止は、適切なセキュリティレイヤーバイトの精度を確保するのに役立ちます。このドキュメントに記載されているStartTLSの例に示されているこのような空白は、読みやすさのためにのみ含まれています。
If the initiating entity chooses to use TLS, STARTTLS negotiation MUST be completed before proceeding to SASL negotiation (Section 6); this order of negotiation is necessary to help safeguard authentication information sent during SASL negotiation, as well as to make it possible to base the use of the SASL EXTERNAL mechanism on a certificate (or other credentials) provided during prior TLS negotiation.
開始エンティティがTLSの使用を選択した場合、SASL交渉に進む前にStartTLS交渉を完了する必要があります(セクション6)。この交渉順序は、SASL交渉中に送信された認証情報を保護するのを支援し、以前のTLS交渉中に提供された証明書(またはその他の資格)のSASL外部メカニズムの使用を可能にするために必要です。
The TLS protocol allows either party in a TLS-protected channel to initiate a new handshake that establishes new cryptographic parameters (see [TLS-NEG]). The cases most commonly mentioned are:
1. Refreshing encryption keys.
1. 暗号化キーを更新します。
2. Wrapping the TLS sequence number as explained in Section 6.1 of [TLS].
2. [TLS]のセクション6.1で説明されているように、TLSシーケンス番号をラッピングします。
3. Protecting client credentials by completing server authentication first and then completing client authentication over the protected channel.
3. 最初にサーバー認証を完了し、保護されたチャネルでクライアント認証を完了することにより、クライアントの資格情報を保護します。
Because it is relatively inexpensive to establish streams in XMPP, for the first two cases it is preferable to use an XMPP stream reset (as described under Section 4.9.3.16) instead of performing TLS renegotiation.
XMPPにストリームを確立するのは比較的安価であるため、最初の2つのケースでは、TLS再交渉を実行する代わりにXMPPストリームリセット(セクション4.9.3.16で説明)を使用することが望ましいです。
The third case has improved security characteristics when the TLS client (which might be an XMPP server) presents credentials to the TLS server. If communicating such credentials to an unauthenticated TLS server might leak private information, it can be appropriate to complete TLS negotiation for the purpose of authenticating the TLS server to the TLS client and then attempt TLS renegotiation for the purpose of authenticating the TLS client to the TLS server. However, this case is extremely rare because the credentials presented by an XMPP server or XMPP client acting as a TLS client are almost always public (i.e., a PKIX certificate), and therefore providing those credentials before authenticating the XMPP server acting as a TLS server would not in general leak private information.
3番目のケースでは、TLSクライアント(XMPPサーバーである可能性がある)がTLSサーバーに資格情報を提示すると、セキュリティ特性が改善されました。そのような資格情報を認証されていないTLSサーバーと通信する可能性がある場合、TLSサーバーをTLSクライアントに認証する目的でTLS交渉を完了し、TLSクライアントをTLSクライアントに認証する目的でTLS再交渉を試みることが適切である可能性があります。サーバ。ただし、TLSクライアントとして機能するXMPPサーバーまたはXMPPクライアントによって提示された資格情報がほとんど常に公開されているため(すなわち、PKIX証明書)、したがって、TLSサーバーとして機能するXMPPサーバーを認証する前にそれらの資格情報を提供するため、このケースは非常にまれです。一般的に個人情報が漏れません。
As a result, implementers are encouraged to carefully weigh the costs and benefits of TLS renegotiation before supporting it in their software, and XMPP entities that act as TLS clients are discouraged from attempting TLS renegotiation unless the certificate (or other credential information) sent during TLS negotiation is known to be private.
その結果、実装者は、ソフトウェアでサポートする前にTLS再交渉のコストとメリットを慎重に比較検討することをお勧めします。TLSクライアントとして機能するXMPPエンティティは、証明書(または他の資格情報)がTLS中に送信されない限り、TLS再交渉を試みることを阻止します。交渉はプライベートであることが知られています。
Support for TLS renegotiation is strictly OPTIONAL. However, implementations that support TLS renegotiation MUST implement and use the TLS Renegotiation Extension [TLS-NEG].
TLS再交渉のサポートは厳密にオプションです。ただし、TLS再交渉をサポートする実装は、TLS再交渉拡張[TLS-Neg]を実装および使用する必要があります。
If an entity that does not support TLS renegotiation detects a renegotiation attempt, then it MUST immediately close the underlying TCP connection without returning a stream error (since the violation has occurred at the TLS layer, not the XMPP layer, as described under Section 13.3).
TLS再交渉をサポートしないエンティティが再交渉の試みを検出する場合、ストリームエラーを返すことなく、基礎となるTCP接続を直ちに閉じる必要があります(セクション13.3で説明するように、XMPPレイヤーではなくTLS層で違反が発生したため)。
If an entity that supports TLS renegotiation detects a TLS renegotiation attempt that does not use the TLS Renegotiation Extension [TLS-NEG], then it MUST immediately close the underlying TCP connection without returning a stream error (since the violation has occurred at the TLS layer, not the XMPP layer as described under Section 13.3).
TLS再交渉をサポートするエンティティが、TLS再交渉拡張[TLS-Neg]を使用しないTLS再交渉の試みを検出する場合、ストリームエラーを返すことなく基礎となるTCP接続をすぐに閉じる必要があります(TLS層で違反が発生したため、セクション13.3に記載されているXMPP層ではありません)。
Either party to a stream MAY include any TLS extension during the TLS negotiation itself. This is a matter for the TLS layer, not the XMPP layer.
ストリームのいずれかの当事者には、TLS交渉中にTLS拡張機能が含まれる場合があります。これは、XMPPレイヤーではなくTLSレイヤーの問題です。
The initiating entity resolves the FQDN of the receiving entity as specified under Section 3, opens a TCP connection to the advertised port at the resolved IP address, and sends an initial stream header to the receiving entity.
開始エンティティは、セクション3で指定されているように受信エンティティのFQDNを解決し、解決されたIPアドレスで広告されたポートへのTCP接続を開き、受信エンティティに初期ストリームヘッダーを送信します。
I: <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
The receiving entity MUST send a response stream header to the initiating entity over the TCP connection opened by the initiating entity.
受信エンティティは、開始エンティティによって開かれたTCP接続を介して、回答ストリームヘッダーを開始エンティティに送信する必要があります。
R: <stream:stream from='im.example.com' id='t7AMCin9zjMNwQKDnplntZPIDEI=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
The receiving entity then MUST send stream features to the initiating entity. If the receiving entity supports TLS, the stream features MUST include an advertisement for support of STARTTLS negotiation, i.e., a <starttls/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-tls' namespace.
受信エンティティは、開始エンティティにストリーム機能を送信する必要があります。受信エンティティがTLSをサポートしている場合、ストリーム機能には、StartTLSネゴシエーションのサポートのための広告を含める必要があります。
If the receiving entity considers STARTTLS negotiation to be mandatory-to-negotiate, the <starttls/> element MUST contain an empty <required/> child element.
受信エンティティがStartTLS交渉を必須であると考える場合、<starttls/>要素には空の<必須/>子要素が含まれている必要があります。
R: <stream:features> <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'> <required/> </starttls> </stream:features>
In order to begin the STARTTLS negotiation, the initiating entity issues the STARTTLS command (i.e., a <starttls/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-tls' namespace) to instruct the receiving entity that it wishes to begin a STARTTLS negotiation to secure the stream.
StartTLS交渉を開始するために、開始エンティティはStartTLSコマンド(つまり、 'urn:ietf:farams:xml:ns:xmpp-tls' namespaceによって認定されたa <starttls/>要素)を発行します。ストリームを確保するために、StartTLS交渉を開始したいと考えています。
I: <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
The receiving entity MUST reply with either a <proceed/> element (proceed case) or a <failure/> element (failure case) qualified by the 'urn:ietf:params:xml:ns:xmpp-tls' namespace.
受信エンティティは、「urn:ietf:params:xml:ns:xmpp-tls 'namespace」によって認定された<継続/>要素(継続ケース)または<故障/>要素(故障ケース)のいずれかで返信する必要があります。
If the failure case occurs, the receiving entity MUST return a <failure/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-tls' namespace, close the XML stream, and terminate the underlying TCP connection.
障害ケースが発生した場合、受信エンティティは「urn:ietf:params:xml:ns:xmpp-tls 'namespace」によって認定された<故障/>要素を返す必要があります。
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
R: </stream:stream>
Causes for the failure case include but are not limited to:
障害の原因には、以下が含まれますが、これらに限定されません。
1. The initiating entity has sent a malformed STARTTLS command.
1. 開始エンティティは、奇形のStartTLSコマンドを送信しました。
2. The receiving entity did not offer the STARTTLS feature in its stream features.
2. 受信エンティティは、ストリーム機能にstartTLS機能を提供しませんでした。
3. The receiving entity cannot complete STARTTLS negotiation because of an internal error.
3. 受信エンティティは、内部エラーのためにStartTLS交渉を完了することはできません。
Informational Note: STARTTLS failure is not triggered by TLS errors such as bad_certificate or handshake_failure, which are generated and handled during the TLS negotiation itself as described in [TLS].
情報ノート:StartTLS障害は、[TLS]で説明されているように、TLS交渉自体の間に生成および処理されるbad_certificateやhandshake_failureなどのTLSエラーによってトリガーされません。
If the failure case occurs, the initiating entity MAY attempt to reconnect as explained under Section 3.3.
障害ケースが発生した場合、開始エンティティはセクション3.3で説明されているように再接続を試みることができます。
If the proceed case occurs, the receiving entity MUST return a <proceed/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-tls' namespace.
続行ケースが発生した場合、受信エンティティは「urn:ietf:params:xml:ns:xmpp-tls 'namespace」によって認定された<procee/>要素を返す必要があります。
R: <proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
The receiving entity MUST consider the TLS negotiation to have begun immediately after sending the closing '>' character of the <proceed/> element to the initiating entity. The initiating entity MUST consider the TLS negotiation to have begun immediately after receiving the closing '>' character of the <proceed/> element from the receiving entity.
The entities now proceed to TLS negotiation as explained in the next section.
In order to complete TLS negotiation over the TCP connection, the entities MUST follow the process defined in [TLS].
TCP接続を介したTLS交渉を完了するには、エンティティは[TLS]で定義されているプロセスに従う必要があります。
The following rules apply:
次のルールが適用されます。
1. The entities MUST NOT send any further XML data until the TLS negotiation is complete.
1. エンティティは、TLS交渉が完了するまで、XMLデータをさらに送信してはなりません。
2. When using any of the mandatory-to-implement (MTI) ciphersuites specified under Section 13.8, the receiving entity MUST present a certificate.
2. セクション13.8で指定されている必須の実装(MTI)のいずれかを使用する場合、受信エンティティは証明書を提示する必要があります。
3. So that mutual certificate authentication will be possible, the receiving entity SHOULD send a certificate request to the initiating entity, and the initiating entity SHOULD send a certificate to the receiving entity (but for privacy reasons might opt not to send a certificate until after the receiving entity has authenticated to the initiating entity).
3. 相互証明書認証が可能になるように、受信エンティティは証明書要求を開始エンティティに送信する必要があり、開始エンティティは受信エンティティに証明書を送信する必要があります(ただし、プライバシー上の理由により、受信後まで証明書を送信しないことを選択する場合がありますエンティティは、開始エンティティに認証されています)。
4. The receiving entity SHOULD choose which certificate to present based on the domainpart contained in the 'to' attribute of the initial stream header (in essence, this domainpart is functionally equivalent to the Server Name Indication defined for TLS in [TLS-EXT]).
4. 受信エンティティは、初期ストリームヘッダーの「to」属性に含まれるドメインパートに基づいて提示する証明書を選択する必要があります(本質的に、このドメインパートは、[TLS-Ext]のTLSで定義されたサーバー名表示に機能的に同等です)。
5. To determine if the TLS negotiation will succeed, the initiating entity MUST attempt to validate the receiving entity's certificate in accordance with the certificate validation procedures specified under Section 13.7.2.
5. TLS交渉が成功するかどうかを判断するために、開始エンティティは、セクション13.7.2に基づいて指定された証明書検証手順に従って、受信エンティティの証明書を検証しようと試みなければなりません。
6. If the initiating entity presents a certificate, the receiving entity too MUST attempt to validate the initiating entity's certificate in accordance with the certificate validation procedures specified under Section 13.7.2.
6. 開始エンティティが証明書を提示する場合、受信エンティティもセクション13.7.2に基づいて指定された証明書検証手順に従って、開始エンティティの証明書を検証しようと試みなければなりません。
7. Following successful TLS negotiation, all further data transmitted by either party MUST be protected with the negotiated algorithms, keys, and secrets (i.e., encrypted, integrity-protected, or both depending on the ciphersuite used).
7. TLS交渉の成功に続いて、いずれかの当事者によって送信されるすべてのさらなるデータは、ネゴシエートされたアルゴリズム、キー、および秘密(すなわち、暗号化された、整合性、またはその両方に応じて使用する)で保護する必要があります。
Security Warning: See Section 13.8 regarding ciphersuites that MUST be supported for TLS; naturally, other ciphersuites MAY be supported as well.
セキュリティ警告:TLSにサポートする必要があるciphersuitesについては、セクション13.8を参照してください。当然のことながら、他のシファースーツもサポートされる場合があります。
If the TLS negotiation results in failure, the receiving entity MUST terminate the TCP connection.
TLS交渉の結果として失敗する場合、受信エンティティはTCP接続を終了する必要があります。
The receiving entity MUST NOT send a closing </stream> tag before terminating the TCP connection (since the failure has occurred at the TLS layer, not the XMPP layer as described under Section 13.3).
受信エンティティは、TCP接続を終了する前にクロージング</stream>タグを送信してはなりません(セクション13.3で説明されているXMPPレイヤーではなく、TLSレイヤーで障害が発生したため)。
The initiating entity MAY attempt to reconnect as explained under Section 3.3, with or without attempting TLS negotiation (in accordance with local service policy, user-configured preferences, etc.).
開始エンティティは、TLSの交渉を試みる場合とせずに、セクション3.3に基づいて説明されているように再接続しようとする場合があります(ローカルサービスポリシー、ユーザーが構成した設定など)。
If the TLS negotiation is successful, then the entities MUST proceed as follows.
1. The initiating entity MUST discard any information transmitted in layers above TCP that it obtained from the receiving entity in an insecure manner before TLS took effect (e.g., the receiving entity's 'from' address or the stream ID and stream features received from the receiving entity).
1.
2. The receiving entity MUST discard any information transmitted in layers above TCP that it obtained from the initiating entity in an insecure manner before TLS took effect (e.g., the initiating entity's 'from' address).
2. 受信エンティティは、TLSが有効になる前に、開始エンティティから取得したTCPを超えるレイヤーで送信された情報をTCPを超えて廃棄する必要があります(例:開始エンティティの「From」アドレス)。
3. The initiating entity MUST send a new initial stream header to the receiving entity over the encrypted connection (as specified under Section 4.3.3, the initiating entity MUST NOT send a closing </stream> tag before sending the new initial stream header, since the receiving entity and initiating entity MUST consider the original stream to be replaced upon success of the TLS negotiation).
3. 開始エンティティは、暗号化された接続を介して新しい初期ストリームヘッダーを受信エンティティに送信する必要があります(セクション4.3.3で指定されているように、開始エンティティは、新しい初期ストリームヘッダーを送信する前に</stream>タグを送信してはなりません。Entityを受け取って開始するエンティティは、TLS交渉の成功とともに元のストリームを置き換えることを考慮する必要があります)。
I: <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
4. The receiving entity MUST respond with a new response stream header over the encrypted connection (for which it MUST generate a new stream ID instead of reusing the old stream ID).
4. 受信エンティティは、暗号化された接続(古いストリームIDを再利用する代わりに新しいストリームIDを生成する必要がある)上に新しい応答ストリームヘッダーで応答する必要があります。
R: <stream:stream from='im.example.com' id='vgKi/bkYME8OAj4rlXMkpucAqe4=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
5. The receiving entity also MUST send stream features to the initiating entity, which MUST NOT include the STARTTLS feature but which SHOULD include the SASL stream feature as described under Section 6 (see especially Section 6.4.1 regarding the few reasons why the SASL stream feature would not be offered here).
5.
R: <stream:features> <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <mechanism>EXTERNAL</mechanism> <mechanism>SCRAM-SHA-1-PLUS</mechanism> <mechanism>SCRAM-SHA-1</mechanism> <mechanism>PLAIN</mechanism> </mechanisms> </stream:features>
XMPP includes a method for authenticating a stream by means of an XMPP-specific profile of the Simple Authentication and Security Layer protocol (see [SASL]). SASL provides a generalized method for adding authentication support to connection-based protocols, and XMPP uses an XML namespace profile of SASL that conforms to the profiling requirements of [SASL]. The XML namespace name for the SASL extension is 'urn:ietf:params:xml:ns:xmpp-sasl'.
XMPPには、単純な認証とセキュリティレイヤープロトコルのXMPP固有のプロファイルを使用してストリームを認証する方法が含まれています([SASL]を参照)。SASLは、接続ベースのプロトコルに認証サポートを追加するための一般化された方法を提供し、XMPPは[SASL]のプロファイリング要件に準拠するSASLのXMLネームスペースプロファイルを使用します。SASL拡張機能のXMLネームスペース名は「urn:ietf:params:xml:ns:xmpp-sasl」です。
Support for SASL negotiation is REQUIRED in XMPP client and server implementations.
XMPPクライアントとサーバーの実装では、SASL交渉のサポートが必要です。
The parties to a stream MUST consider SASL as mandatory-to-negotiate.
ストリームの当事者は、SASLを強制的な交渉と見なす必要があります。
After SASL negotiation, the parties MUST restart the stream.
SASLの交渉後、当事者はストリームを再開しなければなりません。
Any entity that will act as a SASL client or a SASL server MUST maintain an ordered list of its preferred SASL mechanisms according to the client or server, where the list is ordered according to local policy or user configuration (which SHOULD be in order of perceived strength to enable the strongest authentication possible). The initiating entity MUST maintain its own preference order independent of the preference order of the receiving entity. A client MUST try SASL mechanisms in its preference order. For example, if the server offers the ordered list "PLAIN SCRAM-SHA-1 GSSAPI" or "SCRAM-SHA-1 GSSAPI PLAIN" but the client's ordered list is "GSSAPI SCRAM-SHA-1", the client MUST try GSSAPI first and then SCRAM-SHA-1 but MUST NOT try PLAIN (since PLAIN is not on its list).
If the receiving entity considers TLS negotiation (Section 5) to be mandatory-to-negotiate before it will accept authentication with a particular SASL mechanism, it MUST NOT advertise that mechanism in its list of available SASL mechanisms before TLS negotiation has been completed.
受信エンティティがTLS交渉(セクション5)が特定のSASLメカニズムを使用して認証を受け入れる前に必須であると考える場合、TLS交渉が完了する前に利用可能なSASLメカニズムのリストにそのメカニズムを宣伝してはなりません。
The receiving entity SHOULD offer the SASL EXTERNAL mechanism if both of the following conditions hold:
受信エンティティは、次の両方の条件が保持されている場合、SASL外部メカニズムを提供する必要があります。
1. During TLS negotiation the initiating entity presented a certificate that is acceptable to the receiving entity for purposes of strong identity verification in accordance with local service policies (e.g., because said certificate is unexpired, is unrevoked, and is anchored to a root trusted by the receiving entity).
1. TLS交渉中に、開始エンティティは、ローカルサービスポリシーに従って強力なアイデンティティ検証の目的で受信エンティティに受け入れられる証明書を提示しました(例えば、証明書は期限切れであり、リヴォークされておらず、受信によって信頼されるルートに固定されています。実在物)。
2. The receiving entity expects that the initiating entity will be able to authenticate and authorize as the identity provided in the certificate; in the case of a server-to-server stream, the receiving entity might have such an expectation because a DNS domain name presented in the initiating entity's certificate matches the domain referenced in the 'from' attribute of the initial stream header, where the matching rules of [TLS-CERTS] apply; in the case of a client-to-server stream, the receiving entity might have such an expectation because the bare JID presented in the initiating entity's certificate matches a user account that is registered with the server or because other information contained in the initiating entity's certificate matches that of an entity that has permission to use the server for access to an XMPP network.
2. 受信エンティティは、開始エンティティが証明書に提供された身元を認証および承認できることを期待しています。サーバーからサーバーへのストリームの場合、開始エンティティの証明書に表示されるDNSドメイン名が初期ストリームヘッダーの「From」属性で参照されるドメインと一致するドメインと一致するドメインと一致するドメインと一致するため、受信エンティティはそのような期待を持っている可能性があります。[tls-certs]のルールが適用されます。クライアントからサーバーへのストリームの場合、開始エンティティの証明書に提示されたベアジッドがサーバーに登録されているユーザーアカウントと一致するか、開始エンティティの証明書に含まれる他の情報と一致するため、受信エンティティはそのような期待を持っている可能性があります。XMPPネットワークへのアクセスにサーバーを使用する許可を持つエンティティのそれと一致します。
However, the receiving entity MAY offer the SASL EXTERNAL mechanism under other circumstances, as well.
ただし、受信エンティティは、他の状況下でもSASL外部メカニズムを提供する場合があります。
When the receiving entity offers the SASL EXTERNAL mechanism, the receiving entity SHOULD list the EXTERNAL mechanism first among its offered SASL mechanisms and the initiating entity SHOULD attempt SASL negotiation using the EXTERNAL mechanism first (this preference will tend to increase the likelihood that the parties can negotiate mutual certificate authentication).
受信エンティティがSASL外部メカニズムを提供する場合、受信エンティティは最初に提供されたSASLメカニズムの中に外部メカニズムをリストする必要があり、開始エンティティは最初に外部メカニズムを使用してSASL交渉を試みる必要があります(この好みは、当事者ができる可能性を高める傾向があります相互証明書認証を交渉します)。
Section 13.8 specifies SASL mechanisms that MUST be supported; naturally, other SASL mechanisms MAY be supported as well.
セクション13.8は、サポートする必要があるSASLメカニズムを指定します。当然、他のSASLメカニズムもサポートされる場合があります。
Informational Note: Best practices for the use of SASL in the context of XMPP are described in [XEP-0175] for the ANONYMOUS mechanism and in [XEP-0178] for the EXTERNAL mechanism.
情報ノート:XMPPのコンテキストでSASLを使用するためのベストプラクティスは、匿名メカニズムの[XEP-0175]および外部メカニズムの[XEP-0178]で説明されています。
The following data formatting rules apply to the SASL negotiation:
以下のデータフォーマットルールは、SASL交渉に適用されます。
1. During SASL negotiation, the entities MUST NOT send any whitespace as separators between XML elements (i.e., from the last character of the first-level <auth/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace as sent by the initiating entity, until the last character of the first-level <success/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace as sent by the receiving entity). This prohibition helps to ensure proper security layer byte precision. Any such whitespace shown in the SASL examples provided in this document is included only for the sake of readability.
1. SASL交渉中、エンティティはXML要素間のセパレーターとしてホワイトスペースを送信してはなりません(つまり、 'urn:ietf:params:xml:ns:xmpp-saslで認定された第1レベル<auth/>要素の最後の文字から「urn:ietf:params:xml:ns:xmpp-sasl 'namespaceが受信エンティティによって送信される第1レベル<success/>要素の最後の文字まで、開始エンティティが送信した名前空間。この禁止は、適切なセキュリティレイヤーバイトの精度を確保するのに役立ちます。このドキュメントに記載されているSASLの例に示されているこのような空白は、読みやすさのためにのみ含まれています。
2. Any XML character data contained within the XML elements MUST be encoded using base 64, where the encoding adheres to the definition in Section 4 of [BASE64] and where the padding bits are set to zero.
2. XML要素内に含まれるXML文字データは、ベース64を使用してエンコードする必要があります。ここで、エンコードは[Base64]のセクション4の定義に準拠し、パディングビットがゼロに設定されています。
3. As formally specified in the XML schema for the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace under Appendix A.4, the receiving entity MAY include one or more application-specific child elements inside the <mechanisms/> element to provide information that might be needed by the initiating entity in order to complete successful SASL negotiation using one or more of the offered mechanisms; however, the syntax and semantics of all such elements are out of scope for this specification (see [XEP-0233] for one example).
3. 「urn:ietf:params:xml:ns:xmpp-sasl」という名前の付録A.4のXMLスキーマで正式に指定されているように、受信エンティティには<メカニズム/>>>>>>内部に1つ以上のアプリケーション固有の子要素が含まれる場合があります。提供されたメカニズムの1つ以上を使用してSASL交渉を成功させるために、開始エンティティが必要とする可能性のある情報を提供する要素。ただし、そのようなすべての要素の構文とセマンティクスは、この仕様の範囲外です(1つの例については[XEP-0233]を参照)。
Upon successful SASL negotiation that involves negotiation of a security layer, both the initiating entity and the receiving entity MUST discard any application-layer state (i.e, state from the XMPP layer, excluding state from the TLS negotiation or SASL negotiation).
セキュリティレイヤーの交渉を含むSASL交渉が成功した場合、開始エンティティと受信エンティティの両方がアプリケーションレイヤー状態(すなわち、TLS交渉またはSASL交渉からの状態を除くXMPP層から状態)を破棄する必要があります。
Some SASL mechanisms (e.g., CRAM-MD5, DIGEST-MD5, and SCRAM) specify that the authentication identity used in the context of such mechanisms is a "simple user name" (see Section 2 of [SASL] as well as [SASLPREP]). The exact form of the simple user name in any particular mechanism or deployment thereof is a local matter, and a simple user name does not necessarily map to an application identifier such as a JID or JID component (e.g., a localpart). However, in the absence of local information provided by the server, an XMPP client SHOULD assume that the authentication identity for such a SASL mechanism is a simple user name equal to the localpart of the user's JID.
一部のSASLメカニズム(例:CRAM-MD5、Digest-MD5、Scram)は、そのようなメカニズムのコンテキストで使用される認証IDが「単純なユーザー名」であることを指定しています([SASL]および[SASLPrep]のセクション2を参照してください。)。特定のメカニズムまたはその展開における単純なユーザー名の正確な形式はローカルの問題であり、単純なユーザー名は必ずしもJIDやJIDコンポーネント(LocalPartなど)などのアプリケーション識別子にマッピングされるわけではありません。ただし、サーバーが提供するローカル情報がない場合、XMPPクライアントは、このようなSASLメカニズムの認証IDは、ユーザーのJIDのローカルパートに等しい単純なユーザー名であると想定する必要があります。
An authorization identity is an OPTIONAL identity included by the initiating entity to specify an identity to act as (see Section 2 of [SASL]). In client-to-server streams, it would most likely be used by an administrator to perform some management task on behalf of another user, whereas in server-to-server streams it would most likely be used to specify a particular add-on service at an XMPP service (e.g., a multi-user chat server at conference.example.com that is hosted by the example.com XMPP service). If the initiating entity wishes to act on behalf of another entity and the selected SASL mechanism supports transmission of an authorization identity, the initiating entity MUST provide an authorization identity during SASL negotiation. If the initiating entity does not wish to act on behalf of another entity, it MUST NOT provide an authorization identity.
認証アイデンティティは、開始エンティティによって含まれるオプションのアイデンティティであり、そのように行動するアイデンティティを指定します([SASL]のセクション2を参照)。クライアントからサーバーへのストリームでは、管理者が別のユーザーに代わって管理タスクを実行するために使用される可能性が最も高いのに対し、サーバーからサーバーのストリームでは、特定のアドオンサービスの指定に使用される可能性が高いでしょう。XMPPサービス(例:Conference.example.comのマルチユーザーチャットサーバー。これは、example.com XMPPサービスでホストされています)。開始エンティティが別のエンティティに代わって行動したい場合、選択されたSASLメカニズムが認可IDの送信をサポートする場合、開始エンティティはSASL交渉中に認可IDを提供する必要があります。開始エンティティが別のエンティティに代わって行動することを望まない場合、承認アイデンティティを提供してはなりません。
In the case of client-to-server communication, the value of an authorization identity MUST be a bare JID (<localpart@domainpart>) rather than a full JID (<localpart@domainpart/resourcepart>).
クライアント間通信の場合、承認IDの価値は、完全なJID(<localPart@domainpart/resourcePart>)ではなく、むき出しのjid(<localpart@domainpart>)でなければなりません。
In the case of server-to-server communication, the value of an authorization identity MUST be a domainpart only (<domainpart>).
サーバー間通信の場合、承認IDの値はdomainpartのみ(<domainpart>)でなければなりません。
If the initiating entity provides an authorization identity during SASL negotiation, the receiving entity is responsible for verifying that the initiating entity is in fact allowed to assume the specified authorization identity; if not, the receiving entity MUST return an <invalid-authzid/> SASL error as described under Section 6.5.6.
SASL交渉中に開始エンティティが承認IDを提供する場合、受信エンティティは、開始エンティティが実際に指定された認証アイデンティティを引き受けることが許可されていることを確認する責任があります。そうでない場合、受信エンティティは、セクション6.5.6で説明されているように、<invalid-authzid/> SASLエラーを返しなければなりません。
The receiving entity MAY include a realm when negotiating certain SASL mechanisms (e.g., both the GSSAPI and DIGEST-MD5 mechanisms allow the authentication exchange to include a realm, though in different ways, whereas the EXTERNAL, SCRAM, and PLAIN mechanisms do not). If the receiving entity does not communicate a realm, the initiating entity MUST NOT assume that any realm exists. The realm MUST be used only for the purpose of authentication; in particular, an initiating entity MUST NOT attempt to derive an XMPP domainpart from the realm information provided by the receiving entity.
受信エンティティには、特定のSASLメカニズムを交渉する際の領域が含まれる場合があります(たとえば、GSSAPIとDIGEST-MD5メカニズムの両方により、認証交換は異なる方法で領域を含めることができますが、外部、スクラム、およびプレーンメカニズムはそうではありません)。受信エンティティが領域を通信しない場合、開始エンティティは領域が存在すると仮定してはなりません。領域は、認証の目的でのみ使用する必要があります。特に、開始エンティティは、受信エンティティが提供するレルム情報からXMPPドメインパートを導き出そうとしてはなりません。
[SASL] specifies that a using protocol such as XMPP can define two methods by which the protocol can save round trips where allowed for the SASL mechanism:
[SASL]は、XMPPなどのプロトコルを使用すると、SASLメカニズムが許可されているラウンドトリップを節約できる2つの方法を定義できることを指定します。
1. When the SASL client (the XMPP "initiating entity") requests an authentication exchange, it can include "initial response" data with its request if appropriate for the SASL mechanism in use. In XMPP, this is done by including the initial response as the XML character data of the <auth/> element.
1. SASLクライアント(XMPP「開始エンティティ」)が認証交換を要求する場合、使用中のSASLメカニズムに適切な場合、「初期応答」データをリクエストに含めることができます。XMPPでは、これは初期応答を<auth/>要素のxml文字データとして含めることによって行われます。
2. At the end of the authentication exchange, the SASL server (the XMPP "receiving entity") can include "additional data with success" if appropriate for the SASL mechanism in use. In XMPP, this is done by including the additional data as the XML character data of the <success/> element.
2. 認証交換の終わりに、SASLサーバー(XMPP「受信エンティティ」)には、使用中のSASLメカニズムに適切な場合、「成功した追加データ」を含めることができます。XMPPでは、これは追加データを<成功/>要素のXML文字データとして含めることによって行われます。
For the sake of protocol efficiency, it is REQUIRED for clients and servers to support these methods and RECOMMENDED to use them; however, clients and servers MUST support the less efficient modes as well.
プロトコルの効率のために、クライアントとサーバーがこれらの方法をサポートすることが必要であり、それらを使用することをお勧めします。ただし、クライアントとサーバーは、効率の低いモードもサポートする必要があります。
The process for SASL negotiation is as follows.
SASL交渉のプロセスは次のとおりです。
If SASL negotiation follows successful STARTTLS negotiation (Section 5), then the SASL negotiation occurs over the protected stream that has already been negotiated. If not, the initiating entity resolves the FQDN of the receiving entity as specified under Section 3, opens a TCP connection to the advertised port at the resolved IP address, and sends an initial stream header to the receiving entity. In either case, the receiving entity will receive an initial stream from the initiating entity.
SASLの交渉が成功したStartTLS交渉(セクション5)に続いている場合、SASL交渉はすでに交渉されている保護されたストリームを介して発生します。そうでない場合、開始エンティティは、セクション3で指定されているように受信エンティティのFQDNを解決し、解決されたIPアドレスで広告されたポートへのTCP接続を開き、初期ストリームヘッダーを受信エンティティに送信します。どちらの場合でも、受信エンティティは開始エンティティから初期ストリームを受け取ります。
I: <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
When the receiving entity processes an initial stream header from the initiating entity, it MUST send a response stream header to the initiating entity (for which it MUST generate a unique stream ID. If TLS negotiation has already succeeded, then this stream ID MUST be different from the stream ID sent before TLS negotiation succeeded).
受信エンティティが開始エンティティから初期ストリームヘッダーを処理する場合、回答ストリームヘッダーを開始エンティティに送信する必要があります(一意のストリームIDを生成する必要があります。TLS交渉がすでに成功している場合、このストリームIDは異なる必要がありますTLS交渉が成功する前に送信されたストリームIDから)。
R: <stream:stream from='im.example.com' id='vgKi/bkYME8OAj4rlXMkpucAqe4=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
The receiving entity also MUST send stream features to the initiating entity. The stream features SHOULD include an advertisement for support of SASL negotiation, i.e., a <mechanisms/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace. Typically there are only three cases in which support for SASL negotiation would not be advertised here: o TLS negotiation needs to happen before SASL can be offered (i.e., TLS is required and the receiving entity is responding to the very first initial stream header it has received for this connection attempt).
また、受信エンティティは、開始エンティティにストリーム機能を送信する必要があります。ストリーム機能には、SASL交渉のサポートのための広告、つまり「urn:ietf:params:xml:ns:xmpp-sasl 'namespace」によって認定された<メカニズム/>要素が含まれている必要があります。通常、SASL交渉のサポートがここで宣伝されない3つのケースしかありません。SASLを提供する前に、O TLS交渉が必要です(つまり、TLSが必要であり、受信エンティティは最初の初期ストリームヘッダーに応答しています。この接続の試みのために受け取った)。
o SASL negotiation is impossible for a server-to-server connection (i.e., the initiating server has not provided a certificate that would enable strong authentication and therefore the receiving server is falling back to weak identity verification using the Server Dialback protocol [XEP-0220]).
o SASL交渉はサーバー間接続では不可能です(つまり、開始サーバーは強力な認証を可能にする証明書を提供していないため、受信サーバーはサーバーダイヤルバックプロトコルを使用して弱いID検証に戻ります[XEP-0220])。
o SASL has already been negotiated (i.e., the receiving entity is responding to an initial stream header sent as a stream restart after successful SASL negotiation).
o SASLはすでにネゴシエートされています(つまり、受信エンティティは、SASLの交渉が成功した後、ストリーム再起動として送信された初期ストリームヘッダーに対応しています)。
The <mechanisms/> element MUST contain one <mechanism/> child element for each authentication mechanism the receiving entity offers to the initiating entity. As noted, the order of <mechanism/> elements in the XML indicates the preference order of the SASL mechanisms according to the receiving entity (which is not necessarily the preference order according to the initiating entity).
<メカニズム/>要素には、受信エンティティが開始エンティティに提供する各認証メカニズムの1つの<メカニズム/>子要素を含める必要があります。前述のように、XMLの<メカニズム/>要素の順序は、受信エンティティに応じたSASLメカニズムの優先順序を示します(これは必ずしも開始エンティティに従って優先順序ではありません)。
R: <stream:features> <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <mechanism>EXTERNAL</mechanism> <mechanism>SCRAM-SHA-1-PLUS</mechanism> <mechanism>SCRAM-SHA-1</mechanism> <mechanism>PLAIN</mechanism> </mechanisms> </stream:features>
In order to begin the SASL negotiation, the initiating entity sends an <auth/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace and includes an appropriate value for the 'mechanism' attribute, thus starting the handshake for that particular authentication mechanism. This element MAY contain XML character data (in SASL terminology, the "initial response") if the mechanism supports or requires it. If the initiating entity needs to send a zero-length initial response, it MUST transmit the response as a single equals sign character ("="), which indicates that the response is present but contains no data.
SASL交渉を開始するために、開始エンティティは「urn:ietf:params:xml:ns:xmpp-sasl 'namespace」によって認定された<auth/>要素を送信し、「メカニズム」属性に適切な値を含むため、その特定の認証メカニズムの握手を開始します。この要素には、メカニズムがそれをサポートまたは必要とする場合、XML文字データ(SASL用語、「初期応答」)が含まれる場合があります。開始エンティティがゼロの長さの初期応答を送信する必要がある場合、応答が存在するがデータが含まれていないことを示す単一の等しい記号文字( "=")として応答を送信する必要があります。
I: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>AGp1bGlldAByMG0zMG15cjBtMzA=</auth>
If the initiating entity subsequently sends another <auth/> element and the ongoing authentication handshake has not yet completed, the receiving entity MUST discard the ongoing handshake and MUST process a new handshake for the subsequently requested SASL mechanism.
開始エンティティがその後別の<auth/>要素を送信し、継続的な認証ハンドシェイクがまだ完了していない場合、受信エンティティは進行中の握手を破棄し、その後要求されたSASLメカニズムの新しい握手を処理する必要があります。
If necessary, the receiving entity challenges the initiating entity by sending a <challenge/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace; this element MAY contain XML character data (which MUST be generated in accordance with the definition of the SASL mechanism chosen by the initiating entity).
必要に応じて、受信エンティティは、「urn:ietf:params:xml:ns:xmpp-sasl 'namespace」によって認定された<challenge/>要素を送信することにより、開始エンティティに挑戦します。この要素には、XML文字データ(開始エンティティによって選択されたSASLメカニズムの定義に従って生成する必要があります)が含まれている場合があります。
The initiating entity responds to the challenge by sending a <response/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace; this element MAY contain XML character data (which MUST be generated in accordance with the definition of the SASL mechanism chosen by the initiating entity).
開始エンティティは、「urn:ietf:params:xml:ns:xmpp-sasl 'namespace」によって認定された<応答/>要素を送信することにより、チャレンジに対応します。この要素には、XML文字データ(開始エンティティによって選択されたSASLメカニズムの定義に従って生成する必要があります)が含まれている場合があります。
If necessary, the receiving entity sends more challenges and the initiating entity sends more responses.
必要に応じて、受信エンティティはより多くの課題を送信し、開始エンティティはより多くの応答を送信します。
This series of challenge/response pairs continues until one of three things happens:
この一連のチャレンジ/応答ペアは、3つのことのいずれかが起こるまで続きます。
o The initiating entity aborts the handshake for this authentication mechanism.
o 開始エンティティは、この認証メカニズムの握手を中止します。
o The receiving entity reports failure of the handshake.
o 受信エンティティは、握手の失敗を報告しています。
o The receiving entity reports success of the handshake.
o 受信エンティティは、握手の成功を報告しています。
These scenarios are described in the following sections.
これらのシナリオについては、次のセクションで説明します。
The initiating entity aborts the handshake for this authentication mechanism by sending an <abort/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace.
開始エンティティは、 'urn:ietf:params:xml:ns:xmpp-sasl' namespaceで認定された<abort/>要素を送信することにより、この認証メカニズムの握手を中止します。
I: <abort xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
Upon receiving an <abort/> element, the receiving entity MUST return a <failure/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace and containing an <aborted/> child element.
<abort/>要素を受信すると、受信エンティティは 'urn:ietf:params:xml:ns:xmpp-sasl' namespaceで認定され、<aborted/> child elementを含む<故障/>要素を返す必要があります。
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <aborted/> </failure>
The receiving entity reports failure of the handshake for this authentication mechanism by sending a <failure/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace (the particular cause of failure MUST be communicated in an appropriate child element of the <failure/> element as defined under Section 6.5).
受信エンティティは、「urn:ietf:params:xml:ns:xmpp-sasl 'namespace」によって認定された<故障/>要素を送信することにより、この認証メカニズムの握手の障害を報告します(障害の特定の原因は、セクション6.5で定義されている<故障/>要素の適切な子要素)。
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <not-authorized/> </failure>
Where appropriate for the chosen SASL mechanism, the receiving entity SHOULD allow a configurable but reasonable number of retries (at least 2 and no more than 5); this enables the initiating entity (e.g., an end-user client) to tolerate incorrectly provided credentials (e.g., a mistyped password) without being forced to reconnect (which it would if the receiving entity immediately returned a SASL failure and closed the stream).
選択されたSASLメカニズムに適した場合、受信エンティティは構成可能だが合理的な数のレトリ(少なくとも2および5以下)を許可する必要があります。これにより、開始エンティティ(例:エンドユーザークライアント)は、再接続を強いられずに、誤って提供された資格情報(たとえば、誤ったパスワード)を許容することができます(受信エンティティがすぐにSASL障害を返し、ストリームを閉じた場合)。
If the initiating entity attempts a reasonable number of retries with the same SASL mechanism and all attempts fail, it MAY fall back to the next mechanism in its ordered list by sending a new <auth/> request to the receiving entity, thus starting a new handshake for that authentication mechanism. If all handshakes fail and there are no remaining mechanisms in the initiating entity's list of supported and acceptable mechanisms, the initiating entity SHOULD simply close the stream as described under Section 4.4 (instead of waiting for the stream to time out).
開始エンティティが同じSASLメカニズムを使用して合理的な数のレトリを試み、すべての試みが失敗した場合、受信エンティティに新しい<auth/>要求を送信して、新しい<auth/>リクエストを送信して、新しいものを開始することにより、次のメカニズムに戻る可能性があります。その認証メカニズムの握手。すべての握手が失敗し、開始エンティティのサポートされている許容可能なメカニズムのリストに残りのメカニズムがない場合、開始エンティティは、セクション4.4に記載されているようにストリームを単純に閉じる必要があります(ストリームをタイムアウトするのを待つ代わりに)。
If the initiating entity exceeds the number of retries, the receiving entity MUST close the stream with a stream error, which SHOULD be <policy-violation/> (Section 4.9.3.14), although some existing implementations send <not-authorized/> (Section 4.9.3.12) instead.
開始エンティティがレトリの数を超える場合、受信エンティティはストリームエラーでストリームを閉じる必要があります。代わりにセクション4.9.3.12)。
Implementation Note: For server-to-server streams, if the receiving entity cannot offer the SASL EXTERNAL mechanism or any other SASL mechanism based on the security context established during TLS negotiation, the receiving entity MAY attempt to complete weak identity verification using the Server Dialback protocol [XEP-0220]; however, if according to local service policies weak identity verification is insufficient then the receiving entity SHOULD instead close the stream with a <policy-violation/> stream error (Section 4.9.3.14) instead of waiting for the stream to time out.
実装注:サーバーからサーバーのストリームの場合、受信エンティティがTLS交渉中に確立されたセキュリティコンテキストに基づいてSASL外部メカニズムまたはその他のSASLメカニズムを提供できない場合、受信エンティティはサーバーダイヤルバックを使用して弱いID検証を完了しようとする場合がありますプロトコル[XEP-0220];ただし、ローカルサービスポリシーに従って弱いIDの検証が不十分な場合、受信エンティティは、ストリームをタイムアウトするのを待つ代わりに、<ポリシーバイオレーション/>ストリームエラー(セクション4.9.3.14)でストリームを閉じる必要があります。
Before considering the SASL handshake to be a success, if the initiating entity provided a 'from' attribute on an initial stream header whose confidentiality and integrity were protected via TLS or an equivalent security layer (such as the SASL GSSAPI mechanism) then the receiving entity SHOULD correlate the authentication identity resulting from the SASL negotiation with that 'from' address; if the two identities do not match then the receiving entity SHOULD terminate the connection attempt (however, the receiving entity might have legitimate reasons not to terminate the connection attempt, for example, because it has overridden a connecting client's address to correct the JID format or assign a JID based on information presented in an end-user certificate).
SASLの握手が成功すると考える前に、開始エンティティがTLSまたは同等のセキュリティ層(SASL GSSAPIメカニズムなど)を介して保護された初期ストリームヘッダーの「From」属性を提供した場合、受信エンティティはSASLの交渉から生じる認証IDを「from」アドレスと相関させる必要があります。2つのアイデンティティが一致しない場合、受信エンティティは接続試行を終了する必要があります(ただし、受信エンティティは、たとえば、接続の試みを終了しないという正当な理由を持つ可能性があります。エンドユーザー証明書に表示されている情報に基づいてJIDを割り当てます)。
The receiving entity reports success of the handshake by sending a <success/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace; this element MAY contain XML character data (in SASL terminology, "additional data with success") if the chosen SASL mechanism supports or requires it. If the receiving entity needs to send additional data of zero length, it MUST transmit the data as a single equals sign character ("=").
受信エンティティは、「urn:ietf:params:xml:ns:xmpp-sasl 'namespace」によって認定された<success/>要素を送信することにより、握手の成功を報告します。この要素には、選択したSASLメカニズムがサポートまたは必要とする場合、この要素にはXML文字データ(SASL用語、「成功した追加データ」)が含まれている場合があります。受信エンティティがゼロの長さの追加データを送信する必要がある場合、データを単一の等しい符号文字( "=")として送信する必要があります。
R: <success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
Informational Note: For client-to-server streams, the authorization identity communicated during SASL negotiation is used to determine the canonical address for the initiating client according to the receiving server, as described under Section 4.3.6.
情報ノート:クライアントからサーバーへのストリームの場合、SASL交渉中に伝達された認証IDは、セクション4.3.6で説明されているように、受信サーバーに従って開始クライアントの標準アドレスを決定するために使用されます。
Upon receiving the <success/> element, the initiating entity MUST initiate a new stream over the existing TCP connection by sending a new initial stream header to the receiving entity (as specified under Section 4.3.3, the initiating entity MUST NOT send a closing </stream> tag before sending the new initial stream header, since the receiving entity and initiating entity MUST consider the original stream to be replaced upon success of the SASL negotiation).
<success/>要素を受信すると、開始エンティティは新しい初期ストリームヘッダーを受信エンティティに送信することにより、既存のTCP接続を介して新しいストリームを開始する必要があります(セクション4.3.3で指定されているように、開始エンティティは終了を送信してはなりません</stream>タグ新しい初期ストリームヘッダーを送信する前に、受信エンティティと開始エンティティはSASL交渉の成功時に元のストリームを置き換えることを考慮する必要があるためです。
I: <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
Upon receiving the new initial stream header from the initiating entity, the receiving entity MUST respond by sending a new response stream header to the initiating entity (for which it MUST generate a new stream ID instead of reusing the old stream ID).
開始エンティティから新しい初期ストリームヘッダーを受信すると、受信エンティティは、新しい応答ストリームヘッダーを開始エンティティに送信することで応答する必要があります(古いストリームIDを再利用する代わりに、新しいストリームIDを生成する必要があります)。
R: <stream:stream from='im.example.com' id='gPybzaOzBmaADgxKXu9UClbprp0=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
The receiving entity MUST also send stream features, containing any further available features or containing no features (via an empty <features/> element).
また、受信エンティティは、利用可能な機能を含む、または機能を含むストリーム機能を送信する必要があります(空の<機能/>要素を介して)。
R: <stream:features> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/> </stream:features>
The syntax of SASL errors is as follows, where the XML data shown within the square brackets '[' and ']' is OPTIONAL.
SASLエラーの構文は次のとおりです。ここでは、角括弧内に表示されるXMLデータ['および']がオプションです。
<failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <defined-condition/> [<text xml:lang='langcode'> OPTIONAL descriptive text </text>] </failure>
The "defined-condition" MUST be one of the SASL-related error conditions defined in the following sections. However, because additional error conditions might be defined in the future, if an entity receives a SASL error condition that it does not understand then it MUST treat the unknown condition as a generic authentication failure, i.e., as equivalent to <not-authorized/> (Section 6.5.10).
「定義された条件」は、次のセクションで定義されているSASL関連のエラー条件の1つでなければなりません。ただし、追加のエラー条件が将来定義される可能性があるため、エンティティが理解していないSASLエラー条件を受け取った場合、未知の条件を一般的な認証障害、つまり<nothorized/>に相当するものとして扱わなければなりません。(セクション6.5.10)。
Inclusion of the <text/> element is OPTIONAL, and can be used to provide application-specific information about the error condition, which information MAY be displayed to a human but only as a supplement to the defined condition.
<text/>要素を含めることはオプションであり、エラー条件に関するアプリケーション固有の情報を提供するために使用できます。この情報は、人間に表示されるが、定義された条件の補足としてのみ表示される可能性があります。
Because XMPP itself defines an application profile of SASL and there is no expectation that more specialized XMPP applications will be built on top of SASL, the SASL error format does not provide extensibility for application-specific error conditions as is done for XML streams (Section 4.9.4) and XML stanzas (Section 8.3.4).
XMPP自体がSASLのアプリケーションプロファイルを定義しており、より専門化されたXMPPアプリケーションがSASLの上に構築されるという期待はないため、SASLエラー形式はXMLストリームに対して行われるアプリケーション固有のエラー条件の拡張性を提供しません(セクション4.9.4)およびXMLスタンザ(セクション8.3.4)。
The receiving entity acknowledges that the authentication handshake has been aborted by the initiating entity; sent in reply to the <abort/> element.
受信エンティティは、認証ハンドシェイクが開始エンティティによって中止されたことを認めています。<abort/>要素に返信します。
I: <abort xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <aborted/> </failure>
The account of the initiating entity has been temporarily disabled; sent in reply to an <auth/> element (with or without initial response data) or a <response/> element.
開始エンティティのアカウントは一時的に無効にされています。<auth/>要素(初期応答データの有無にかかわらず)または<応答/>要素に返信します。
I: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>AGp1bGlldAByMG0zMG15cjBtMzA=</auth>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <account-disabled/> <text xml:lang='en'>Call 212-555-1212 for assistance.</text> </failure>
The authentication failed because the initiating entity provided credentials that have expired; sent in reply to a <response/> element or an <auth/> element with initial response data.
開始エンティティが期限切れになった資格情報を提供したため、認証は失敗しました。<response/>要素または初期応答データを使用して<auth/>要素に返信します。
I: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> [ ... ] </response>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <credentials-expired/> </failure>
The mechanism requested by the initiating entity cannot be used unless the confidentiality and integrity of the underlying stream are protected (typically via TLS); sent in reply to an <auth/> element (with or without initial response data).
開始エンティティによって要求されるメカニズムは、基礎となるストリームの機密性と完全性が保護されていない限り(通常はTLSを介して)使用できません。<auth/>要素(初期応答データの有無にかかわらず)に返信します。
I: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>AGp1bGlldAByMG0zMG15cjBtMzA=</auth>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <encryption-required/> </failure>
The data provided by the initiating entity could not be processed because the base 64 encoding is incorrect (e.g., because the encoding does not adhere to the definition in Section 4 of [BASE64]); sent in reply to a <response/> element or an <auth/> element with initial response data.
開始エンティティによって提供されるデータは、ベース64エンコードが正しくないために処理できませんでした(たとえば、エンコードは[Base64]のセクション4の定義に付着していないため)。<response/>要素または初期応答データを使用して<auth/>要素に返信します。
I: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5'>[ ... ]</auth>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <incorrect-encoding/> </failure>
The authzid provided by the initiating entity is invalid, either because it is incorrectly formatted or because the initiating entity does not have permissions to authorize that ID; sent in reply to a <response/> element or an <auth/> element with initial response data.
開始エンティティによって提供されるauthzidは、誤ってフォーマットされているか、開始エンティティがそのIDを承認する許可を持っていないためです。<response/>要素または初期応答データを使用して<auth/>要素に返信します。
I: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> [ ... ] </response>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <invalid-authzid/> </failure>
The initiating entity did not specify a mechanism, or requested a mechanism that is not supported by the receiving entity; sent in reply to an <auth/> element.
開始エンティティは、メカニズムを指定したり、受信エンティティによってサポートされていないメカニズムを要求したりしませんでした。<auth/>要素に返信します。
I: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='CRAM-MD5'/>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <invalid-mechanism/> </failure>
The request is malformed (e.g., the <auth/> element includes initial response data but the mechanism does not allow that, or the data sent violates the syntax for the specified SASL mechanism); sent in reply to an <abort/>, <auth/>, <challenge/>, or <response/> element.
要求は奇形です(例:<auth/>要素には初期応答データが含まれますが、メカニズムはそれを許可していません、または送信されたデータは指定されたSASLメカニズムの構文に違反します)。<abort/>、<auth/>、<choulding/>、または<respons/>要素に返信して送信されます。
(In the following example, the XML character data of the <auth/> element contains more than 255 UTF-8-encoded Unicode characters and therefore violates the "token" production for the SASL ANONYMOUS mechanism as specified in [ANONYMOUS].)
(次の例では、<auth/>要素のXML文字データには255を超えるUTF-8エンコードされたユニコード文字が含まれているため、[匿名]で推定されているSASL匿名メカニズムの「トークン」生成に違反します。)
I: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='ANONYMOUS'>[ ... some-long-token ... ]</auth>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <malformed-request/> </failure>
The mechanism requested by the initiating entity is weaker than server policy permits for that initiating entity; sent in reply to an <auth/> element (with or without initial response data).
開始エンティティによって要求されたメカニズムは、その開始エンティティのサーバーポリシー許可よりも弱いです。<auth/>要素(初期応答データの有無にかかわらず)に返信します。
I: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>AGp1bGlldAByMG0zMG15cjBtMzA=</auth>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <mechanism-too-weak/> </failure>
The authentication failed because the initiating entity did not provide proper credentials, or because some generic authentication failure has occurred but the receiving entity does not wish to disclose specific information about the cause of the failure; sent in reply to a <response/> element or an <auth/> element with initial response data.
開始エンティティが適切な資格情報を提供しなかったため、または何らかの一般的な認証障害が発生したが、受信エンティティは障害の原因に関する特定の情報を開示することを望んでいないため、認証は失敗しました。<response/>要素または初期応答データを使用して<auth/>要素に返信します。
I: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> [ ... ] </response>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <not-authorized/> </failure>
Security Warning: This error condition includes but is not limited to the case of incorrect credentials or a nonexistent username. In order to discourage directory harvest attacks, no differentiation is made between incorrect credentials and a nonexistent username.
セキュリティ警告:このエラー条件には、誤った資格情報または存在しないユーザー名の場合が含まれますが、これらに限定されません。ディレクトリの収穫攻撃を思いとどまらせるために、誤った資格情報と存在しないユーザー名を区別することはできません。
The authentication failed because of a temporary error condition within the receiving entity, and it is advisable for the initiating entity to try again later; sent in reply to an <auth/> element or a <response/> element.
認証は、受信エンティティ内の一時的なエラー条件のために失敗し、開始エンティティが後で再試行することをお勧めします。<auth/>要素または<response/>要素に返信します。
I: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> [ ... ] </response>
R: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <temporary-auth-failure/> </failure>
The profiling requirements of [SASL] require that the following information be supplied by the definition of a using protocol.
[SASL]のプロファイリング要件は、使用を使用するプロトコルの定義により、次の情報を提供する必要があります。
service name: "xmpp"
サービス名:「XMPP」
initiation sequence: After the initiating entity provides an opening XML stream header and the receiving entity replies in kind, the receiving entity provides a list of acceptable authentication methods. The initiating entity chooses one method from the list and sends it to the receiving entity as the value of the 'mechanism' attribute possessed by an <auth/> element, optionally including an initial response to avoid a round trip.
開始シーケンス:開始エンティティがオープニングXMLストリームヘッダーを提供し、受信エンティティが種類の応答を提供した後、受信エンティティは許容可能な認証方法のリストを提供します。開始エンティティは、リストから1つのメソッドを選択し、<auth/>要素が所有する「メカニズム」属性の値として受信エンティティに送信します。
exchange sequence: Challenges and responses are carried through the exchange of <challenge/> elements from receiving entity to initiating entity and <response/> elements from initiating entity to receiving entity. The receiving entity reports failure by sending a <failure/> element and success by sending a <success/> element; the initiating entity aborts the exchange by sending an <abort/> element. Upon successful negotiation, both sides consider the original XML stream to be closed and new stream headers are sent by both entities.
交換シーケンス:課題と応答は、<challenge/>要素の受信エンティティからエンティティの開始への交換と、エンティティの開始から受信エンティティへの<応答/>要素の交換を通じて行われます。受信エンティティは、<fails/>要素と成功を送信することにより故障を報告します。開始エンティティは、<abort/>要素を送信することにより、交換を中止します。交渉が成功すると、双方は元のXMLストリームを閉じていると考え、新しいストリームヘッダーは両方のエンティティによって送信されます。
security layer negotiation: The security layer takes effect immediately after sending the closing '>' character of the <success/> element for the receiving entity, and immediately after receiving the closing '>' character of the <success/> element for the initiating entity. The order of layers is first [TCP], then [TLS], then [SASL], then XMPP.
セキュリティレイヤーの交渉:セキュリティレイヤーは、受信エンティティの<成功/>要素の閉鎖 '>'キャラクターを送信した直後に有効になり、開始のために<success/>要素の閉鎖 '>'キャラクターを受信した直後に有効になります実在物。層の順序は最初に[TCP]、次に[TLS]、[SASL]、次にXMPPです。
use of the authorization identity: The authorization identity can be used in XMPP to denote the non-default <localpart@domainpart> of a client; an empty string is equivalent to an absent authorization identity.
承認IDの使用:承認IDをXMPPで使用して、クライアントの非デフォルト<localPart@domainpart>を示すことができます。空の文字列は、承認のないアイデンティティの欠如と同等です。
After a client authenticates with a server, it MUST bind a specific resource to the stream so that the server can properly address the client. That is, there MUST be an XMPP resource associated with the bare JID (<localpart@domainpart>) of the client, so that the address for use over that stream is a full JID of the form <localpart@domainpart/resource> (including the resourcepart). This ensures that the server can deliver XML stanzas to and receive XML stanzas from the client in relation to entities other than the server itself or the client's account, as explained under Section 10.
クライアントがサーバーで認証した後、サーバーがクライアントに適切にアドレス指定できるように、特定のリソースをストリームにバインドする必要があります。つまり、クライアントの裸のjid(<localpart@domainpart>)に関連付けられたxmppリソースがある必要があります。そのため、そのストリームで使用するアドレスは、<localpart@domainpart/resource>(ResourcePart)。これにより、セクション10で説明されているように、サーバー自体またはクライアントのアカウント以外のエンティティに関連して、クライアントからXMLスタンザを配信してXMLスタンザをクライアントから受け取ることができます。
Informational Note: The client could exchange stanzas with the server itself or the client's account before binding a resource since the full JID is needed only for addressing outside the context of the stream negotiated between the client and the server, but this is not commonly done.
情報ノート:クライアントは、クライアントとサーバーの間で交渉されたストリームのコンテキストの外側に対処するために完全なJIDが必要であるため、リソースを拘束する前に、クライアントがサーバー自体またはクライアントのアカウントとスタンザを交換することができますが、これは一般的に行われていません。
After a client has bound a resource to the stream, it is referred to as a "connected resource". A server SHOULD allow an entity to maintain multiple connected resources simultaneously, where each connected resource is associated with a distinct XML stream and is differentiated from the other connected resources by a distinct resourcepart.
クライアントがリソースをストリームにバインドした後、「接続されたリソース」と呼ばれます。サーバーは、エンティティが複数の接続されたリソースを同時に維持できるようにする必要があります。各接続リソースは、個別のXMLストリームに関連付けられ、別のリソースパートによって他の接続されたリソースと区別されます。
Security Warning: A server SHOULD enable the administrator of an XMPP service to limit the number of connected resources in order to prevent certain denial-of-service attacks as described under Section 13.12.
セキュリティ警告:サーバーは、セクション13.12に記載されているように、特定のサービス拒否攻撃を防ぐために、XMPPサービスの管理者が接続されたリソースの数を制限できるようにする必要があります。
If, before completing the resource binding step, the client attempts to send an XML stanza to an entity other than the server itself or the client's account, the server MUST NOT process the stanza and MUST close the stream with a <not-authorized/> stream error (Section 4.9.3.12).
リソースバインディングステップを完了する前に、クライアントがサーバー自体またはクライアントのアカウント以外のエンティティにXMLスタンザを送信しようとする場合、サーバーはスタンザを処理してはならず、<not-authorized/>でストリームを閉じる必要があります。ストリームエラー(セクション4.9.3.12)。
The XML namespace name for the resource binding extension is 'urn:ietf:params:xml:ns:xmpp-bind'.
リソースバインディングエクステンションのXMLネームスペース名は「urn:ietf:params:xml:ns:xmpp-bind」です。
Support for resource binding is REQUIRED in XMPP client and server implementations.
XMPPクライアントとサーバーの実装では、リソース拘束力のサポートが必要です。
The parties to a stream MUST consider resource binding as mandatory-to-negotiate.
ストリームの当事者は、リソースバインディングを必須と交渉することと見なす必要があります。
After resource binding, the parties MUST NOT restart the stream.
リソースバインディングの後、当事者はストリームを再起動してはなりません。
Upon sending a new response stream header to the client after successful SASL negotiation, the server MUST include a <bind/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-bind' namespace in the stream features it presents to the client.
SASL交渉が成功した後、新しい応答ストリームヘッダーをクライアントに送信すると、サーバーには「urn:ietf:params:xml:ns:xmpp-bind 'namespace」によって認定された<bind/>要素を含める必要があります。クライアントに。
The server MUST NOT include the resource binding stream feature until after the client has authenticated, typically by means of successful SASL negotiation.
サーバーは、通常、SASLの交渉を成功させて、クライアントが認証されるまでリソースバインディングストリーム機能を含めるべきではありません。
S: <stream:stream from='im.example.com' id='gPybzaOzBmaADgxKXu9UClbprp0=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <stream:features> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/> </stream:features>
Upon being informed that resource binding is mandatory-to-negotiate, the client MUST bind a resource to the stream as described in the following sections.
リソースバインディングが必須であることを通知されると、クライアントは次のセクションで説明されているように、リソースをストリームにバインドする必要があります。
A resourcepart MUST at a minimum be unique among the connected resources for that <localpart@domainpart>. Enforcement of this policy is the responsibility of the server.
ResourcePartは、その<LocalPart@domainpart>の接続されたリソースの間で少なくとも一意でなければなりません。このポリシーの実施は、サーバーの責任です。
Security Warning: A resourcepart can be security-critical. For example, if a malicious entity can guess a client's resourcepart then it might be able to determine if the client (and therefore the controlling principal) is online or offline, thus resulting in a presence leak as described under Section 13.10.2. To prevent that possibility, a client can either (1) generate a random resourcepart on its own or (2) ask the server to generate a resourcepart on its behalf. One method for ensuring that the resourcepart is random is to generate a Universally Unique Identifier (UUID) as specified in [UUID].
セキュリティ警告:リソースパートは、セキュリティが批判的である可能性があります。たとえば、悪意のあるエンティティがクライアントのリソースパートを推測できる場合、クライアント(したがってコントロールプリンシパル)がオンラインまたはオフラインであるかどうかを判断できるため、セクション13.10.2に記載されているように、存在感が漏れます。その可能性を防ぐために、クライアントは(1)独自にランダムリソースパートを生成するか、(2)サーバーにその代わりにリソースパートを生成するように依頼することができます。ResourcePartがランダムであることを確認するための1つの方法は、[UUID]で指定されているように、普遍的に一意の識別子(UUID)を生成することです。
A server MUST be able to generate an XMPP resourcepart on behalf of a client. The resourcepart generated by the server MUST be random (see [RANDOM]).
サーバーは、クライアントに代わってXMPP ResourcePartを生成できる必要があります。サーバーによって生成されたリソースパートはランダムでなければなりません([ランダム]を参照)。
A client requests a server-generated resourcepart by sending an IQ stanza of type "set" (see Section 8.2.3) containing an empty <bind/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-bind' namespace.
クライアントは、 'urn:ietf:params:xml:ns:xmpp-bindで認定された空の<bind/>要素を含むタイプ「セット」のIQスタンザ(セクション8.2.3を参照)を送信することにより、サーバーで生成されたリソースパートを要求します。'名前空間。
C: <iq id='tn281v37' type='set'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/> </iq>
Once the server has generated an XMPP resourcepart for the client, it MUST return an IQ stanza of type "result" to the client, which MUST include a <jid/> child element that specifies the full JID for the connected resource as determined by the server.
サーバーがクライアント用のXMPPリソースパートを生成したら、タイプ「結果」のIQスタンザをクライアントに返す必要があります。サーバ。
S: <iq id='tn281v37' type='result'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <jid> juliet@im.example.com/4db06f06-1ea4-11dc-aca3-000bcd821bfb </jid> </bind> </iq>
When a client asks the server to generate a resourcepart during resource binding, the following stanza error conditions are defined:
クライアントがリソースバインディング中にリソースパートを生成するようサーバーに要求すると、次のスタンザエラー条件が定義されます。
o The account has reached a limit on the number of simultaneous connected resources allowed.
o アカウントは、許可されている同時接続リソースの数の制限に達しました。
o The client is otherwise not allowed to bind a resource to the stream.
o それ以外の場合、クライアントはリソースをストリームにバインドすることは許可されていません。
Naturally, it is possible that error conditions not specified here might occur, as described under Section 8.3.
当然のことながら、セクション8.3で説明されているように、ここで指定されていないエラー条件が発生する可能性があります。
If the account has reached a limit on the number of simultaneous connected resources allowed, the server MUST return a <resource-constraint/> stanza error (Section 8.3.3.18).
アカウントが許可されている同時接続リソースの数の制限に達した場合、サーバーは<Resource-Constraint/> Stanzaエラー(セクション8.3.3.18)を返す必要があります。
S: <iq id='tn281v37' type='error'> <error type='wait'> <resource-constraint xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq>
If the client is otherwise not allowed to bind a resource to the stream, the server MUST return a <not-allowed/> stanza error (Section 8.3.3.10).
クライアントがリソースをストリームにバインドすることが許可されていない場合、サーバーは<allowed/> stanzaエラー(セクション8.3.3.10)を返す必要があります。
S: <iq id='tn281v37' type='error'> <error type='cancel'> <not-allowed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq>
Instead of asking the server to generate a resourcepart on its behalf, a client MAY attempt to submit a resourcepart that it has generated or that the controlling user has provided.
クライアントは、サーバーにリソースパートを生成するように要求する代わりに、生成したリソースパート、または制御ユーザーが提供したリソースパートを送信しようとする場合があります。
A client asks its server to accept a client-submitted resourcepart by sending an IQ stanza of type "set" containing a <bind/> element with a child <resource/> element containing non-zero-length XML character data.
クライアントは、子供がゼロ以外のXML文字データを含む子<リソース/>要素を含む<バインド/>要素を含むタイプ「セット」のIQスタンザを送信することにより、クライアントがサビされたリソースパートを受け入れるようサーバーに要求します。
C: <iq id='wy2xa82b4' type='set'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <resource>balcony</resource> </bind> </iq>
The server SHOULD accept the client-submitted resourcepart. It does so by returning an IQ stanza of type "result" to the client, including a <jid/> child element that specifies the full JID for the connected resource and contains without modification the client-submitted text.
サーバーは、クライアントがサビされたResourcePartを受け入れる必要があります。これは、接続されたリソースの完全なJIDを指定し、クライアントが付与されたテキストを変更せずに含む<JID/>子要素を含む、クライアントに「結果」タイプ「結果」のIQスタンザを返すことでそうします。
S: <iq id='wy2xa82b4' type='result'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <jid>juliet@im.example.com/balcony</jid> </bind> </iq>
Alternatively, in accordance with local service policies the server MAY refuse the client-submitted resourcepart and override it with a resourcepart that the server generates.
あるいは、ローカルサービスポリシーに従って、サーバーはクライアントがサビされたリソースパートを拒否し、サーバーが生成するリソースパートでオーバーライドする場合があります。
S: <iq id='wy2xa82b4' type='result'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <jid> juliet@im.example.com/balcony 4db06f06-1ea4-11dc-aca3-000bcd821bfb </jid> </bind> </iq>
When a client attempts to submit its own XMPP resourcepart during resource binding, the following stanza error conditions are defined in addition to those described under Section 7.6.2:
クライアントがリソースバインディング中に独自のXMPPリソースパートを送信しようとすると、セクション7.6.2で説明されているものに加えて、次のスタンザエラー条件が定義されます。
o The provided resourcepart cannot be processed by the server.
o 提供されたResourcePartは、サーバーによって処理できません。
o The provided resourcepart is already in use.
o 提供されたResourcePartはすでに使用されています。
Naturally, it is possible that error conditions not specified here might occur, as described under Section 8.3.
当然のことながら、セクション8.3で説明されているように、ここで指定されていないエラー条件が発生する可能性があります。
If the provided resourcepart cannot be processed by the server (e.g., because it is of zero length or because it otherwise violates the rules for resourceparts specified in [XMPP-ADDR]), the server can return a <bad-request/> stanza error (Section 8.3.3.1) but SHOULD instead process the resourcepart so that it is in conformance.
提供されたResourcePartをサーバーによって処理できない場合(たとえば、長さがゼロであるか、そうでなければ[XMPP-ADDR]で指定されたリソースパートのルールに違反しているため)、サーバーは<bad-request/> stanzaエラーを返すことができます(セクション8.3.3.1)ただし、代わりにリソースパートを処理して、それが適合するようにする必要があります。
S: <iq id='wy2xa82b4' type='error'> <error type='modify'> <bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq>
If there is a currently connected client whose session has the resourcepart being requested by the newly connecting client, the server MUST do one of the following (which of these the server does is a matter for implementation or local service policy, although suggestions are provided below).
セッションが新しく接続するクライアントによってリソースパートが要求されている現在のクライアントがいる場合、サーバーは次のいずれかを実行する必要があります(これらのサーバーは実装またはローカルサービスポリシーの問題ですが、提案は以下に提供されます。)。
1. Override the resourcepart provided by the newly connecting client with a server-generated resourcepart. This behavior is encouraged, because it simplifies the resource binding process for client implementations.
1. 新しく接続するクライアントが提供するリソースパートをサーバーで生成したリソースパートとオーバーライドします。クライアントの実装のリソースバインディングプロセスを簡素化するため、この動作は奨励されます。
2. Disallow the resource binding attempt of the newly connecting client and maintain the session of the currently connected client. This behavior is neither encouraged nor discouraged, despite the fact that it was implicitly encouraged in RFC 3920; however, note that handling of the <conflict/> error is unevenly supported among existing client implementations, which often treat it as an authentication error and have been observed to discard cached credentials when receiving it.
2. 新しく接続するクライアントのリソースバインディングの試みを禁止し、現在接続されているクライアントのセッションを維持します。この動作は、RFC 3920で暗黙的に奨励されているという事実にもかかわらず、奨励も落胆もありません。ただし、<競合/>エラーの処理は、既存のクライアントの実装間で不均一にサポートされていることに注意してください。これは、しばしば認証エラーとして扱われ、受信時にキャッシュされた資格情報を破棄することが観察されています。
3. Terminate the session of the currently connected client and allow the resource binding attempt of the newly connecting client. Although this was the traditional behavior of early XMPP server implementations, it is now discouraged because it can lead to a never-ending cycle of two clients effectively disconnecting each other; however, note that this behavior can be appropriate in some deployment scenarios or if the server knows that the currently connected client has a dead connection or broken stream as described under Section 4.6.
3. 現在接続されているクライアントのセッションを終了し、新しく接続するクライアントのリソースバインディングの試みを許可します。これは初期のXMPPサーバーの実装の従来の動作でしたが、2人のクライアントが互いに効果的に切断するという終わりのないサイクルにつながる可能性があるため、今では落胆しています。ただし、一部の展開シナリオでは、この動作は適切である可能性があることに注意してください。または、セクション4.6で説明されているように、現在接続されているクライアントが死んだ接続または壊れたストリームを持っていることをサーバーが知っていることに注意してください。
If the server follows behavior #1, it returns an <iq/> stanza of type "result" to the newly connecting client, where the <jid/> child of the <bind/> element contains XML character data that indicates the full JID of the client, including the resourcepart that was generated by the server.
サーバーが動作#1に従うと、<IQ/>>>> stanza of type "result"を新しく接続するクライアントに返します。ここでサーバーによって生成されたリソースパートを含むクライアントの。
S: <iq id='wy2xa82b4' type='result'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <jid> juliet@im.example.com/balcony 4db06f06-1ea4-11dc-aca3-000bcd821bfb </jid> </bind> </iq>
If the server follows behavior #2, it sends a <conflict/> stanza error (Section 8.3.3.2) in response to the resource binding attempt of the newly connecting client but maintains the XML stream so that the newly connecting client has an opportunity to negotiate a non-conflicting resourcepart (i.e., the newly connecting client needs to choose a different resourcepart before making another attempt to bind a resource).
サーバーが動作#2に従う場合、新しく接続するクライアントのリソースバインディングの試みに応じて<競合/>スタンザエラー(セクション8.3.3.2)を送信しますが、新しく接続するクライアントが機会を持つようにXMLストリームを維持します。紛争のないリソースパートを交渉します(つまり、新しく接続するクライアントは、リソースを結合しようとする前に別のリソースパートを選択する必要があります)。
S: <iq id='wy2xa82b4' type='error'> <error type='modify'> <conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq>
If the server follows behavior #3, it returns a <conflict/> stream error (Section 4.9.3.3) to the currently connected client (as described under Section 4.9.3.3) and returns an IQ stanza of type "result" (indicating success) in response to the resource binding attempt of the newly connecting client.
サーバーが動作#3に従う場合、A <comples/>ストリームエラー(セクション4.9.3.3)を現在接続されているクライアント(セクション4.9.3.3で説明)に戻し、タイプ「結果」のIQスタンザを返します(成功を示す)新しく接続するクライアントのリソース結合試行に応じて。
S: <iq id='wy2xa82b4' type='result'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <jid> juliet@im.example.com/balcony </jid> </bind> </iq>
If an error occurs when a client submits a resourcepart, the server SHOULD allow a configurable but reasonable number of retries (at least 5 and no more than 10); this enables the client to tolerate incorrectly provided resourceparts (e.g., bad data formats or duplicate text strings) without being forced to reconnect.
クライアントがリソースパートを提出したときにエラーが発生した場合、サーバーは構成可能だが合理的な数のレトリ(少なくとも5および10以下)を許可する必要があります。これにより、クライアントは、再接続を余儀なくされることなく、クライアントが誤って提供されたリソースパート(たとえば、悪いデータ形式または複製テキスト文字列)を許容することができます。
After the client has reached the retry limit, the server MUST close the stream with a <policy-violation/> stream error (Section 4.9.3.14).
クライアントが再試行制限に達した後、サーバーは<ポリシーバイオレーション/>ストリームエラー(セクション4.9.3.14)でストリームを閉じる必要があります。
After a client and a server (or two servers) have completed stream negotiation, either party can send XML stanzas. Three kinds of XML stanza are defined for the 'jabber:client' and 'jabber:server' namespaces: <message/>, <presence/>, and <iq/>. In addition, there are five common attributes for these stanza types. These common attributes, as well as the basic semantics of the three stanza types, are defined in this specification; more detailed information regarding the syntax of XML stanzas for instant messaging and presence applications is provided in [XMPP-IM], and for other applications in the relevant XMPP extension specifications.
クライアントとサーバー(または2つのサーバー)がストリームネゴシエーションを完了した後、どちらの当事者もXMLスタンザを送信できます。3種類のXMLスタンザは、「Jabber」および「Jabber:Server」名前空間で定義されています。さらに、これらのスタンザタイプには5つの一般的な属性があります。これらの一般的な属性と、3つのスタンザタイプの基本的なセマンティクスは、この仕様で定義されています。インスタントメッセージングおよび存在アプリケーションのXMLスタンザの構文に関するより詳細な情報は、[XMPP-IM]および関連するXMPP拡張仕様の他のアプリケーションで提供されています。
Support for the XML stanza syntax and semantics defined in this specification is REQUIRED in XMPP client and server implementations.
この仕様で定義されているXMLスタンザの構文とセマンティクスのサポートは、XMPPクライアントとサーバーの実装で必要です。
Security Warning: A server MUST NOT process a partial stanza and MUST NOT attach meaning to the transmission timing of any part of a stanza (before receipt of the closing tag).
セキュリティ警告:サーバーは部分的なスタンザを処理してはならず、スタンザのどの部分の送信タイミングに意味を付けてはなりません(クロージングタグを受信する前)。
The following five attributes are common to message, presence, and IQ stanzas.
次の5つの属性は、メッセージ、存在、およびIQスタンザに共通しています。
The 'to' attribute specifies the JID of the intended recipient for the stanza.
「to」属性は、スタンザの意図した受信者のJIDを指定します。
<message to='romeo@example.net'> <body>Art thou not Romeo, and a Montague?</body> </message>
For information about server processing of inbound and outbound XML stanzas based on the 'to' address, refer to Section 10.
「To」アドレスに基づいたインバウンドおよびアウトバウンドXMLスタンザのサーバー処理については、セクション10を参照してください。
The following rules apply to inclusion of the 'to' attribute in stanzas sent from a connected client to its server over an XML stream qualified by the 'jabber:client' namespace.
次のルールは、「Jabber:client」名前空間で資格があるXMLストリームを介して、接続されたクライアントからサーバーに送信されたスタンザに「to」属性を含めることに適用されます。
1. A stanza with a specific intended recipient (e.g., a conversation partner, a remote service, the server itself, even another resource associated with the user's bare JID) MUST possess a 'to' attribute whose value is an XMPP address.
1. 特定の意図された受信者(例:会話パートナー、リモートサービス、サーバー自体、さらにはユーザーの裸のJIDに関連付けられている別のリソース)を持つスタンザには、値がXMPPアドレスである「to」属性を所有する必要があります。
2. A stanza sent from a client to a server for direct processing by the server (e.g., roster processing as described in [XMPP-IM] or presence sent to the server for broadcasting to other entities) MUST NOT possess a 'to' attribute.
2. サーバーによる直接処理のためにクライアントからサーバーに送信されたスタンザ(例:[XMPP-IM]で説明されている名簿処理または他のエンティティにブロードキャストのためにサーバーに送信される存在)は、「」属性を所有してはなりません。
The following rules apply to inclusion of the 'to' attribute in stanzas sent from a server to a connected client over an XML stream qualified by the 'jabber:client' namespace.
以下のルールは、「Jabber:client」名前空間で資格があるXMLストリームを介して、サーバーから接続されたクライアントに送信されたスタンザに「to」属性を含めることに適用されます。
1. If the server has received the stanza from another connected client or from a peer server, the server MUST NOT modify the 'to' address before delivering the stanza to the client.
1. サーバーが別の接続されたクライアントまたはピアサーバーからスタンザを受信した場合、サーバーはクライアントにスタンザを配信する前に「to」アドレスを変更してはなりません。
2. If the server has itself generated the stanza (e.g., a response to an IQ stanza of type "get" or "set", even if the stanza did not include a 'to' address), the stanza MAY include a 'to' address, which MUST be the full JID of the client; however, if the stanza does not include a 'to' address then the client MUST treat it as if the 'to' address were included with a value of the client's full JID.
2. サーバー自体がスタンザを生成した場合(たとえば、スタンザに「 'todder」を含めていなくても、タイプ「get」または「set」のIQスタンザへの応答)、スタンザには「」アドレスを含めることができます、これはクライアントの完全なJIDでなければなりません。ただし、スタンザに「to」アドレスが含まれていない場合、クライアントは「 'to」アドレスがクライアントの完全なJIDの値に含まれているかのように扱う必要があります。
Implementation Note: It is the server's responsibility to deliver only stanzas that are addressed to the client's full JID or the user's bare JID; thus, there is no need for the client to check the 'to' address of incoming stanzas. However, if the client does check the 'to' address then it is suggested to check at most the bare JID portion (not the full JID), since the 'to' address might be the user's bare JID, the client's current full JID, or even a full JID with a different resourcepart (e.g., in the case of so-called "offline messages" as described in [XEP-0160]).
実装注:クライアントのフルJIDまたはユーザーの裸のJIDに宛てられたスタンザのみを配信するのは、サーバーの責任です。したがって、クライアントが入ってくるスタンザの「to」アドレスをチェックする必要はありません。ただし、クライアントが「to」アドレスをチェックしている場合、「完全なJIDではなく)の最大で確認することをお勧めします。または、別のリソースパートを備えた完全なJIDでさえ(例:[XEP-0160]で説明されているように、いわゆる「オフラインメッセージ」の場合)。
The following rules apply to inclusion of the 'to' attribute in the context of XML streams qualified by the 'jabber:server' namespace (i.e., server-to-server streams).
次のルールは、「Jabber:Server」ネームスペース(つまり、サーバーからサーバーストリーム)によって適格なXMLストリームのコンテキストに「to」属性を含めることに適用されます。
1. A stanza MUST possess a 'to' attribute whose value is an XMPP address; if a server receives a stanza that does not meet this restriction, it MUST close the stream with an <improper-addressing/> stream error (Section 4.9.3.7).
1. スタンザは、値がXMPPアドレスである「to」属性を所有する必要があります。サーバーがこの制限を満たさないスタンザを受信した場合、<Impoper-Addressing/>ストリームエラー(セクション4.9.3.7)でストリームを閉じる必要があります。
2. The domainpart of the JID contained in the stanza's 'to' attribute MUST match the FQDN of the receiving server (or any validated domain thereof) as communicated via SASL negotiation (see Section 6), Server Dialback (see [XEP-0220]), or similar means; if a server receives a stanza that does not meet this restriction, it MUST close the stream with a <host-unknown/> stream error (Section 4.9.3.6) or a <host-gone/> stream error (Section 4.9.3.5).
2. Stanzaの「to」属性に含まれるJIDのドメインパートは、SASL交渉(セクション6を参照)、サーバーダイヤルバック([XEP-0220を参照)を参照)を介して通信された受信サーバー(またはその検証済みドメイン)のFQDN(またはその検証済みドメイン)と一致する必要があります。または同様の手段。サーバーがこの制限を満たさないスタンザを受信した場合、<host-unknown/>ストリームエラー(セクション4.9.3.6)または<host-gone/>ストリームエラー(セクション4.9.3.5)でストリームを閉じる必要があります。。
The 'from' attribute specifies the JID of the sender.
「From」属性は、送信者のJIDを指定します。
<message from='juliet@im.example.com/balcony' to='romeo@example.net'> <body>Art thou not Romeo, and a Montague?</body> </message>
The following rules apply to the 'from' attribute in the context of XML streams qualified by the 'jabber:client' namespace (i.e., client-to-server streams).
次のルールは、「Jabber:Client」名前空間(つまり、クライアントからサーバーのストリーム)によって適格なXMLストリームのコンテキストで「From」属性に適用されます。
1. When a server receives an XML stanza from a connected client, the server MUST add a 'from' attribute to the stanza or override the 'from' attribute specified by the client, where the value of the
1. サーバーが接続されたクライアントからXMLスタンザを受信した場合、サーバーはスタンザに「from」属性を追加するか、クライアントによって指定された「from」属性をオーバーライドする必要があります。
'from' attribute MUST be the full JID (<localpart@domainpart/resource>) determined by the server for the connected resource that generated the stanza (see Section 4.3.6), or the bare JID (<localpart@domainpart>) in the case of subscription-related presence stanzas (see [XMPP-IM]).
'from'属性は、スタンザ(セクション4.3.6を参照)またはbare jid(<localpart@domainpart>)を生成した接続されたリソースのためにサーバーによって決定される完全なJID(<localpart@domainpart/resource>)でなければなりません。サブスクリプション関連の存在スタンザの場合([XMPP-IM]を参照)。
2. When the server generates a stanza on its own behalf for delivery to the client from the server itself, the stanza MUST include a 'from' attribute whose value is the bare JID (i.e., <domainpart>) of the server as agreed upon during stream negotiation (e.g., based on the 'to' attribute of the initial stream header).
2. サーバーがサーバー自体からクライアントに配信するために独自にスタンザを生成する場合、スタンザには、ストリーム中に合意されたサーバーの裸のjid(すなわち、<domainpart>)である「From」属性を含める必要がありますネゴシエーション(例:初期ストリームヘッダーの「to」属性に基づく)。
3. When the server generates a stanza from the server for delivery to the client on behalf of the account of the connected client (e.g., in the context of data storage services provided by the server on behalf of the client), the stanza MUST either (a) not include a 'from' attribute or (b) include a 'from' attribute whose value is the account's bare JID (<localpart@domainpart>).
3. サーバーが、接続されたクライアントのアカウントに代わってクライアントに配信するためにサーバーからスタンザを生成する場合(たとえば、クライアントに代わってサーバーが提供するデータストレージサービスのコンテキストで)、スタンザは()「From」属性を含めないでください、または(b)は、accountのbare jid(<localpart@domainpart>)である値を持つ 'from'属性を含めます。
4. A server MUST NOT send to the client a stanza without a 'from' attribute if the stanza was not generated by the server on its own behalf (e.g., if it was generated by another client or a peer server and the server is merely delivering it to the client on behalf of some other entity); therefore, when a client receives a stanza that does not include a 'from' attribute, it MUST assume that the stanza is from the user's account on the server.
4. サーバーは、スタンザがそれ自体に代わってサーバーによって生成されなかった場合、「From」属性なしでクライアントにスタンザを送信してはなりません(たとえば、他のクライアントまたはピアサーバーによって生成され、サーバーが単に配信されている場合他のいくつかのエンティティに代わってクライアントに);したがって、クライアントが「From」属性を含まないスタンザを受信する場合、スタンザはサーバー上のユーザーのアカウントからのものであると仮定する必要があります。
The following rules apply to the 'from' attribute in the context of XML streams qualified by the 'jabber:server' namespace (i.e., server-to-server streams).
次のルールは、「Jabber:Server」ネームスペース(つまり、サーバーからサーバーのストリーム)によって適格なXMLストリームのコンテキストで「From」属性に適用されます。
1. A stanza MUST possess a 'from' attribute whose value is an XMPP address; if a server receives a stanza that does not meet this restriction, it MUST close the stream with an <improper-addressing/> stream error (Section 4.9.3.7).
1. スタンザは、値がXMPPアドレスである「From」属性を所有している必要があります。サーバーがこの制限を満たさないスタンザを受信した場合、<Impoper-Addressing/>ストリームエラー(セクション4.9.3.7)でストリームを閉じる必要があります。
2. The domainpart of the JID contained in the stanza's 'from' attribute MUST match the FQDN of the sending server (or any validated domain thereof) as communicated via SASL negotiation (see Section 6), Server Dialback (see [XEP-0220]), or similar means; if a server receives a stanza that does not meet this restriction, it MUST close the stream with an <invalid-from/> stream error (Section 4.9.3.9).
2. Stanzaの「From」属性に含まれるJIDのドメインパートは、SASL交渉(セクション6を参照)、サーバーダイヤルバック([XEP-0220を参照)を参照)を介して通信された送信サーバーのFQDN(またはその検証済みドメイン)と一致する必要があります。または同様の手段。サーバーがこの制限を満たさないスタンザを受信した場合、<無効な/>ストリームエラー(セクション4.9.3.9)でストリームを閉じる必要があります。
Enforcement of these rules helps to prevent certain denial-of-service attacks as described under Section 13.12.
これらの規則の施行は、セクション13.12で説明されているように、特定のサービス拒否攻撃を防ぐのに役立ちます。
The 'id' attribute is used by the originating entity to track any response or error stanza that it might receive in relation to the generated stanza from another entity (such as an intermediate server or the intended recipient).
「ID」属性は、発信元のエンティティによって使用され、他のエンティティ(中間サーバーや意図した受信者など)から生成されたスタンザに関連して受け取る可能性のある応答またはエラースタンザを追跡します。
It is up to the originating entity whether the value of the 'id' attribute is unique only within its current stream or unique globally.
「ID」属性の値が現在のストリーム内でのみ一意であるか、グローバルに一意であるかどうかは、発信者のエンティティ次第です。
For <message/> and <presence/> stanzas, it is RECOMMENDED for the originating entity to include an 'id' attribute; for <iq/> stanzas, it is REQUIRED.
<message/> and <presence/> stanzasについては、発信元のエンティティが「id」属性を含めることをお勧めします。<IQ/> Stanzasの場合、必要です。
If the generated stanza includes an 'id' attribute then it is REQUIRED for the response or error stanza to also include an 'id' attribute, where the value of the 'id' attribute MUST match that of the generated stanza.
生成されたスタンザに「ID」属性が含まれている場合、応答またはエラーStanzaが「ID」属性も含めることが必要です。「ID」属性の値は、生成されたスタンザの値と一致する必要があります。
The semantics of IQ stanzas impose additional restrictions as described under Section 8.2.3.
IQスタンザのセマンティクスは、セクション8.2.3で説明されているように追加の制限を課します。
The 'type' attribute specifies the purpose or context of the message, presence, or IQ stanza. The particular allowable values for the 'type' attribute vary depending on whether the stanza is a message, presence, or IQ stanza. The defined values for message and presence stanzas are specific to instant messaging and presence applications and therefore are defined in [XMPP-IM], whereas the values for IQ stanzas specify the part of the semantics for all structured request-response exchanges (no matter what the payload) and therefore are specified under Section 8.2.3. The only 'type' value common to all three kinds of stanzas is "error" as described under Section 8.3.
「タイプ」属性は、メッセージ、存在、またはIQスタンザの目的またはコンテキストを指定します。「タイプ」属性の特定の許容値は、スタンザがメッセージ、存在、またはIQスタンザであるかどうかによって異なります。メッセージと存在スタンザの定義された値はインスタントメッセージングと存在アプリケーションに固有であるため、[XMPP-IM]で定義されますが、IQスタンザの値はすべての構造化されたリクエスト応答交換のセマンティクスの部分を指定します(何に関係なくペイロード)、したがってセクション8.2.3で指定されています。3種類のスタンザすべてに共通する唯一の「タイプ」値は、セクション8.3で説明されているように「エラー」です。
A stanza SHOULD possess an 'xml:lang' attribute (as defined in Section 2.12 of [XML]) if the stanza contains XML character data that is intended to be presented to a human user (as explained in [CHARSETS], "internationalization is for humans"). The value of the 'xml:lang' attribute specifies the default language of any such human-readable XML character data.
スタンザが人間のユーザーに提示されることを意図したXML文字データを含む場合、スタンザには「XML:lang」属性([xml]のセクション2.12で定義されている)を所有する必要があります([charsets]で説明されているように、「国際化」は国際化です。人間のために」)。'xml:lang'属性の値は、そのような人間が読み取るXML文字データのデフォルト言語を指定します。
<presence from='romeo@example.net/orchard' xml:lang='en'> <show>dnd</show> <status>Wooing Juliet</status> </presence>
The value of the 'xml:lang' attribute MAY be overridden by the 'xml: lang' attribute of a specific child element.
'xml:lang'属性の値は、特定の子要素の 'xml:lang'属性によってオーバーライドされる場合があります。
<presence from='romeo@example.net/orchard' xml:lang='en'> <show>dnd</show> <status>Wooing Juliet</status> <status xml:lang='cs'>Dvořím se Julii</status> </presence>
If an outbound stanza generated by a client does not possess an 'xml: lang' attribute, the client's server SHOULD add an 'xml:lang' attribute whose value is that specified for the client's output stream as defined under Section 4.7.4.
クライアントによって生成されたアウトバウンドスタンザが「XML:LANG」属性を所有していない場合、クライアントのサーバーは、セクション4.7.4で定義されているクライアントの出力ストリームに対して指定されている値が「XML:LANG」属性を追加する必要があります。
C: <presence from='romeo@example.net/orchard'> <show>dnd</show> <status>Wooing Juliet</status> </presence>
S: <presence from='romeo@example.net/orchard' to='juliet@im.example.com' xml:lang='en'> <show>dnd</show> <status>Wooing Juliet</status> </presence>
If an inbound stanza received by a client or server does not possess an 'xml:lang' attribute, an implementation MUST assume that the default language is that specified for the entity's input stream as defined under Section 4.7.4.
クライアントまたはサーバーが受信したインバウンドスタンザに「XML:LANG」属性を所有していない場合、実装は、セクション4.7.4で定義されているエンティティの入力ストリームにデフォルト言語が指定されているものであると仮定する必要があります。
The value of the 'xml:lang' attribute MUST conform to the NMTOKEN datatype (as defined in Section 2.3 of [XML]) and MUST conform to the format defined in [LANGTAGS].
'xml:lang'属性の値は、nmtokenデータ型([xml]のセクション2.3で定義されている)に準拠する必要があり、[langtags]で定義された形式に準拠する必要があります。
A server MUST NOT modify or delete 'xml:lang' attributes on stanzas it receives from other entities.
サーバーは、他のエンティティから受け取るスタンザの 'XML:Lang'属性を変更または削除してはなりません。
The <message/> stanza is a "push" mechanism whereby one entity pushes information to another entity, similar to the communications that occur in a system such as email. All message stanzas will possess a 'to' attribute that specifies the intended recipient of the message (see Section 8.1.1 and Section 10.3), unless the message is being sent to the bare JID of a connected client's account. Upon receiving a message stanza with a 'to' address, a server SHOULD attempt to route or deliver it to the intended recipient (see Section 10 for general routing and delivery rules related to XML stanzas).
<メッセージ/>スタンザは、電子メールなどのシステムで発生する通信と同様に、あるエンティティが別のエンティティに情報をプッシュする「プッシュ」メカニズムです。すべてのメッセージスタンザは、メッセージが接続されたクライアントのアカウントの裸のジドに送信されない限り、メッセージの意図された受信者を指定する「to」属性を所有します(セクション8.1.1およびセクション10.3を参照)。「To」アドレスを含むスタンザを受信すると、サーバーはそれを意図した受信者にルーティングまたは配信しようとする必要があります(XMLスタンザに関連する一般的なルーティングおよび配信ルールについてはセクション10を参照)。
The <presence/> stanza is a specialized "broadcast" or "publish-subscribe" mechanism, whereby multiple entities receive information (in this case, network availability information) about an entity to which they have subscribed. In general, a publishing client SHOULD send a presence stanza with no 'to' attribute, in which case the server to which the client is connected will broadcast that stanza to all subscribed entities. However, a publishing client MAY also send a presence stanza with a 'to' attribute, in which case the server will route or deliver that stanza to the intended recipient. Although the <presence/> stanza is most often used by XMPP clients, it can also be used by servers, add-on services, and any other kind of XMPP entity. See Section 10 for general routing and delivery rules related to XML stanzas, and [XMPP-IM] for rules specific to presence applications.
<Forceent/> Stanzaは、特別な「ブロードキャスト」または「パブリッシュサブスクライブ」メカニズムであり、複数のエンティティがサブスクライブしたエンティティに関する情報(この場合はネットワーク可用性情報)を受け取ります。一般に、パブリッシングクライアントは、「to」属性なしで存在感のあるスタンザを送信する必要があります。その場合、クライアントが接続するサーバーは、そのスタンザをすべてのサブスクライブされたエンティティにブロードキャストします。ただし、出版クライアントは、「To」属性を備えたStanzaの存在感を送信する場合があります。その場合、サーバーはそのスタンザを意図した受信者にルーティングまたは配信します。<infaction/> StanzaはXMPPクライアントで最もよく使用されますが、サーバー、アドオンサービス、その他の種類のXMPPエンティティでも使用できます。XMLスタンザに関連する一般的なルーティングおよび配信ルールについては、存在アプリケーションに固有のルールについては[XMPP-IM]についてはセクション10を参照してください。
Info/Query, or IQ, is a "request-response" mechanism, similar in some ways to the Hypertext Transfer Protocol [HTTP]. The semantics of IQ enable an entity to make a request of, and receive a response from, another entity. The data content of the request and response is defined by the schema or other structural definition associated with the XML namespace that qualifies the direct child element of the IQ element (see Section 8.4), and the interaction is tracked by the requesting entity through use of the 'id' attribute. Thus, IQ interactions follow a common pattern of structured data exchange such as get/result or set/result (although an error can be returned in reply to a request if appropriate): Requesting Responding Entity Entity ---------- ---------- | | | <iq id='1' type='get'> | | [ ... payload ... ] | | </iq> | | -------------------------> | | | | <iq id='1' type='result'> | | [ ... payload ... ] | | </iq> | | <------------------------- | | | | <iq id='2' type='set'> | | [ ... payload ... ] | | </iq> | | -------------------------> | | | | <iq id='2' type='error'> | | [ ... condition ... ] | | </iq> | | <------------------------- | | |
Figure 5: Semantics of IQ Stanzas
図5:IQスタンザのセマンティクス
To enforce these semantics, the following rules apply:
これらのセマンティクスを実施するには、次のルールが適用されます。
1. The 'id' attribute is REQUIRED for IQ stanzas.
1. IQスタンザには「ID」属性が必要です。
2. The 'type' attribute is REQUIRED for IQ stanzas. The value MUST be one of the following; if not, the recipient or an intermediate router MUST return a <bad-request/> stanza error (Section 8.3.3.1).
2. IQスタンザには「タイプ」属性が必要です。値は次のいずれかでなければなりません。そうでない場合、受信者または中間ルーターは、<bad-request/> stanzaエラー(セクション8.3.3.1)を返す必要があります。
* get -- The stanza requests information, inquires about what data is needed in order to complete further operations, etc.
* 入手 - スタンザは情報を要求し、さらなる操作を完了するために必要なデータについて問い合わせます。
* set -- The stanza provides data that is needed for an operation to be completed, sets new values, replaces existing values, etc.
* セット - スタンザは、操作を完了するために必要なデータを提供し、新しい値を設定し、既存の値を置き換えます。
* result -- The stanza is a response to a successful get or set request.
* 結果-Stanzaは、Get Requestの成功またはセットリクエストへの応答です。
* error -- The stanza reports an error that has occurred regarding processing or delivery of a get or set request (see Section 8.3).
* エラー-Stanzaは、GETまたはSETリクエストの処理または配信に関して発生したエラーを報告します(セクション8.3を参照)。
3. An entity that receives an IQ request of type "get" or "set" MUST reply with an IQ response of type "result" or "error". The response MUST preserve the 'id' attribute of the request (or be empty if the generated stanza did not include an 'id' attribute).
3. タイプ「get」または「set」のIQ要求を受信するエンティティは、「結果」または「エラー」のIQ応答で返信する必要があります。応答は、リクエストの「ID」属性を保持する必要があります(または、生成されたスタンザに「ID」属性が含まれていない場合は空になります)。
4. An entity that receives a stanza of type "result" or "error" MUST NOT respond to the stanza by sending a further IQ response of type "result" or "error"; however, the requesting entity MAY send another request (e.g., an IQ of type "set" to provide obligatory information discovered through a get/result pair).
4. タイプ「結果」または「エラー」のスタンザを受け取るエンティティは、「結果」または「エラー」のさらにIQ応答を送信してスタンザに応答してはなりません。ただし、リクエストエンティティは別の要求を送信する場合があります(たとえば、get/resultペアで発見された義務的な情報を提供するために、「セット」のIQ)。
5. An IQ stanza of type "get" or "set" MUST contain exactly one child element, which specifies the semantics of the particular request.
5. タイプ「get」または「set」のIQスタンザには、特定のリクエストのセマンティクスを指定する1つの子要素を正確に含める必要があります。
6. An IQ stanza of type "result" MUST include zero or one child elements.
6. タイプ「結果」のIQスタンザには、ゼロまたは1つの子要素を含める必要があります。
7. An IQ stanza of type "error" MAY include the child element contained in the associated "get" or "set" and MUST include an <error/> child; for details, see Section 8.3.
7. タイプ「エラー」のIQスタンザには、関連する「get」または「set」に含まれる子要素を含めることができ、<error/>子を含める必要があります。詳細については、セクション8.3を参照してください。
Stanza-related errors are handled in a manner similar to stream errors (Section 4.9). Unlike stream errors, stanza errors are recoverable; therefore, they do not result in termination of the XML stream and underlying TCP connection. Instead, the entity that discovers the error condition returns an error stanza, which is a stanza that:
スタンザ関連のエラーは、ストリームエラーと同様の方法で処理されます(セクション4.9)。ストリームエラーとは異なり、スタンザエラーは回復可能です。したがって、それらはXMLストリームと基礎となるTCP接続の終了をもたらしません。代わりに、エラー条件を発見するエンティティは、エラースタンザを返します。これは、次のスタンザです。
o is of the same kind (message, presence, or IQ) as the generated stanza that triggered the error
o エラーをトリガーした生成されたスタンザと同じ種類(メッセージ、存在、またはIQ)
o has a 'type' attribute set to a value of "error"
o 「エラー」の値に設定された「タイプ」属性があります
o typically swaps the 'from' and 'to' addresses of the generated stanza
o 通常、生成されたスタンザの「from」と「」アドレスを交換します
o mirrors the 'id' attribute (if any) of the generated stanza that triggered the error
o エラーをトリガーした生成されたスタンザの「ID」属性(もしあれば)を反映しています
o contains an <error/> child element that specifies the error condition and therefore provides a hint regarding actions that the sender might be able to take in an effort to remedy the error (however, it is not always possible to remedy the error)
o エラー条件を指定する<エラー/>子要素が含まれているため、送信者がエラーを改善するための努力をすることができるアクションに関するヒントを提供します(ただし、エラーを改善することは常に可能ではありません)
The following rules apply to stanza errors:
Stanzaエラーには、次のルールが適用されます。
1. The receiving or processing entity that detects an error condition in relation to a stanza SHOULD return an error stanza (and MUST do so for IQ stanzas).
1. スタンザに関連するエラー条件を検出する受信または処理エンティティは、エラースタンザを返す必要があります(IQスタンザではそうする必要があります)。
2. The error stanza SHOULD simply swap the 'from' and 'to' addresses from the generated stanza, unless doing so would (1) result in an information leak (see under Section 13.10) or other breach of security, or (2) force the sender of the error stanza to include a malformed JID in the 'from' or 'to' address of the error stanza.
2. エラースタンザは、生成されたスタンザからの「From」と「to」アドレスを単純に交換する必要があります。エラースタンザの送信者は、エラースタンザの「from」または「」アドレスに奇形のJIDを含めます。
3. If the generated stanza was <message/> or <presence/> and included an 'id' attribute then it is REQUIRED for the error stanza to also include an 'id' attribute. If the generated stanza was <iq/> then the error stanza MUST include an 'id' attribute. In all cases, the value of the 'id' attribute MUST match that of the generated stanza (or be empty if the generated stanza did not include an 'id' attribute).
3. 生成されたスタンザが<メッセージ/>または<プレゼンス/>であり、「ID」属性を含めた場合、エラーStanzaには「ID」属性も含める必要があります。生成されたスタンザが<IQ/>の場合、エラースタンザには「ID」属性を含める必要があります。すべての場合において、「ID」属性の値は、生成されたスタンザの値と一致する必要があります(または、生成されたスタンザに「ID」属性が含まれていない場合は空になります)。
4. An error stanza MUST contain an <error/> child element.
4. エラースタンザには、<エラー/>子要素を含める必要があります。
5. The entity that returns an error stanza MAY pass along its JID to the sender of the generated stanza (e.g., for diagnostic or tracking purposes) through the addition of a 'by' attribute to the <error/> child element.
5. エラーを返すエンティティスタンザは、<エラー/>子要素への「by」属性を追加することにより、生成されたスタンザの送信者(例:診断または追跡のために)の送信者にそのJIDを渡すことができます。
6. The entity that returns an error stanza MAY include the original XML sent so that the sender can inspect and, if necessary, correct the XML before attempting to resend (however, this is a courtesy only and the originating entity MUST NOT depend on receiving the original payload). Naturally, the entity MUST NOT include the original data if it not well-formed XML, violates the XML restrictions of XMPP (see under Section 11.1), or is otherwise harmful (e.g., exceeds a size limit).
6. Stanzaを返すエンティティには、送信者が再送信する前に送信者が検査し、必要に応じてXMLを修正できるように送信された元のXMLが含まれる場合があります(ただし、これは礼儀のみであり、元のエンティティは元のエンティティを受け取ることに依存してはなりません。ペイロード)。当然のことながら、エンティティは、適切に形成されていないXML、XMLのXML制限に違反している場合(セクション11.1を参照)、またはそれ以外の場合は有害である場合、元のデータを含めてはなりません(例:サイズ制限を超えます)。
7. An <error/> child MUST NOT be included if the 'type' attribute has a value other than "error" (or if there is no 'type' attribute).
7. <エラー/>「型」属性が「エラー」以外の値(または「タイプ」属性がない場合)以外の値がある場合、子を含めてはなりません。
8. An entity that receives an error stanza MUST NOT respond to the stanza with a further error stanza; this helps to prevent looping.
8. Stanzaのエラーを受け取るエンティティは、StanzaにさらなるエラーStanzaで応答してはなりません。これは、ループを防ぐのに役立ちます。
The syntax for stanza-related errors is as follows, where XML data shown within the square brackets '[' and ']' is OPTIONAL, 'intended-recipient' is the JID of the entity to which the original stanza was addressed, 'sender' is the JID of the originating entity, and 'error-generator' is the entity that detects the fact that an error has occurred and thus returns an error stanza.
スタンザ関連のエラーの構文は次のとおりです。四角いブラケットに表示されるXMLデータ['および']はオプションであり、「意図されたレシピエント」は、元のスタンザが対処したエンティティのジド、「送信者」「発生するエンティティのJIDであり、「エラージェネレーター」は、エラーが発生したという事実を検出し、エラースタンザを返すエンティティです。
<stanza-kind from='intended-recipient' to='sender' type='error'> [OPTIONAL to include sender XML here] <error [by='error-generator'] type='error-type'> <defined-condition xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> [<text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas' xml:lang='langcode'> OPTIONAL descriptive text </text>] [OPTIONAL application-specific condition element] </error> </stanza-kind>
The "stanza-kind" MUST be one of message, presence, or iq.
「スタンザ」はメッセージ、存在、またはIQの1つでなければなりません。
The "error-type" MUST be one of the following:
「エラータイプ」は次のいずれかでなければなりません。
o auth -- retry after providing credentials
o AUTH-資格情報を提供した後に再試行します
o cancel -- do not retry (the error cannot be remedied)
o キャンセル - 再試行しないでください(エラーを改善できません)
o continue -- proceed (the condition was only a warning)
o 続行 - 続行(条件は警告のみでした)
o modify -- retry after changing the data sent
o 変更 - 送信されたデータを変更した後、再試行します
o wait -- retry after waiting (the error is temporary)
o 待機 - 待ってから再試行します(エラーは一時的です)
The "defined-condition" MUST correspond to one of the stanza error conditions defined under Section 8.3.3. However, because additional error conditions might be defined in the future, if an entity receives a stanza error condition that it does not understand then it MUST treat the unknown condition as equivalent to <undefined-condition/> (Section 8.3.3.21). If the designers of an XMPP protocol extension or the developers of an XMPP implementation need to communicate a stanza error condition that is not defined in this specification, they can do so by defining an application-specific error condition element qualified by an application-specific namespace.
「定義された条件」は、セクション8.3.3で定義されているスタンザエラー条件の1つに対応する必要があります。ただし、追加のエラー条件が将来定義される可能性があるため、エンティティが理解していないスタンザエラー条件を受け取った場合、未知の条件を<未定義条件/>に相当するものとして扱わなければなりません(セクション8.3.3.21)。XMPPプロトコル拡張機能の設計者またはXMPP実装の開発者が、この仕様で定義されていないStanzaエラー条件を通信する必要がある場合、アプリケーション固有の名前空間で適格なアプリケーション固有のエラー条件要素を定義することにより、そうすることができます。。
The <error/> element:
<エラー/>要素:
o MUST contain a defined condition element.
o 定義された条件要素を含める必要があります。
o MAY contain a <text/> child element containing XML character data that describes the error in more detail; this element MUST be qualified by the 'urn:ietf:params:xml:ns:xmpp-stanzas' namespace and SHOULD possess an 'xml:lang' attribute specifying the natural language of the XML character data.
o エラーをより詳細に説明するXML文字データを含む<テキスト/>子要素が含まれる場合があります。この要素は、「urn:ietf:params:xml:ns:xmpp-stanzas」ネームスペースによって適格である必要があり、XML文字データの自然言語を指定する「XML:LANG」属性を所有する必要があります。
o MAY contain a child element for an application-specific error condition; this element MUST be qualified by an application-specific namespace that defines the syntax and semantics of the element.
o アプリケーション固有のエラー条件のための子要素が含まれる場合があります。この要素は、要素の構文とセマンティクスを定義するアプリケーション固有の名前空間で適格でなければなりません。
The <text/> element is OPTIONAL. If included, it is to be used only to provide descriptive or diagnostic information that supplements the meaning of a defined condition or application-specific condition. It MUST NOT be interpreted programmatically by an application. It SHOULD NOT be used as the error message presented to a human user, but MAY be shown in addition to the error message associated with the defined condition element (and, optionally, the application-specific condition element).
<テキスト/>要素はオプションです。含まれている場合は、定義された条件またはアプリケーション固有の条件の意味を補完する記述情報または診断情報を提供するためにのみ使用されます。アプリケーションによってプログラムで解釈されてはなりません。人間のユーザーに提示されたエラーメッセージとして使用する必要はありませんが、定義された条件要素(およびオプションでは、アプリケーション固有の条件要素)に関連付けられたエラーメッセージに加えて表示される場合があります。
Interoperability Note: The syntax defined in [RFC3920] included a legacy 'code' attribute, whose semantics have been replaced by the defined condition elements; information about mapping defined condition elements to values of the legacy 'code' attribute can be found in [XEP-0086].
相互運用性注:[RFC3920]で定義されている構文には、レガシー「コード」属性が含まれており、そのセマンティクスは定義された条件要素に置き換えられています。定義された条件要素をレガシー「コード」属性の値にマッピングすることに関する情報は、[XEP-0086]に記載されています。
The following conditions are defined for use in stanza errors.
次の条件は、スタンザエラーで使用するために定義されています。
The error-type value that is RECOMMENDED for each defined condition is the usual expected type; however, in some circumstances a different type might be more appropriate.
定義された各条件に推奨されるエラータイプの値は、通常の予想されるタイプです。ただし、状況によっては、別のタイプがより適切かもしれません。
The sender has sent a stanza containing XML that does not conform to the appropriate schema or that cannot be processed (e.g., an IQ stanza that includes an unrecognized value of the 'type' attribute, or an element that is qualified by a recognized namespace but that violates the defined syntax for the element); the associated error type SHOULD be "modify".
送信者は、適切なスキーマに準拠していない、または処理できないXMLを含むスタンザを送信しました(たとえば、「タイプ」属性の認識されていない値、または認識された名前空間によって適格な要素を含むが、要素の定義された構文に違反します);関連するエラータイプは「変更」する必要があります。
C: <iq from='juliet@im.example.com/balcony' id='zj3v142b' to='im.example.com' type='subscribe'> <ping xmlns='urn:xmpp:ping'/> </iq>
S: <iq from='im.example.com' id='zj3v142b' to='juliet@im.example.com/balcony' type='error'> <error type='modify'> <bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq>
Access cannot be granted because an existing resource exists with the same name or address; the associated error type SHOULD be "cancel".
既存のリソースが同じ名前または住所で存在するため、アクセスを許可できません。関連するエラータイプは「キャンセル」する必要があります。
C: <iq id='wy2xa82b4' type='set'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <resource>balcony</resource> </bind> </iq>
S: <iq id='wy2xa82b4' type='error'> <error type='cancel'> <conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq>
The feature represented in the XML stanza is not implemented by the intended recipient or an intermediate server and therefore the stanza cannot be processed (e.g., the entity understands the namespace but does not recognize the element name); the associated error type SHOULD be "cancel" or "modify".
XMLスタンザに表される機能は、意図した受信者または中間サーバーによって実装されていないため、スタンザを処理できません(たとえば、エンティティは名前空間を理解しているが、要素名を認識しません)。関連するエラータイプは、「キャンセル」または「変更」する必要があります。
C: <iq from='juliet@im.example.com/balcony' id='9u2bax16' to='pubsub.example.com' type='get'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <subscriptions/> </pubsub> </iq>
E: <iq from='pubsub.example.com' id='9u2bax16' to='juliet@im.example.com/balcony' type='error'> <error type='cancel'> <feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <unsupported xmlns='http://jabber.org/protocol/pubsub#errors' feature='retrieve-subscriptions'/> </error> </iq>
The requesting entity does not possess the necessary permissions to perform an action that only certain authorized roles or individuals are allowed to complete (i.e., it typically relates to authorization rather than authentication); the associated error type SHOULD be "auth".
要求エンティティは、特定の承認された役割または個人のみが完了することを許可されるアクションを実行するために必要な許可を所有していません(つまり、それは通常、認証ではなく承認に関連します)。関連するエラータイプは「auth」でなければなりません。
C: <presence from='juliet@im.example.com/balcony' id='y2bs71v4' to='characters@muc.example.com/JulieC'> <x xmlns='http://jabber.org/protocol/muc'/> </presence>
E: <presence from='characters@muc.example.com/JulieC' id='y2bs71v4' to='juliet@im.example.com/balcony' type='error'> <error type='auth'> <forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </presence>
The recipient or server can no longer be contacted at this address, typically on a permanent basis (as opposed to the <redirect/> error condition, which is used for temporary addressing failures); the associated error type SHOULD be "cancel" and the error stanza SHOULD include a new address (if available) as the XML character data of the <gone/> element (which MUST be a Uniform Resource Identifier [URI] or Internationalized Resource Identifier [IRI] at which the entity can be contacted, typically an XMPP IRI as specified in [XMPP-URI]).
受信者またはサーバーは、通常、永続的なベースでこのアドレスで連絡することができなくなりました(<redirect/>エラー条件とは対照的に、一時的な障害のアドレス指定に使用されます)。関連するエラータイプは「キャンセル」する必要があり、エラースタンザには、<gone/>要素のXML文字データとして新しいアドレス(利用可能な場合)を含める必要があります(これは均一なリソース識別子[URI]または国際化されたリソース識別子である必要があります[IRI]エンティティに接触できるIRI、通常は[XMPP-URI]で指定されているXMPP IRI)。
C: <message from='juliet@im.example.com/churchyard' id='sj2b371v' to='romeo@example.net' type='chat'> <body>Thy lips are warm.</body> </message>
S: <message from='romeo@example.net' id='sj2b371v' to='juliet@im.example.com/churchyard' type='error'> <error by='example.net' type='cancel'> <gone xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'> xmpp:romeo@afterlife.example.net </gone> </error> </message>
The server has experienced a misconfiguration or other internal error that prevents it from processing the stanza; the associated error type SHOULD be "cancel".
サーバーは、Stanzaの処理を妨げる誤った構成またはその他の内部エラーを経験しています。関連するエラータイプは「キャンセル」する必要があります。
C: <presence from='juliet@im.example.com/balcony' id='y2bs71v4' to='characters@muc.example.com/JulieC'> <x xmlns='http://jabber.org/protocol/muc'/> </presence>
E: <presence from='characters@muc.example.com/JulieC' id='y2bs71v4' to='juliet@im.example.com/balcony' type='error'> <error type='cancel'> <internal-server-error xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </presence>
The addressed JID or item requested cannot be found; the associated error type SHOULD be "cancel".
アドレス指定されたJIDまたは要求されたアイテムは見つかりません。関連するエラータイプは「キャンセル」する必要があります。
C: <presence from='userfoo@example.com/bar' id='pwb2n78i' to='nosuchroom@conference.example.org/foo'/>
S: <presence from='nosuchroom@conference.example.org/foo' id='pwb2n78i' to='userfoo@example.com/bar' type='error'> <error type='cancel'> <item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </presence>
Security Warning: An application MUST NOT return this error if doing so would provide information about the intended recipient's network availability to an entity that is not authorized to know such information (for a more detailed discussion of presence authorization, refer to the discussion of presence subscriptions in [XMPP-IM]); instead it MUST return a <service-unavailable/> stanza error (Section 8.3.3.19).
セキュリティ警告:アプリケーションは、このエラーを返してはいけません。そうすることで、そのような情報を知ることが許可されていないエンティティに意図した受信者のネットワークの可用性に関する情報が提供されます(存在認証のより詳細な議論のために、存在のサブスクリプションの議論を参照してくださいin [xmpp-im]);代わりに、<service-unavailable/> stanzaエラー(セクション8.3.3.19)を返す必要があります。
The sending entity has provided (e.g., during resource binding) or communicated (e.g., in the 'to' address of a stanza) an XMPP address or aspect thereof that violates the rules defined in [XMPP-ADDR]; the associated error type SHOULD be "modify".
送信エンティティは、[XMPP-ADDR]で定義されているルールに違反するXMPPアドレスまたはその側面を伝えている(リソースバインディング中)または通信(たとえば、 'to' address of a Stanza)を提供しています。関連するエラータイプは「変更」する必要があります。
C: <presence from='juliet@im.example.com/balcony' id='y2bs71v4' to='ch@r@cters@muc.example.com/JulieC'> <x xmlns='http://jabber.org/protocol/muc'/> </presence>
E: <presence from='ch@r@cters@muc.example.com/JulieC' id='y2bs71v4' to='juliet@im.example.com/balcony' type='error'> <error by='muc.example.com' type='modify'> <jid-malformed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </presence>
Implementation Note: Enforcement of the format for XMPP localparts is primarily the responsibility of the service at which the associated account or entity is located (e.g., the example.com service is responsible for returning <jid-malformed/> errors related to all JIDs of the form <localpart@example.com>), whereas enforcement of the format for XMPP domainparts is primarily the responsibility of the service that seeks to route a stanza to the service identified by that domainpart (e.g., the example.org service is responsible for returning <jid-malformed/> errors related to stanzas that users of that service have to tried send to JIDs of the form <localpart@example.com>). However, any entity that detects a malformed JID MAY return this error.
実装注:XMPP LocalPartsのフォーマットの施行は、主に関連するアカウントまたはエンティティが配置されているサービスの責任です(例えば、Example.comサービスは、すべてのJIDに関連するすべてのJIDに関連する<Jid-Malformed/>エラーを返す責任があります。xmpp domainpartsの形式の実施は、主にスタンザをそのドメインパートによって特定されたサービスにルーティングしようとするサービスの責任です(例:example.orgサービスは責任があります。そのサービスのユーザーが<localpart@example.com>)のjidsに送信する必要があるというスタンザに関連する<jid-malformed/>エラーを返します。ただし、奇形のJIDを検出するエンティティは、このエラーを返す場合があります。
The recipient or server understands the request but cannot process it because the request does not meet criteria defined by the recipient or server (e.g., a request to subscribe to information that does not simultaneously include configuration parameters needed by the recipient); the associated error type SHOULD be "modify".
受信者またはサーバーはリクエストを理解していますが、リクエストが受信者またはサーバーによって定義された基準を満たしていないため、処理できません(たとえば、受信者が必要とする構成パラメーターを同時に含めない情報を購読するリクエスト)。関連するエラータイプは「変更」する必要があります。
C: <message to='juliet@im.example.com' id='yt2vs71m'> <body>[ ... the-emacs-manual ... ]</body> </message>
S: <message from='juliet@im.example.com' id='yt2vs71m'> <error type='modify'> <not-acceptable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </message>
The recipient or server does not allow any entity to perform the action (e.g., sending to entities at a blacklisted domain); the associated error type SHOULD be "cancel".
受信者またはサーバーは、エンティティがアクションを実行することを許可していません(たとえば、ブラックリストドメインでエンティティに送信します)。関連するエラータイプは「キャンセル」する必要があります。
C: <presence from='juliet@im.example.com/balcony' id='y2bs71v4' to='characters@muc.example.com/JulieC'> <x xmlns='http://jabber.org/protocol/muc'/> </presence>
E: <presence from='characters@muc.example.com/JulieC' id='y2bs71v4' to='juliet@im.example.com/balcony' type='error'> <error type='cancel'> <not-allowed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </presence>
The sender needs to provide credentials before being allowed to perform the action, or has provided improper credentials (the name "not-authorized", which was borrowed from the "401 Unauthorized" error of [HTTP], might lead the reader to think that this condition relates to authorization, but instead it is typically used in relation to authentication); the associated error type SHOULD be "auth".
送信者は、アクションの実行を許可される前に資格情報を提供する必要があります。または、[HTTP]の「401不正な」エラーから借用された「無許可」という名前の名前は、読者が読者を導く可能性があります。この条件は承認に関連していますが、代わりに認証に関連して使用されます)。関連するエラータイプは「auth」でなければなりません。
C: <presence from='juliet@im.example.com/balcony' id='y2bs71v4' to='characters@muc.example.com/JulieC'> <x xmlns='http://jabber.org/protocol/muc'/> </presence>
E: <presence from='characters@muc.example.com/JulieC' id='y2bs71v4' to='juliet@im.example.com/balcony'> <error type='auth'> <not-authorized xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </presence>
The entity has violated some local service policy (e.g., a message contains words that are prohibited by the service) and the server MAY choose to specify the policy in the <text/> element or in an application-specific condition element; the associated error type SHOULD be "modify" or "wait" depending on the policy being violated.
エンティティは、いくつかのローカルサービスポリシーに違反しています(たとえば、サービスがサービスによって禁止されている単語が含まれています)、サーバーは<テキスト/>要素またはアプリケーション固有の条件要素でポリシーを指定することを選択できます。関連するエラータイプは、違反しているポリシーに応じて「変更」または「待機」する必要があります。
(In the following example, the client sends an XMPP message containing words that are forbidden according to the server's local service policy.)
(次の例では、クライアントは、サーバーのローカルサービスポリシーに従って禁止されている単語を含むXMPPメッセージを送信します。)
C: <message from='romeo@example.net/foo' to='bill@im.example.com' id='vq71f4nb'> <body>%#&@^!!!</body> </message>
S: <message from='bill@im.example.com' id='vq71f4nb' to='romeo@example.net/foo'> <error by='example.net' type='modify'> <policy-violation xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </message>
The intended recipient is temporarily unavailable, undergoing maintenance, etc.; the associated error type SHOULD be "wait".
意図した受信者は一時的に利用できず、メンテナンスを受けています。関連するエラータイプは「待機」する必要があります。
C: <presence from='juliet@im.example.com/balcony' id='y2bs71v4' to='characters@muc.example.com/JulieC'> <x xmlns='http://jabber.org/protocol/muc'/> </presence>
E: <presence from='characters@muc.example.com/JulieC' id='y2bs71v4' to='juliet@im.example.com/balcony'> <error type='wait'> <recipient-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </presence>
Security Warning: An application MUST NOT return this error if doing so would provide information about the intended recipient's network availability to an entity that is not authorized to know such information (for a more detailed discussion of presence authorization, refer to the discussion of presence subscriptions in [XMPP-IM]); instead it MUST return a <service-unavailable/> stanza error (Section 8.3.3.19).
セキュリティ警告:アプリケーションは、このエラーを返してはいけません。そうすることで、そのような情報を知ることが許可されていないエンティティに意図した受信者のネットワークの可用性に関する情報が提供されます(存在認証のより詳細な議論のために、存在のサブスクリプションの議論を参照してくださいin [xmpp-im]);代わりに、<service-unavailable/> stanzaエラー(セクション8.3.3.19)を返す必要があります。
The recipient or server is redirecting requests for this information to another entity, typically in a temporary fashion (as opposed to the <gone/> error condition, which is used for permanent addressing failures); the associated error type SHOULD be "modify" and the error stanza SHOULD contain the alternate address in the XML character data of the <redirect/> element (which MUST be a URI or IRI with which the sender can communicate, typically an XMPP IRI as specified in [XMPP-URI]).
受信者またはサーバーは、この情報のリクエストを別のエンティティにリダイレクトしています。通常、一時的な方法で(恒久的なアドレス指定障害に使用される<なくなった/>エラー条件とは対照的です)。関連するエラータイプは「変更」する必要があり、エラースタンザには<redirect/>要素のXML文字データに代替アドレスが含まれている必要があります(これは、送信者が通信できるURIまたはIRIでなければなりません。[xmpp-uri]で指定されています)。
C: <presence from='juliet@im.example.com/balcony' id='y2bs71v4' to='characters@muc.example.com/JulieC'> <x xmlns='http://jabber.org/protocol/muc'/> </presence>
E: <presence from='characters@muc.example.com/JulieC' id='y2bs71v4' to='juliet@im.example.com/balcony' type='error'> <error type='modify'> <redirect xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'> xmpp:characters@conference.example.org </redirect> </error> </presence> Security Warning: An application receiving a stanza-level redirect SHOULD warn a human user of the redirection attempt and request approval before proceeding to communicate with the entity whose address is contained in the XML character data of the <redirect/> element, because that entity might have a different identity or might enforce different security policies. The end-to-end authentication or signing of XMPP stanzas could help to mitigate this risk, since it would enable the sender to determine if the entity to which it has been redirected has the same identity as the entity it originally attempted to contact. An application MAY have a policy of following redirects only if it has authenticated the receiving entity. In addition, an application SHOULD abort the communication attempt after a certain number of successive redirects (e.g., at least 2 but no more than 5).
e:<<from -'characters@muc.example.com/juliec 'id =' y2bs71v4 'to='juliet@im.example.com/balcony' Type = 'エラー'> <エラータイプ= 'Modify'> <xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas'> xmpp:character@conference.example.org </redirect> </error> </fesencion>セキュリティ警告:Stanza-levelを受信するアプリケーションリダイレクトは、人間のユーザーにリダイレクトの試みを警告し、<redirect/>要素のXML文字データに住所が含まれているエンティティと通信する前に、承認を要求する必要があります。ポリシー。XMPPスタンザのエンドツーエンドの認証または署名は、このリスクを軽減するのに役立つ可能性があります。これは、送信者がリダイレクトされたエンティティが元々接触しようとしたエンティティと同じアイデンティティを持っているかどうかを判断できるためです。アプリケーションには、受信エンティティを認証した場合にのみ、リダイレクトに従うというポリシーがある場合があります。さらに、アプリケーションは、一定数の連続したリダイレクトの後に通信試行を中止する必要があります(たとえば、少なくとも2回は5以下です)。
The requesting entity is not authorized to access the requested service because prior registration is necessary (examples of prior registration include members-only rooms in XMPP multi-user chat [XEP-0045] and gateways to non-XMPP instant messaging services, which traditionally required registration in order to use the gateway [XEP-0100]); the associated error type SHOULD be "auth".
事前登録が必要なため、要求エンティティは要求されたサービスにアクセスする権限がありません(事前の登録の例には、XMPPマルチユーザーチャット[XEP-0045]のメンバーのみの部屋と、従来必要な非XMPPインスタントメッセージングサービスへのゲートウェイが含まれます。ゲートウェイを使用するための登録[XEP-0100]);関連するエラータイプは「auth」でなければなりません。
C: <presence from='juliet@im.example.com/balcony' id='y2bs71v4' to='characters@muc.example.com/JulieC'> <x xmlns='http://jabber.org/protocol/muc'/> </presence>
E: <presence from='characters@muc.example.com/JulieC' id='y2bs71v4' to='juliet@im.example.com/balcony'> <error type='auth'> <registration-required xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </presence>
A remote server or service specified as part or all of the JID of the intended recipient does not exist or cannot be resolved (e.g., there is no _xmpp-server._tcp DNS SRV record, the A or AAAA fallback resolution fails, or A/AAAA lookups succeed but there is no response on the IANA-registered port 5269); the associated error type SHOULD be "cancel".
意図された受信者の一部またはすべてのJIDとして指定されたリモートサーバーまたはサービスは、存在しないか、解決できない(例えば、_xmpp-server._tcp DNS SRVレコードはありません。AAAAルックアップは成功しますが、IANAが登録したポート5269に応答はありません);関連するエラータイプは「キャンセル」する必要があります。
C: <message from='romeo@example.net/home' id='ud7n1f4h' to='bar@example.org' type='chat'> <body>yt?</body> </message>
E: <message from='bar@example.org' id='ud7n1f4h' to='romeo@example.net/home' type='error'> <error type='cancel'> <remote-server-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </message>
A remote server or service specified as part or all of the JID of the intended recipient (or needed to fulfill a request) was resolved but communications could not be established within a reasonable amount of time (e.g., an XML stream cannot be established at the resolved IP address and port, or an XML stream can be established but stream negotiation fails because of problems with TLS, SASL, Server Dialback, etc.); the associated error type SHOULD be "wait" (unless the error is of a more permanent nature, e.g., the remote server is found but it cannot be authenticated or it violates security policies).
意図された受信者の一部またはすべてのJIDとして指定されたリモートサーバーまたはサービス(またはリクエストを満たすために必要な)は解決されましたが、合理的な時間内に通信を確立できませんでした(たとえば、XMLストリームを確立することはできません。IPアドレスとポートを解決するか、XMLストリームを確立できますが、TLS、SASL、サーバーダイヤルバックなどの問題のためにストリームネゴシエーションは失敗します。関連するエラータイプは「待機」である必要があります(エラーがより永続的な性質である場合を除き、たとえば、リモートサーバーが見つかりますが、認証できないか、セキュリティポリシーに違反することはできません)。
C: <message from='romeo@example.net/home' id='ud7n1f4h' to='bar@example.org' type='chat'> <body>yt?</body> </message>
E: <message from='bar@example.org' id='ud7n1f4h' to='romeo@example.net/home' type='error'> <error type='wait'> <remote-server-timeout xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </message>
The server or recipient is busy or lacks the system resources necessary to service the request; the associated error type SHOULD be "wait".
サーバーまたは受信者は忙しいか、リクエストのサービスに必要なシステムリソースが不足しています。関連するエラータイプは「待機」する必要があります。
C: <iq from='romeo@example.net/foo' id='kj4vz31m' to='pubsub.example.com' type='get'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <items node='my_musings'/> </pubsub> </iq>
E: <iq from='pubsub.example.com' id='kj4vz31m' to='romeo@example.net/foo' type='error'> <error type='wait'> <resource-constraint xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq>
The server or recipient does not currently provide the requested service; the associated error type SHOULD be "cancel".
サーバーまたは受信者は現在、要求されたサービスを提供していません。関連するエラータイプは「キャンセル」する必要があります。
C: <message from='romeo@example.net/foo' to='juliet@im.example.com'> <body>Hello?</body> </message>
S: <message from='juliet@im.example.com/foo' to='romeo@example.net'> <error type='cancel'> <service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </message>
Security Warning: An application MUST return a <service-unavailable/> stanza error (Section 8.3.3.19) instead of <item-not-found/> (Section 8.3.3.7) or <recipient-unavailable/> (Section 8.3.3.13) if sending one of the latter errors would provide information about the intended recipient's network availability to an entity that is not authorized to know such information (for a more detailed discussion of presence authorization, refer to [XMPP-IM]).
セキュリティ警告:アプリケーションは、<item-not-found/>(セクション8.3.3.7)または<reciont-unavailable/>(セクション8.3.3.13の代わりに、<service-unavailable/> stanzaエラー(セクション8.3.3.19)を返す必要があります。)後者のエラーのいずれかを送信すると、そのような情報を知ることが許可されていないエンティティに、意図した受信者のネットワークの可用性に関する情報が提供される場合(存在認証のより詳細な議論については、[XMPP-IM]を参照)。
The requesting entity is not authorized to access the requested service because a prior subscription is necessary (examples of prior subscription include authorization to receive presence information as defined in [XMPP-IM] and opt-in data feeds for XMPP publish-subscribe as defined in [XEP-0060]); the associated error type SHOULD be "auth".
事前のサブスクリプションが必要であるため、要求エンティティは要求されたサービスにアクセスすることを許可されていません(事前のサブスクリプションの例には、[XMPP-IM]で定義されている存在情報を受信する許可が含まれます。[xep-0060]);関連するエラータイプは「auth」でなければなりません。
C: <message from='romeo@example.net/orchard' id='pa73b4n7' to='playwright@shakespeare.example.com' type='chat'> <subject>ACT II, SCENE II</subject> <body>help, I forgot my lines!</body> </message>
E: <message from='playwright@shakespeare.example.com' id='pa73b4n7' to='romeo@example.net/orchard' type='error'> <error type='auth'> <subscription-required xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </message>
The error condition is not one of those defined by the other conditions in this list; any error type can be associated with this condition, and it SHOULD NOT be used except in conjunction with an application-specific condition.
エラー条件は、このリストの他の条件で定義されている条件の1つではありません。任意のエラータイプはこの条件に関連付けられる可能性があり、アプリケーション固有の条件と組み合わせた場合を除き、使用しないでください。
C: <message from='northumberland@shakespeare.example' id='richard2-4.1.247' to='kingrichard@royalty.england.example'> <body>My lord, dispatch; read o'er these articles.</body> <amp xmlns='http://jabber.org/protocol/amp'> <rule action='notify' condition='deliver' value='stored'/> </amp> </message>
S: <message from='example.org' id='amp1' to='northumberland@example.net/field' type='error'> <amp xmlns='http://jabber.org/protocol/amp' from='kingrichard@example.org' status='error' to='northumberland@example.net/field'> <rule action='error' condition='deliver' value='stored'/> </amp> <error type='modify'> <undefined-condition xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <failed-rules xmlns='http://jabber.org/protocol/amp#errors'> <rule action='error' condition='deliver' value='stored'/> </failed-rules> </error> </message>
The recipient or server understood the request but was not expecting it at this time (e.g., the request was out of order); the associated error type SHOULD be "wait" or "modify".
受信者またはサーバーはリクエストを理解していましたが、現時点ではそれを期待していませんでした(たとえば、リクエストは故障していませんでした)。関連するエラータイプは、「待機」または「変更」する必要があります。
C: <iq from='romeo@example.net/foo' id='o6hsv25z' to='pubsub.example.com' type='set'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <unsubscribe node='my_musings' jid='romeo@example.net'/> </pubsub> </iq>
E: <iq from='pubsub.example.com' id='o6hsv25z' to='romeo@example.net/foo' type='error'> <error type='modify'> <unexpected-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <not-subscribed xmlns='http://jabber.org/protocol/pubsub#errors'/> </error> </iq>
As noted, an application MAY provide application-specific stanza error information by including a properly namespaced child within the error element. Typically, the application-specific element supplements or further qualifies a defined element. Thus, the <error/> element will contain two or three child elements.
前述のように、アプリケーションは、エラー要素内に適切に名前付きの子供を含めることにより、アプリケーション固有のStanzaエラー情報を提供する場合があります。通常、アプリケーション固有の要素は、定義された要素をサプリメントするか、さらに資格があります。したがって、<エラー/>要素には2つまたは3つの子要素が含まれます。
<iq id='ixc3v1b9' type='error'> <error type='modify'> <bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <too-many-parameters xmlns='http://example.org/ns'/> </error> </iq>
<message type='error' id='7h3baci9'> <error type='modify'> <undefined-condition xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <text xml:lang='en' xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'> [ ... application-specific information ... ] </text> <too-many-parameters xmlns='http://example.org/ns'/> </error> </message>
An entity that receives an application-specific error condition it does not understand MUST ignore that condition but appropriately process the rest of the error stanza.
理解していないアプリケーション固有のエラー条件を受け取るエンティティは、その条件を無視する必要がありますが、残りのエラースタンザを適切に処理する必要があります。
Although the message, presence, and IQ stanzas provide basic semantics for messaging, availability, and request-response interactions, XMPP uses XML namespaces (see [XML-NAMES]) to extend the basic stanza syntax for the purpose of providing additional functionality.
メッセージ、存在、およびIQスタンザは、メッセージング、可用性、およびリクエスト応答の相互作用の基本的なセマンティクスを提供しますが、XMPPはXMLネームスペース([XML-Namesを参照]を参照)を使用して、追加の機能を提供するために基本的なスタンザ構文を拡張します。
A message or presence stanza MAY contain one or more optional child elements specifying content that extends the meaning of the message (e.g., an XHTML-formatted version of the message body as described in [XEP-0071]), and an IQ stanza of type "get" or "set" MUST contain one such child element. Such a child element MAY have any name and MUST possess a namespace declaration (other than "jabber:client", "jabber: server", or "http://etherx.jabber.org/streams") that defines the data contained within the child element. Such a child element is called an "extension element". An extension element can be included either at the direct child level of the stanza or in any mix of levels.
メッセージまたは存在スタンザには、メッセージの意味を拡張するコンテンツを指定する1つまたは複数のオプションの子要素が含まれている場合があります(たとえば、[XEP-0071]に記載されているメッセージ本文のXHTML形式のバージョン)、およびタイプのIQスタンザ「get」または「set」には、そのような子要素が1つ含まれている必要があります。このような子要素には名前があり、名前空間宣言(「Jabber:client」、「jabber:server」、または「http://etherx.jabber.org/streams」)を所有する必要があります。子要素。このような子要素は、「拡張要素」と呼ばれます。拡張要素は、スタンザの直接の子レベルまたはレベルの任意の組み合わせのいずれかに含めることができます。
Similarly, "extension attributes" are allowed. That is: a stanza itself (i.e., an <iq/>, <message/>, or <presence/> element qualified by the "jabber:client" or "jabber:server" content namespace) or any child element of such a stanza (whether an extension element or a child element qualified by the content namespace) MAY also include one or more attributes qualified by XML namespaces other than the content namespace or the reserved "http://www.w3.org/XML/1998/namespace" namespace (including the so-called "empty namespace" if the attribute is not prefixed as described under [XML-NAMES]).
同様に、「拡張属性」が許可されています。つまり、スタンザ自体(すなわち、<iq/>、<メッセージ/>、または<存在/>要素「jabber:client」または「jabber:server」コンテンツ名空間によって資格がある)またはそのような子の任意の子要素Stanza(コンテンツネームスペースで資格のある拡張要素または子要素のいずれか)には、コンテンツネームスペースまたは予約済みの「http://www.w3.org/xml/1998/以外のXMLネームスペースが認定された1つ以上の属性が含まれている場合があります。namespace "namespace(属性が[xml-names]に記載されているようにプレフィックスが付けられていない場合、いわゆる「空の名前空間」を含む)。
Interoperability Note: For the sake of backward compatibility and maximum interoperability, an entity that generates a stanza SHOULD NOT include such attributes in the stanza itself or in child elements of the stanza that are qualified by the content namespaces "jabber:client" or "jabber:server" (e.g., the <body/> child of the <message/> stanza).
相互運用性注:後方互換性と最大の相互運用性のために、スタンザを生成するエンティティは、スタンザ自体やコンテンツネームスペース「Jabber:クライアント」または「Jabber」によって資格のあるスタンザの子要素にそのような属性を含めるべきではありません。:server "(例:<メッセージ/>スタンザの<body/>子)。
An extension element or extension attribute is said to be "extended content" and the qualifying namespace for such an element or attribute is said to be an "extended namespace".
拡張要素または拡張属性は「拡張コンテンツ」であると言われ、そのような要素または属性の適格な名前空間は「拡張名空間」と言われています。
Informational Note: Although extended namespaces for XMPP are commonly defined by the XMPP Standards Foundation (XSF) and by the IETF, no specification or IETF standards action is necessary to define extended namespaces, and any individual or organization is free to define XMPP extensions.
情報ノート:XMPPの拡張名空間は一般にXMPP標準財団(XSF)によって定義されており、IETFによって定義されていますが、拡張名空間を定義するためには仕様またはIETF標準のアクションは必要ありません。
To illustrate these concepts, several examples follow.
これらの概念を説明するために、いくつかの例が続きます。
The following stanza contains one direct child element whose extended namespace is 'jabber:iq:roster':
次のスタンザには、拡張された名前空間が「ジャバー:IQ:名簿」である1つの直接の子要素が含まれています。
<iq from='juliet@capulet.com/balcony' id='h83vxa4c' type='get'> <query xmlns='jabber:iq:roster'/> </iq>
The following stanza contains two direct child elements with two different extended namespaces.
次のスタンザには、2つの異なる拡張名空間を持つ2つの直接の子要素が含まれています。
<presence from='juliet@capulet.com/balcony'> <c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://code.google.com/p/exodus' ver='QgayPKawpkPSDYmwT/WM94uAlu0='/> <x xmlns='vcard-temp:x:update'> <photo>sha1-hash-of-image</photo> </x> </presence>
The following stanza contains two child elements, one of which is qualified by the "jabber:client" or "jabber:server" content namespace and one of which is qualified by an extended namespace; the extension element in turn contains a child element that is qualified by a different extended namespace.
次のスタンザには2つの子要素が含まれており、そのうちの1つは「Jabber:client」または「jabber:server」コンテンツネームスペースによって資格があり、そのうちの1つは拡張名空間で資格があります。拡張要素には、別の拡張名空間によって適格な子要素が含まれています。
<message to='juliet@capulet.com'> <body>Hello?</body> <html xmlns='http://jabber.org/protocol/xhtml-im'> <body xmlns='http://www.w3.org/1999/xhtml'> <p style='font-weight:bold'>Hello?</p> </body> </html> </message>
It is conventional in the XMPP community for implementations to not generate namespace prefixes for elements that are qualified by extended namespaces (in the XML community, this convention is sometimes called "prefix-free canonicalization"). However, if an implementation generates such namespace prefixes then it MUST include the namespace declaration in the stanza itself or a child element of the stanza, not in the stream header (see Section 4.8.4).
XMPPコミュニティでは、拡張名空間によって適格な要素の名前空間プレフィックスを生成しないようにXMPPコミュニティで従来のものです(XMLコミュニティでは、この規則は「プレフィックスフリーカノニカル化」と呼ばれることもあります)。ただし、実装がそのような名前空間のプレフィックスを生成する場合、Stanza自体の名前空間宣言またはストリームヘッダーではなくStanzaの子要素を含める必要があります(セクション4.8.4を参照)。
Routing entities (typically servers) SHOULD try to maintain prefixes when serializing XML stanzas for processing, but receiving entities MUST NOT depend on the prefix strings to have any particular value (the allowance for the 'stream' prefix, described under Section 4.8.5, is an exception to this rule, albeit for streams rather than stanzas).
ルーティングエンティティ(通常はサーバー)は、処理のためにXMLスタンザをシリアル化するときにプレフィックスを維持しようとする必要がありますが、受信エンティティは特定の値を持つようにプレフィックス文字列に依存してはなりません(セクション4.8.5で説明する「ストリーム」プレフィックスの許容値はスタンザではなくストリームではありますが、このルールの例外です。
Support for any given extended namespace is OPTIONAL on the part of any implementation. If an entity does not understand such a namespace, the entity's expected behavior depends on whether the entity is (1) the recipient or (2) a server that is routing or delivering the stanza to the recipient.
特定の拡張名空間のサポートは、実装の側でオプションです。エンティティがそのような名前空間を理解していない場合、エンティティの予想される動作は、エンティティが(1)受信者であるか、(2)スタンザを受信者にルーティングまたは配信しているサーバーであるかどうかによって異なります。
If a recipient receives a stanza that contains an element or attribute it does not understand, it MUST NOT attempt to process that XML data and instead MUST proceed as follows.
受信者が理解できない要素または属性を含むスタンザを受け取った場合、そのXMLデータを処理しようとしてはならず、代わりに次のように進める必要があります。
o If an intended recipient receives a message stanza whose only child element is qualified by a namespace it does not understand, then depending on the XMPP application it MUST either ignore the entire stanza or return a stanza error, which SHOULD be <service-unavailable/> (Section 8.3.3.19).
o 意図した受信者が唯一の子要素が名前空間で認定されているメッセージを受け取った場合、XMPPアプリケーションに応じて、スタンザ全体を無視するか、スタンザエラーを返す必要があります。(セクション8.3.3.19)。
o If an intended recipient receives a presence stanza whose only child element is qualified by a namespace it does not understand, then it MUST ignore the child element by treating the presence stanza as if it contained no child element.
o 意図した受信者が、唯一の子要素が名前空間で認定されている唯一の子要素を理解していないスタンザを受け取った場合、存在スタンザを子供の要素が含まれていないかのように扱うことにより、子供の要素を無視する必要があります。
o If an intended recipient receives a message or presence stanza that contains XML data qualified by a namespace it does not understand, then it MUST ignore the portion of the stanza qualified by the unknown namespace.
o 意図した受信者が、わからない名前空間で適格なXMLデータを含むメッセージまたは存在スタンザを受け取った場合、未知の名前空間で資格のあるスタンザの部分を無視する必要があります。
o If an intended recipient receives an IQ stanza of type "get" or "set" containing a child element qualified by a namespace it does not understand, then the entity MUST return an IQ stanza of type "error" with an error condition of <service-unavailable/>.
o 意図した受信者が、わからない名前空間で資格のある子要素を含むタイプ「get」または「set」のIQスタンザを受信した場合、エンティティは<サービスのエラー条件で「エラー」のIQスタンザを返す必要があります。-Unavailable/>。
If a server handles a stanza that is intended for delivery to another entity and that contains a child element it does not understand, it MUST route the stanza unmodified to a remote server or deliver the stanza unmodified to a connected client associated with a local account.
サーバーが別のエンティティに配信することを目的としており、理解できない子要素を含むスタンザを処理する場合、スタンザをリモートサーバーに変更していないことをルーティングするか、ローカルアカウントに関連付けられた接続されたクライアントに修正されていないスタンザを配信する必要があります。
The detailed examples in this section further illustrate the protocols defined in this specification.
このセクションの詳細な例は、この仕様で定義されているプロトコルをさらに示しています。
The following examples show the XMPP data flow for a client negotiating an XML stream with a server, exchanging XML stanzas, and closing the negotiated stream. The server is "im.example.com", the server requires use of TLS, the client authenticates via the SASL SCRAM-SHA-1 mechanism as <juliet@im.example.com> with a password of "r0m30myr0m30", and the client binds a client-submitted resource to the stream. It is assumed that before sending the initial stream header, the client has already resolved an SRV record of _xmpp-client._tcp.im.example.com and has opened a TCP connection to the advertised port at the resolved IP address.
次の例は、サーバーとXMLストリームを交渉し、XMLスタンザを交換し、ネゴシエートされたストリームを閉じるクライアントのXMPPデータフローを示しています。サーバーは「im.example.com」であり、サーバーはTLSの使用を必要とします。クライアントは、「R0m30myr0m30」のパスワードを使用して、<juliet@im.example.comとしてSASL Scram-Sha-1メカニズムを介して認証されます。クライアントは、クライアントがサビされたリソースをストリームにバインドします。初期ストリームヘッダーを送信する前に、クライアントは_xmpp-client._tcp.im.example.comのSRVレコードを既に解決し、解決されたIPアドレスで広告されたポートへのTCP接続を開いていると想定されています。
Step 1: Client initiates stream to server:
ステップ1:クライアントはストリームをサーバーに開始します:
C: <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
Step 2: Server responds by sending a response stream header to client:
ステップ2:サーバーは、クライアントに応答ストリームヘッダーを送信することで応答します。
S: <stream:stream from='im.example.com' id='t7AMCin9zjMNwQKDnplntZPIDEI=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
Step 3: Server sends stream features to client (only the STARTTLS extension at this point, which is mandatory-to-negotiate):
ステップ3:サーバーは、ストリーム機能をクライアントに送信します(この時点でのstartTLS拡張機能のみ、これは必須であり、ネゴート化することが必須です):
S: <stream:features> <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'> <required/> </starttls> </stream:features>
Step 4: Client sends STARTTLS command to server:
ステップ4:クライアントはStartTLSコマンドをサーバーに送信します。
C: <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
Step 5: Server informs client that it is allowed to proceed:
ステップ5:サーバーは、続行が許可されていることをクライアントに通知します。
S: <proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
Step 5 (alt): Server informs client that STARTTLS negotiation has failed, closes the XML stream, and terminates the TCP connection (thus, the stream negotiation process ends unsuccessfully and the parties do not move on to the next step):
ステップ5(ALT):サーバーは、StartTLS交渉が失敗し、XMLストリームを閉じ、TCP接続を終了することをクライアントに通知します(したがって、ストリーム交渉プロセスは失敗し、当事者は次のステップに進まない):
S: <failure xmlns='urn:ietf:params:xml:ns:xmpp-tls'/> </stream:stream>
Step 6: Client and server attempt to complete TLS negotiation over the existing TCP connection (see [TLS] for details).
ステップ6:クライアントとサーバーは、既存のTCP接続に関するTLS交渉を完了しようとします(詳細については[TLS]を参照)。
Step 7: If TLS negotiation is successful, client initiates a new stream to server over the TLS-protected TCP connection:
ステップ7:TLS交渉が成功した場合、クライアントはTLS保護されたTCP接続を介してサーバーに新しいストリームを開始します。
C: <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
Step 7 (alt): If TLS negotiation is unsuccessful, server closes TCP connection (thus, the stream negotiation process ends unsuccessfully and the parties do not move on to the next step):
ステップ7(ALT):TLS交渉が失敗した場合、サーバーはTCP接続を閉じます(したがって、ストリームネゴシエーションプロセスは失敗し、当事者は次のステップに進まない):
Step 8: Server responds by sending a stream header to client along with any available stream features:
ステップ8:サーバーは、利用可能なストリーム機能とともにクライアントにストリームヘッダーを送信することで応答します。
S: <stream:stream from='im.example.com' id='vgKi/bkYME8OAj4rlXMkpucAqe4=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <stream:features> <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <mechanism>SCRAM-SHA-1-PLUS</mechanism> <mechanism>SCRAM-SHA-1</mechanism> <mechanism>PLAIN</mechanism> </mechanisms> </stream:features>
Step 9: Client selects an authentication mechanism (in this case, SCRAM-SHA-1), including initial response data:
ステップ9:クライアントは、初期応答データを含む認証メカニズム(この場合はScram-Sha-1)を選択します。
C: <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="SCRAM-SHA-1"> biwsbj1qdWxpZXQscj1vTXNUQUF3QUFBQU1BQUFBTlAwVEFBQUFBQUJQVTBBQQ== </auth>
The decoded base 64 data is "n,,n=juliet,r=oMsTAAwAAAAMAAAANP0TAAAAAABPU0AA".
デコードされたベース64データは「n ,, n = juliet、r = omstaawaaaaaaaanp0taaaaaabpu0aa」です。
Step 10: Server sends a challenge:
ステップ10:サーバーはチャレンジを送信します:
S: <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> cj1vTXNUQUF3QUFBQU1BQUFBTlAwVEFBQUFBQUJQVTBBQWUxMjQ2OTViLTY5Y TktNGRlNi05YzMwLWI1MWIzODA4YzU5ZSxzPU5qaGtZVE0wTURndE5HWTBaaT AwTmpkbUxUa3hNbVV0TkRsbU5UTm1ORE5rTURNeixpPTQwOTY= </challenge>
The decoded base 64 data is "r=oMsTAAwAAAAMAAAANP0TAAAAAABPU0AAe12469 5b-69a9-4de6-9c30- b51b3808c59e,s=NjhkYTM0MDgtNGY0Zi00NjdmLTkxMmUtNDlmNTNmNDNkMDMz,i=409 6" (line breaks not included in actual data).
The decoded base 64 data is "r=oMsTAAwAAAAMAAAANP0TAAAAAABPU0AAe12469 5b-69a9-4de6-9c30- b51b3808c59e,s=NjhkYTM0MDgtNGY0Zi00NjdmLTkxMmUtNDlmNTNmNDNkMDMz,i=409 6" (line breaks not included in actual data).
Step 11: Client sends a response:
ステップ11:クライアントは応答を送信します。
C: <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> Yz1iaXdzLHI9b01zVEFBd0FBQUFNQUFBQU5QMFRBQUFBQUFCUFUwQUFlMTI0N jk1Yi02OWE5LTRkZTYtOWMzMC1iNTFiMzgwOGM1OWUscD1VQTU3dE0vU3ZwQV RCa0gyRlhzMFdEWHZKWXc9 </response>
The decoded base 64 data is "c=biws,r=oMsTAAwAAAAMAAAANP0TAAAAAABPU0 AAe124695b-69a9-4de6-9c30-b51b3808c59e,p=UA57tM/ SvpATBkH2FXs0WDXvJYw=" (line breaks not included in actual data).
デコードされたベース64データは、「C = biws、r = omstaawaaaamaaaaanp0taaaaabpu0 aae124695b-69a9-4de6-9c30-b51b3808c59e、p = ua57tm/ svpaTbkh2fffffffffffffff。
Step 12: Server informs client of success, including additional data with success:
ステップ12:サーバーは、クライアントに成功を通知します。これには、成功の追加データが含まれます。
S: <success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> dj1wTk5ERlZFUXh1WHhDb1NFaVc4R0VaKzFSU289 </success>
The decoded base 64 data is "v=pNNDFVEQxuXxCoSEiW8GEZ+1RSo=".
デコードされたベース64データは「V = PNNDFVEQXXXCOSEIW8GEZ 1RSO =」です。
Step 12 (alt): Server returns a SASL error to client (thus, the stream negotiation process ends unsuccessfully and the parties do not move on to the next step):
ステップ12(ALT):サーバーはSASLエラーをクライアントに返します(したがって、ストリームネゴシエーションプロセスは失敗し、当事者は次のステップに進まない):
S: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <not-authorized/> </failure> </stream>
Step 13: Client initiates a new stream to server:
ステップ13:クライアントはサーバーへの新しいストリームを開始します:
C: <stream:stream from='juliet@im.example.com' to='im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
Step 14: Server responds by sending a stream header to client along with supported features (in this case, resource binding):
ステップ14:サーバーは、サポートされている機能(この場合はリソースバインディング)とともに、クライアントにストリームヘッダーを送信することで応答します。
S: <stream:stream from='im.example.com' id='gPybzaOzBmaADgxKXu9UClbprp0=' to='juliet@im.example.com' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
S: <stream:features> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/> </stream:features>
Upon being informed that resource binding is mandatory-to-negotiate, the client needs to bind a resource to the stream; here we assume that the client submits a human-readable text string.
リソースバインディングが必須であることを通知されると、クライアントはリソースをストリームにバインドする必要があります。ここでは、クライアントが人間の読み取り可能なテキスト文字列を提出すると仮定します。
Step 15: Client binds a resource:
ステップ15:クライアントはリソースにバインドします:
C: <iq id='yhc13a95' type='set'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <resource>balcony</resource> </bind> </iq>
Step 16: Server accepts submitted resourcepart and informs client of successful resource binding:
ステップ16:サーバーは、送信されたリソースパートを受け入れ、クライアントに成功したリソースバインディングを通知します。
S: <iq id='yhc13a95' type='result'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <jid> juliet@im.example.com/balcony </jid> </bind> </iq>
Step 16 (alt): Server returns error to client (thus, the stream negotiation process ends unsuccessfully and the parties do not move on to the next step):
ステップ16(ALT):サーバーはクライアントにエラーを返します(したがって、ストリームネゴシエーションプロセスは失敗し、当事者は次のステップに進まない):
S: <iq id='yhc13a95' type='error'> <error type='cancel'> <conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq>
Now the client is allowed to send XML stanzas over the negotiated stream.
これで、クライアントはXMLスタンザを交渉済みのストリームに送信することができます。
C: <message from='juliet@im.example.com/balcony' id='ju2ba41c' to='romeo@example.net' type='chat' xml:lang='en'> <body>Art thou not Romeo, and a Montague?</body> </message>
If necessary, sender's server negotiates XML streams with intended recipient's server (see Section 9.2).
必要に応じて、送信者のサーバーは、意図した受信者のサーバーでXMLストリームを交渉します(セクション9.2を参照)。
The intended recipient replies, and the message is delivered to the client.
意図した受信者が返信し、メッセージがクライアントに配信されます。
E: <message from='romeo@example.net/orchard' id='ju2ba41c' to='juliet@im.example.com/balcony' type='chat' xml:lang='en'> <body>Neither, fair saint, if either thee dislike.</body> </message>
The client can subsequently send and receive an unbounded number of subsequent XML stanzas over the stream.
その後、クライアントは、ストリーム上に、組み込みのない数のXMLスタンザを送信して受信できます。
Desiring to send no further messages, the client closes its stream to the server but waits for incoming data from the server.
それ以上のメッセージを送信しないことを望んでいるため、クライアントはサーバーにストリームを閉じますが、サーバーからの受信データを待っています。
C: </stream:stream>
Consistent with Section 4.4, the server might send additional data to the client and then closes its stream to the client.
セクション4.4と一致して、サーバーは追加データをクライアントに送信し、そのストリームをクライアントに閉じることができます。
S: </stream:stream>
The client now sends a TLS close_notify alert, receives a responding close_notify alert from the server, and then terminates the underlying TCP connection.
クライアントは、TLS close_notifyアラートを送信し、サーバーから応答するclose_notifyアラートを受信し、基礎となるTCP接続を終了します。
The following examples show the data flow for a server negotiating an XML stream with a peer server, exchanging XML stanzas, and closing the negotiated stream. The initiating server ("Server1") is im.example.com; the receiving server ("Server2") is example.net and it requires use of TLS; im.example.com presents a certificate and authenticates via the SASL EXTERNAL mechanism. It is assumed that before sending the initial stream header, Server1 has already resolved an SRV record of _xmpp-server._tcp.example.net and has opened a TCP connection to the advertised port at the resolved IP address. Note how Server1 declares the content namespace "jabber: server" as the default namespace and uses prefixes for stream-related elements, whereas Server2 uses prefix-free canonicalization.
次の例は、ピアサーバーでXMLストリームを交渉し、XMLスタンザを交換し、ネゴシエートされたストリームを閉じるサーバーのデータフローを示しています。開始サーバー( "server1")はim.example.comです。受信サーバー( "server2")はexample.netであり、TLSの使用が必要です。im.example.comは、SASL外部メカニズムを介して証明書を提示し、認証します。初期ストリームヘッダーを送信する前に、server1は_xmpp-server._tcp.example.netのSRVレコードを既に解決し、解決されたIPアドレスで広告されたポートへのTCP接続を開いていると想定されています。server1がコンテンツネームスペース「jabber:server」をデフォルトの名前空間として宣言し、ストリーム関連要素にプレフィックスを使用する方法に注意してください。
Step 1: Server1 initiates stream to Server2:
ステップ1:Server1はStreamをServer2に開始します。
S1: <stream:stream from='im.example.com' to='example.net' version='1.0' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams'>
Step 2: Server2 responds by sending a response stream header to Server1:
ステップ2:Server2は、応答ストリームヘッダーをServer1に送信して応答します。
S2: <stream from='example.net' id='hTiXkW+ih9k2SqdGkk/AZi0OJ/Q=' to='im.example.com' version='1.0' xmlns='http://etherx.jabber.org/streams'>
Step 3: Server2 sends stream features to Server1 (only the STARTTLS extension at this point, which is mandatory-to-negotiate):
ステップ3:server2は、ストリーム機能をServer1に送信します(この時点でのstartTLS拡張機能のみ、これは必須です。これは必須です):
S2: <features xmlns='http://etherx.jabber.org/streams'> <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'> <required/> </starttls> </features>
Step 4: Server1 sends the STARTTLS command to Server2:
ステップ4:server1 starttlsコマンドをserver2に送信します。
S1: <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
Step 5: Server2 informs Server1 that it is allowed to proceed:
ステップ5:Server2は、server1に続行できることを通知します。
S2: <proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
Step 5 (alt): Server2 informs Server1 that STARTTLS negotiation has failed, closes the stream, and terminates the TCP connection (thus, the stream negotiation process ends unsuccessfully and the parties do not move on to the next step):
ステップ5(alt):Server2は、StartTLS交渉が失敗し、ストリームを閉じ、TCP接続を終了することをServer1に通知します(したがって、ストリームネゴシエーションプロセスは失敗し、当事者は次のステップに進まない):
S2: <failure xmlns='urn:ietf:params:xml:ns:xmpp-tls'/> </stream>
Step 6: Server1 and Server2 attempt to complete TLS negotiation via TCP (see [TLS] for details).
ステップ6:Server1とServer2は、TCPを介したTLSネゴシエーションを完了しようとします(詳細については[TLS]を参照)。
Step 7: If TLS negotiation is successful, Server1 initiates a new stream to Server2 over the TLS-protected TCP connection:
ステップ7:TLS交渉が成功した場合、Server1はTLS保護されたTCP接続を介してServer2に新しいストリームを開始します。
S1: <stream:stream from='im.example.com' to='example.net' version='1.0' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams'>
Step 7 (alt): If TLS negotiation is unsuccessful, Server2 closes the TCP connection (thus, the stream negotiation process ends unsuccessfully and the parties do not move on to the next step).
ステップ7(ALT):TLS交渉が失敗した場合、Server2はTCP接続を閉じます(したがって、ストリームネゴシエーションプロセスは失敗し、当事者は次のステップに進みません)。
Step 8: Server2 sends a response stream header to Server1 along with available stream features (including a preference for the SASL EXTERNAL mechanism):
ステップ8:Server2は、利用可能なストリーム機能(SASL外部メカニズムの好みを含む)とともに、応答ストリームヘッダーをServer1に送信します。
S2: <stream from='example.net' id='RChdjlgj/TIBcbT9Keu31zDihH4=' to='im.example.com' version='1.0' xmlns='http://etherx.jabber.org/streams'>
S2: <features xmlns='http://etherx.jabber.org/streams'> <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <mechanism>EXTERNAL</mechanism> </mechanisms> </features>
Step 9: Server1 selects the EXTERNAL mechanism (including an empty response of "="):
ステップ9:server1外部メカニズムを選択します(「=」の空の応答を含む):
S1: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='EXTERNAL'>=</auth>
Step 10: Server2 returns success:
ステップ10:Server2は成功を返します:
S2: <success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
Step 10 (alt): Server2 informs Server1 of failed authentication (thus, the stream negotiation process ends unsuccessfully and the parties do not move on to the next step):
ステップ10(ALT):Server2に認証の失敗をServer1に通知します(したがって、ストリームネゴシエーションプロセスは失敗し、当事者は次のステップに進まない):
S2: <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <not-authorized/> </failure> </stream>
Step 11: Server1 initiates a new stream to Server2:
ステップ11:server1は、サーバーへの新しいストリームを開始します。
S1: <stream:stream from='im.example.com' to='example.net' version='1.0' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams'>
Step 12: Server2 responds by sending a stream header to Server1 along with any additional features (or, in this case, an empty features element):
ステップ12:Server2は、追加機能(またはこの場合は空の機能要素)とともにServer1にストリームヘッダーを送信することで応答します。
S2: <stream from='example.net' id='MbbV2FeojySpUIP6J91qaa+TWHM=' to='im.example.com' version='1.0' xmlns='http://etherx.jabber.org/streams'>
S2: <features xmlns='http://etherx.jabber.org/streams'/>
Now Server1 is allowed to send XML stanzas to Server2 over the negotiated stream from im.example.com to example.net; here we assume that the transferred stanzas are those shown earlier for client-to-server communication, albeit over a server-to-server stream qualified by the 'jabber:server' namespace.
ここで、Server1は、im.example.comからembler.netにネゴシエートされたストリームを介してXML StanzasをServer2に送信することができます。ここでは、転送されたスタンザは、「Jabber:Server」名前空間で資格があるサーバーからサーバーへのストリームを介して、クライアント間通信のために以前に示されているスタンザであると仮定します。
Server1 sends XML stanza to Server2:
server1 xml stanzaをserver2に送信します。
S1: <message from='juliet@im.example.com/balcony' id='ju2ba41c' to='romeo@example.net' type='chat' xml:lang='en'> <body>Art thou not Romeo, and a Montague?</body> </message>
Desiring to send no further messages, Server1 closes its stream to Server2 but waits for incoming data from Server2. (In practice, the stream would most likely remain open for some time, since Server1 and Server2 do not immediately know if the stream will be needed for further communication.) S1: </stream:stream>
それ以上のメッセージを送信しないことを望んでいるServer1は、そのストリームをServer2に閉じますが、Server2からの受信データを待っています。(実際には、Server1とServer2は、さらなる通信にストリームが必要かどうかをすぐにわからないため、ストリームはしばらく開かれたままです。)S1:</ストリーム:ストリーム>
Consistent with the recommended stream closing handshake, Server2 closes the stream as well:
推奨されるストリームクロージングハンドシェイクと一致して、Server2はストリームも閉じます。
S2: </stream>
Server1 now sends a TLS close_notify alert, receives a responding close_notify alert from Server2, and then terminates the underlying TCP connection.
server1は、tls close_notifyアラートを送信し、server2から応答するclose_notifyアラートを受信し、基礎となるTCP接続を終了します。
Each server implementation will contain its own logic for processing stanzas it receives. Such logic determines whether the server needs to route a given stanza to another domain, deliver it to a local entity (typically a connected client associated with a local account), or handle it directly within the server itself. This section provides general rules for processing XML stanzas. However, particular XMPP applications MAY specify delivery rules that modify or supplement the following rules (e.g., a set of delivery rules for instant messaging and presence applications is defined in [XMPP-IM]).
各サーバーの実装には、受信するスタンザを処理するための独自のロジックが含まれます。このようなロジックは、サーバーが特定のスタンザを別のドメインにルーティングするか、ローカルエンティティ(通常はローカルアカウントに関連付けられた接続されたクライアント)に配信するか、サーバー自体内で直接処理する必要があるかどうかを決定します。このセクションでは、XMLスタンザを処理するための一般的なルールを提供します。ただし、特定のXMPPアプリケーションは、次のルールを変更または補完する配信ルールを指定する場合があります(たとえば、インスタントメッセージングおよび存在アプリケーションの配信ルールのセットは[XMPP-IM]で定義されています)。
An XMPP server MUST ensure in-order processing of the stanzas and other XML elements it receives over a given input stream from a connected client or remote server.
XMPPサーバーは、接続されたクライアントまたはリモートサーバーから特定の入力ストリームで受信するスタンザおよびその他のXML要素の順序処理を確保する必要があります。
In-order processing applies (a) to any XML elements used to negotiate and manage XML streams, and (b) to all uses of XML stanzas, including but not limited to the following:
順序の処理は、(a)XMLストリームの交渉と管理に使用されるxml要素に適用されます。
1. Stanzas sent by a client to its server or to its own bare JID for direct processing by the server (e.g., in-order processing of a roster get and initial presence as described in [XMPP-IM]).
1. Stanzasは、クライアントからサーバーまたはそれ自体の裸のJIDに送信され、サーバーによる直接処理のために(例:[XMPP-IM]で説明されているように、名簿の取得と初期存在の存在)。
2. Stanzas sent by a connected client and intended for delivery to another entity associated with the server (e.g., stanzas addressed from <juliet@im.example.com> to <nurse@im.example.com>). The server MUST ensure that it delivers stanzas addressed to the intended recipient in the order it receives them over the input stream from the sending client, treating stanzas addressed to the bare JID and the full JID of the intended recipient as equivalent for delivery purposes.
2. 接続されたクライアントから送信され、サーバーに関連付けられている別のエンティティへの配信を目的としたスタンザ(例:<juliet@im.example.com>から<nirs@im.example.com>に宛てたスタンザ)。サーバーは、送信クライアントから入力ストリームを介して受信した順序で、意図した受信者にアドレス指定されたスタンザを配信することを確認する必要があります。
3. Stanzas sent by a connected client and intended for delivery to an entity located at a remote domain (e.g., stanzas addressed from <juliet@im.example.com> to <romeo@example.net>). The routing server MUST ensure that it routes stanzas addressed to the intended recipient in the order it receives them over the input stream from the sending client, treating stanzas addressed to the bare JID and the full JID of the intended recipient as equivalent for routing purposes. To help ensure in-order processing, the routing server MUST route such stanzas over a single output stream to the remote domain, rather than sending some stanzas over one server-to-server stream and other stanzas over another server-to-server stream.
3. 接続されたクライアントから送信され、リモートドメインにあるエンティティへの配信を目的としたスタンザ(たとえば、<juliet@im.example.com>から<romeo@example.net>に宛てたスタンザ)。ルーティングサーバーは、送信クライアントから入力ストリームを介して受信した順序で、意図した受信者にアドレス指定されたスタンザをルーティングすることを確認する必要があります。注文の処理を確保するために、ルーティングサーバーは、あるサーバーからサーバーへのストリームや他のスタンザを別のサーバーからサーバーストリーム上に送信するのではなく、そのようなスタンザを単一の出力ストリーム上にリモートドメインにルーティングする必要があります。
4. Stanzas routed from one server to another server for delivery to an entity associated with the remote domain (e.g., stanzas addressed from <juliet@im.example.com> to <romeo@example.net> and routed by <im.example.com> over a server-to-server stream to <example.net>). The delivering server MUST ensure that it delivers stanzas to the intended recipient in the order it receives them over the input stream from the routing server, treating stanzas addressed to the bare JID and the full JID of the intended recipient as equivalent for delivery purposes.
4. スタンザは、あるサーバーから別のサーバーにルーティングして、リモートドメインに関連付けられたエンティティに配信するために別のサーバーにルーティングされました(たとえば、<juliet@im.example.com>から<romeo@example.net>に宛てられ、<im.example.comによってルーティングされました>サーバーからサーバーへのストリームを<example.net>)。配信サーバーは、ルーティングサーバーから入力ストリームを介して受信した順序でスタンザを意図した受信者に配信し、ベアジッドと対象となるレシピエントの完全なJIDを配信目的に相当するものとして処理することを確認する必要があります。
5. Stanzas sent by one server to another server for direct processing by the server that is hosting the remote domain (e.g., stanzas addressed from <im.example.com> to <example.net>).
5. Stanzasは、リモートドメインをホストしているサーバーによる直接処理のために、あるサーバーから別のサーバーに送信されました(例:<im.example.com>から<example.net>からアドレス指定されたスタンザ)。
If the server's processing of a particular request could have an effect on its processing of subsequent data it might receive over that input stream (e.g., enforcement of communication policies), it MUST suspend processing of subsequent data until it has processed the request.
サーバーの特定の要求の処理が、その入力ストリーム(たとえば、通信ポリシーの施行)で受信する後続データの処理に影響を与える可能性がある場合、リクエストが処理されるまで後続データの処理を一時停止する必要があります。
In-order processing applies only to a single input stream. Therefore, a server is not responsible for ensuring the coherence of data it receives across multiple input streams associated with the same local account (e.g., stanzas received over two different input streams from <juliet@im.example.com/balcony> and <juliet@im.example.com/chamber>) or the same remote domain (e.g., two different input streams negotiated by a remote domain; however, a server MAY close the stream with a <conflict/> stream error (Section 4.9.3.3) if a remote server attempts to negotiate more than one stream, as described under Section 4.9.3.3).
注文処理は、単一の入力ストリームにのみ適用されます。したがって、サーバーは、同じローカルアカウントに関連付けられた複数の入力ストリームで受信するデータのコヒーレンスを確保する責任を負いません(たとえば、スタンザは<juliet@im.example.com/balcony>と<julietから2つの異なる入力ストリームを受け取りました。@im.example.com/chamber>)または同じリモートドメイン(例えば、リモートドメインによってネゴシエートされた2つの異なる入力ストリーム。ただし、サーバーは<競合/>ストリームエラー(セクション4.9.3.3)でストリームを閉じることができますセクション4.9.3.3で説明されているように、リモートサーバーが複数のストリームを交渉しようとした場合。
At high level, there are three primary considerations at play in server processing of XML stanzas, which sometimes are at odds but need to be managed in a consistent way:
高レベルでは、XMLスタンザのサーバー処理には3つの主要な考慮事項があります。これは、対立することもありますが、一貫した方法で管理する必要があります。
1. It is good to deliver a stanza to the intended recipient if possible.
1. 可能であれば、意図した受信者にスタンザを届けるのは良いことです。
2. If a stanza cannot be delivered, it is helpful to inform the sender.
2. スタンザを配達できない場合、送信者に通知することは役立ちます。
3. It is bad to facilitate directory harvesting attacks (Section 13.11) and presence leaks (Section 13.10.2).
3. ディレクトリの収穫攻撃(セクション13.11)と存在漏れ(セクション13.10.2)を促進するのは悪いことです。
With regard to possible delivery-related attacks, the following points need to be kept in mind:
配信関連の攻撃の可能性に関して、次のポイントを念頭に置いておく必要があります。
1. From the perspective of an attacker, there is little if any effective difference between the server's (i) delivering the stanza or storing it offline for later delivery (see [XMPP-IM]) and (ii) silently ignoring it (because an error is not returned immediately in any of those cases); therefore, in scenarios where a server delivers a stanza or places the stanza into offline storage for later delivery, it needs to silently ignore the stanza if that account does not exist.
1. 攻撃者の観点から見ると、サーバーの(i)スタンザを配信するか、後で配達するためにオフラインで保存する([xmpp-im]を参照)と(ii)静かに無視することには、効果的な違いはほとんどありません(エラーはエラーがあるためですこれらの場合にはすぐに返されません);したがって、サーバーがスタンザを配信したり、スタンザをオフラインストレージに置いて後で配信するシナリオでは、そのアカウントが存在しない場合はスタンザを静かに無視する必要があります。
2. How a server processes stanzas sent to the bare JID <localpart@domainpart> has implications for directory harvesting, because an attacker could determine whether an account exists if the server responds differently depending on whether there is an account for a given bare JID.
2. StanzasがBare Jid <localPart@domainpart>に送信されるスタンザを処理する方法は、攻撃者が特定の裸のjidのアカウントがあるかどうかに応じて、サーバーが異なって応答する場合にアカウントが存在するかどうかを判断できるためです。
3. How a server processes stanzas sent to a full JID has implications for presence leaks, because an attacker could send requests to multiple full JIDs and receive different replies depending on whether the user has a device currently online at that full JID. The use of randomized resourceparts (whether generated by the client or the server as described under Section 7) significantly helps to mitigate this attack, so it is of somewhat lesser concern than the directory harvesting attack.
3. StanzasがフルJIDに送信したサーバーの処理方法は、攻撃者が複数のフルJIDにリクエストを送信し、ユーザーが現在オンラインでそのフルJIDでデバイスを持っているかどうかに応じて異なる返信を受信できるため、存在漏れに影響を与えます。ランダム化されたリソースパートの使用(セクション7で説明されているようにクライアントまたはサーバーによって生成されたかどうか)は、この攻撃を軽減するのに大幅に役立つため、ディレクトリ収穫攻撃よりも懸念が少なくなります。
Naturally, presence is not leaked if the entity to which a user's server returns an error already knows the user's presence or is authorized to do so (e.g., by means of a presence subscription or directed presence), and a server does not enable a directory harvesting attack if it returns an error to an entity that already knows if a user exists (e.g., because the entity is in the user's contact list); these matters are discussed more fully in [XMPP-IM].
当然のことながら、ユーザーのサーバーがエラーを返すエンティティがユーザーの存在を既に知っているか、そうすることを許可されている場合(例:存在サブスクリプションまたは指示された存在によって)、存在感は漏れません。サーバーはディレクトリを有効にしない場合攻撃は、ユーザーが存在するかどうかをすでに知っているエンティティにエラーを返した場合に攻撃を収穫します(たとえば、エンティティがユーザーの連絡先リストにあるため)。これらの問題は、[xmpp-im]でより完全に議論されています。
If the stanza possesses no 'to' attribute, the server MUST handle it directly on behalf of the entity that sent it, where the meaning of "handle it directly" depends on whether the stanza is message, presence, or IQ. Because all stanzas received from other servers MUST possess a 'to' attribute, this rule applies only to stanzas received from a local entity (typically a client) that is connected to the server.
スタンザが「to」属性を所有していない場合、サーバーはそれを送信したエンティティに代わって直接処理する必要があります。「直接処理」の意味は、スタンザがメッセージ、存在、またはIQであるかどうかによって異なります。他のサーバーから受け取ったすべてのスタンザは、「to」属性を所有している必要があるため、このルールは、サーバーに接続されているローカルエンティティ(通常はクライアント)から受け取ったスタンザにのみ適用されます。
If the server receives a message stanza with no 'to' attribute, it MUST treat the message as if the 'to' address were the bare JID <localpart@domainpart> of the sending entity.
サーバーが「to」属性なしでメッセージスタンザを受信した場合、「to」アドレスが送信エンティティのbare jid <localpart@domainpart>であるかのようにメッセージを扱う必要があります。
If the server receives a presence stanza with no 'to' attribute, it MUST broadcast it to the entities that are subscribed to the sending entity's presence, if applicable ([XMPP-IM] defines the semantics of such broadcasting for presence applications).
サーバーが「to」属性なしで存在スタンザを受信した場合、該当する場合([xmpp-im]は、存在アプリケーションのためのそのような放送のセマンティクスを定義する場合、送信エンティティの存在にサブスクライブするエンティティにブロードキャストする必要があります。
If the server receives an IQ stanza with no 'to' attribute, it MUST process the stanza on behalf of the account from which received the stanza, as follows:
サーバーが「to」属性なしでIQスタンザを受信した場合、次のように、スタンザを受け取ったアカウントに代わってスタンザを処理する必要があります。
1. If the IQ stanza is of type "get" or "set" and the server understands the namespace that qualifies the payload, the server MUST handle the stanza on behalf of the sending entity or return an appropriate error to the sending entity. Although the meaning of "handle" is determined by the semantics of the qualifying namespace, in general the server will respond to the IQ stanza of type "get" or "set" by returning an appropriate IQ stanza of type "result" or "error", responding as if the server were the bare JID of the sending entity. As an example, if the sending entity sends an IQ stanza of type "get" where the payload is qualified by the 'jabber:iq:roster' namespace (as described in [XMPP-IM]), then the server will return the roster associated with the sending entity's bare JID to the particular resource of the sending entity that requested the roster.
1. IQスタンザが「取得」または「設定」タイプで、サーバーがペイロードを適格にする名前空間を理解している場合、サーバーは送信エンティティに代わってスタンザを処理するか、送信エンティティに適切なエラーを返します。「ハンドル」の意味は適格な名前空間のセマンティクスによって決定されますが、一般に、サーバーは、「結果」または「エラー」の適切なIQスタンザを返すことにより、タイプ「get」または「set」のIQスタンザに応答します。「、サーバーが送信エンティティの裸のジドであるかのように応答します。例として、送信エンティティがペイロードが「Jabber:IQ:Im)([xmpp-im]に記載されているように)によって資格がある場所で「get」タイプのIQスタンザを送信する場合、サーバーはロスターを返します送信エンティティの裸のジドに関連付けられているのは、名簿を要求した送信エンティティの特定のリソースに関連付けられています。
2. If the IQ stanza is of type "get" or "set" and the server does not understand the namespace that qualifies the payload, the server MUST return an error to the sending entity, which MUST be <service-unavailable/>.
2. IQ Stanzaが「Get」または「Set」タイプで、サーバーがペイロードの適格な名前空間を理解していない場合、サーバーは送信エンティティにエラーを返す必要があります。
3. If the IQ stanza is of type "error" or "result", the server MUST handle the error or result in accordance with the payload of the associated IQ stanza or type "get" or "set" (if there is no such associated stanza, the server MUST ignore the error or result stanza).
3. IQスタンザが「エラー」または「結果」タイプの場合、サーバーはエラーを処理するか、関連するIQスタンザのペイロードまたは「get」または「set」に従って結果に従う必要があります(そのような関連するスタンザがない場合、サーバーは、エラーまたは結果Stanzaを無視する必要があります)。
If the domainpart of the JID contained in the 'to' attribute does not match one of the configured FQDNs of the server, the server SHOULD attempt to route the stanza to the remote domain (subject to local service provisioning and security policies regarding inter-domain communication, since such communication is OPTIONAL for any given deployment). As described in the following sections, there are two possible cases.
「to」属性に含まれるJIDのドメインパートが、サーバーの構成されたFQDNのいずれかと一致しない場合、サーバーはスタンザをリモートドメインにルーティングしようとする必要があります(ローカルサービスの提供とドメイン間のセキュリティポリシーの対象となりますコミュニケーション、そのような通信は任意の展開に対してオプションであるため)。次のセクションで説明したように、2つの可能なケースがあります。
Security Warning: These rules apply only client-to-server streams. As described under Section 8.1.1.2, a server MUST NOT accept a stanza over a server-to-server stream if the domainpart of the JID in the 'to' attribute does not match an FQDN serviced by the receiving server.
セキュリティ警告:これらのルールは、クライアント間ストリームのみを適用します。セクション8.1.1.2で説明したように、サーバーは、「to」属性のJIDのドメインパートが受信サーバーによってサービスされるFQDNと一致しない場合、サーバーからサーバーへのストリーム上のスタンザを受け入れてはなりません。
If a server-to-server stream already exists between the two domains, the sender's server SHOULD attempt to route the stanza to the authoritative server for the remote domain over the existing stream.
2つのドメインの間にサーバーからサーバーへのストリームが既に存在する場合、送信者のサーバーは、既存のストリーム上のリモートドメインのStanzaを権威あるサーバーにルーティングしようとする必要があります。
If there exists no server-to-server stream between the two domains, the sender's server will proceed as follows:
2つのドメイン間にサーバー間ストリームが存在しない場合、送信者のサーバーは次のように進行します。
1. Resolve the FQDN of the remote domain (as described under Section 13.9.2).
1. リモートドメインのFQDNを解決します(セクション13.9.2で説明しています)。
2. Negotiate a server-to-server stream between the two domains (as defined under Section 5 and Section 6).
2. 2つのドメイン間のサーバー間ストリームを交渉します(セクション5およびセクション6で定義されています)。
3. Route the stanza to the authoritative server for the remote domain over the newly established stream.
3. 新しく設立されたストリーム上のリモートドメインのために、スタンザを権威あるサーバーにルーティングします。
If routing of a stanza to the intended recipient's server is unsuccessful, the sender's server MUST return an error to the sender. If resolution of the remote domain is unsuccessful, the stanza error MUST be <remote-server-not-found/> (Section 8.3.3.16). If resolution succeeds but streams cannot be negotiated, the stanza error MUST be <remote-server-timeout/> (Section 8.3.3.17).
Stanzaを意図した受信者のサーバーにルーティングすると失敗した場合、送信者のサーバーは送信者にエラーを返す必要があります。リモートドメインの解像度が失敗した場合、スタンザエラーは<remote-server-not-found/>(セクション8.3.3.16)でなければなりません。解像度が成功したが、ストリームを交渉できない場合、スタンザエラーは<remote-server-timeout/>(セクション8.3.3.17)でなければなりません。
If stream negotiation with the intended recipient's server is successful but the remote server cannot deliver the stanza to the recipient, the remote server MUST return an appropriate error to the sender by way of the sender's server.
意図した受信者のサーバーとのストリームネゴシエーションが成功したが、リモートサーバーがスタンザを受信者に配信できない場合、リモートサーバーは送信者のサーバーを介して適切なエラーを送信者に返す必要があります。
If the domainpart of the JID contained in the 'to' attribute matches one of the configured FQDNs of the server, the server MUST first determine if the FQDN is serviced by the server itself or by a specialized local service. If the latter, the server MUST route the stanza to that service. If the former, the server MUST proceed as follows. However, the server MUST NOT route or "forward" the stanza to another domain, because it is the server's responsibility to process all stanzas for which the domainpart of the 'to' address matches one of the configured FQDNs of the server (among other things, this helps to prevent looping).
「to」属性に含まれるJIDのドメインパートが、サーバーの構成されたFQDNの1つと一致する場合、サーバーは最初にFQDNがサーバー自体によって使用されるか、専門のローカルサービスによってサービスされるかどうかを判断する必要があります。後者の場合、サーバーはスタンザをそのサービスにルーティングする必要があります。前者の場合、サーバーは次のように進む必要があります。ただし、サーバーはスタンザを別のドメインにルーティングまたは「転送」してはなりません。これは、「To」アドレスのドメインパートがサーバーの構成されたFQDNSの1つと一致するすべてのスタンザを処理するサーバーの責任であるためです。、これはループを防ぐのに役立ちます)。
If the JID contained in the 'to' attribute is of the form <domainpart>, then the server MUST either (a) handle the stanza as appropriate for the stanza kind or (b) return an error stanza to the sender.
「to」属性に含まれるJIDがフォーム<domainpart>の場合、サーバーは(a)スタンザの種類に適したスタンザを処理するか、(b)エラースタンザを送信者に返す必要があります。
If the JID contained in the 'to' attribute is of the form <domainpart/resourcepart>, then the server MUST either (a) handle the stanza as appropriate for the stanza kind or (b) return an error stanza to the sender.
「to」属性に含まれるJIDがフォーム<domainpart/resourcePart>の場合、サーバーは(a)スタンザの種類に適しているようにスタンザを処理するか、(b)エラースタンザを送信者に返す必要があります。
An address of this type is normally associated with an account on the server. The following rules provide some general guidelines; more detailed rules in the context of instant messaging and presence applications are provided in [XMPP-IM].
このタイプのアドレスは、通常、サーバー上のアカウントに関連付けられています。次のルールは、いくつかの一般的なガイドラインを提供します。インスタントメッセージングと存在アプリケーションのコンテキストでのより詳細なルールは、[XMPP-IM]で提供されています。
If there is no local account associated with the <localpart@domainpart>, how the stanza is processed depends on the stanza type.
<localpart@domainpart>に関連するローカルアカウントがない場合、スタンザの処理方法はスタンザタイプによって異なります。
o For a message stanza, the server MUST either (a) silently ignore the stanza or (b) return a <service-unavailable/> stanza error (Section 8.3.3.19) to the sender.
o Stanzaのメッセージの場合、サーバーは(a)Stanzaを静かに無視するか、(b)<Service-Unavailable/> Stanzaエラー(セクション8.3.3.19)を送信者に返す必要があります。
o For a presence stanza, the server SHOULD ignore the stanza (or behave as described in [XMPP-IM]).
o スタンザの存在の場合、サーバーはスタンザ(または[xmpp-im]に記載されているように動作する)を無視する必要があります。
o For an IQ stanza, the server MUST return a <service-unavailable/> stanza error (Section 8.3.3.19) to the sender.
o IQ Stanzaの場合、サーバーは<Service-Unavailable/> Stanzaエラー(セクション8.3.3.19)を送信者に返す必要があります。
If the JID contained in the 'to' attribute is of the form <localpart@domainpart>, how the stanza is processed depends on the stanza type.
「to」属性に含まれるJIDがフォーム<localpart@domainpart>の場合、スタンザの処理方法はスタンザタイプに依存します。
o For a message stanza, if there exists at least one connected resource for the account then the server SHOULD deliver it to at least one of the connected resources. If there exists no connected resource then the server MUST either (a) store the message offline for delivery when the account next has a connected resource or (b) return a <service-unavailable/> stanza error (Section 8.3.3.19).
o メッセージスタンザの場合、アカウントに少なくとも1つの接続されたリソースが存在する場合、サーバーはそれを接続されたリソースの少なくとも1つに配信する必要があります。接続されたリソースが存在しない場合、サーバーは(a)アカウントに接続されたリソースがある場合、または(b)<service-unabailable/> stanzaエラー(セクション8.3.3.19)を返すときに配信のためにメッセージをオフラインで保存する必要があります。
o For a presence stanza, if there exists at least one connected resource that has sent initial presence (i.e., has a "presence session" as defined in [XMPP-IM]) then the server SHOULD deliver it to such resources. If there exists no connected resource then the server SHOULD ignore the stanza (or behave as described in [XMPP-IM]).
o 存在スタンザの場合、初期存在を送信した(つまり、[xmpp-im]で定義されている「存在セッション」がある)少なくとも1つの接続されたリソースが存在する場合、サーバーはそのようなリソースに配信する必要があります。接続されたリソースが存在しない場合、サーバーはスタンザ(または[xmpp-im]に記載されているように動作する)を無視する必要があります。
o For an IQ stanza, the server MUST handle it directly on behalf of the intended recipient.
o IQスタンザの場合、サーバーは意図した受信者に代わって直接処理する必要があります。
If the JID contained in the 'to' attribute is of the form <localpart@domainpart/resourcepart> and the user exists but there is no connected resource that exactly matches the full JID, the stanza SHOULD be processed as if the JID were of the form <localpart@domainpart> as described under Section 10.5.3.2.
「to」属性に含まれるJIDは<localpart@domainpart/resourcePart>のフォームであり、ユーザーは存在しますが、完全なJIDと正確に一致する接続リソースがない場合、スタンザはJIDがform <localpart@domainpart>セクション10.5.3.2で説明しているとおり。
If the JID contained in the 'to' attribute is of the form <localpart@domainpart/resourcepart>, the user exists, and there is a connected resource that exactly matches the full JID, the server MUST deliver the stanza to that connected resource.
「to」属性に含まれるJIDがフォーム<localpart@domainpart/resourcepart>の場合、ユーザーが存在し、完全なJIDと正確に一致する接続されたリソースがあります。サーバーは、その接続されたリソースにスタンザを配信する必要があります。
XMPP defines a class of data objects called XML streams as well as the behavior of computer programs that process XML streams. XMPP is an application profile or restricted form of the Extensible Markup Language [XML], and a complete XML stream (including start and end stream tags) is a conforming XML document.
XMPPは、XMLストリームと呼ばれるクラスのデータオブジェクトと、XMLストリームを処理するコンピュータープログラムの動作を定義します。XMPPは、拡張可能なマークアップ言語[XML]のアプリケーションプロファイルまたは制限された形式であり、完全なXMLストリーム(開始およびエンドストリームタグを含む)は、適合するXMLドキュメントです。
However, XMPP does not deal with XML documents but with XML streams. Because XMPP does not require the parsing of arbitrary and complete XML documents, there is no requirement that XMPP needs to support the full feature set of [XML]. Furthermore, XMPP uses XML to define protocol data structures and extensions for the purpose of structured interactions between network entities and therefore adheres to the recommendations provided in [XML-GUIDE] regarding restrictions on the use of XML in IETF protocols. As a result, the following features of XML are prohibited in XMPP:
ただし、XMPPはXMLドキュメントではなく、XMLストリームを扱っています。XMPPは任意の完全なXMLドキュメントの解析を必要としないため、XMPPが[XML]の完全な機能セットをサポートする必要があるという要件はありません。さらに、XMPPはXMLを使用して、ネットワークエンティティ間の構造化された相互作用を目的としてプロトコルデータ構造と拡張機能を定義するため、IETFプロトコルでのXMLの使用に関する制限に関して[XML-Guide]で提供される推奨事項を順守します。その結果、XMPPでは、XMLの次の機能が禁止されています。
o comments (as defined in Section 2.5 of [XML])
o コメント([XML]のセクション2.5で定義されています)
o processing instructions (Section 2.6 therein)
o 処理手順(セクション2.6)
o internal or external DTD subsets (Section 2.8 therein)
o 内部または外部のDTDサブセット(セクション2.8)
o internal or external entity references (Section 4.2 therein) with the exception of the predefined entities (Section 4.6 therein)
o 事前定義されたエンティティを除き、内部または外部のエンティティ参照(セクション4.2)を除き(セクション4.6)
An XMPP implementation MUST behave as follows with regard to these features:
XMPPの実装は、これらの機能に関して次のように動作する必要があります。
1. An XMPP implementation MUST NOT inject characters matching such features into an XML stream.
1. XMPP実装は、そのような機能をXMLストリームに一致させる文字を注入してはなりません。
2. If an XMPP implementation receives characters matching such features over an XML stream, it MUST close the stream with a stream error, which SHOULD be <restricted-xml/> (Section 4.9.3.18), although some existing implementations send <bad-format/> (Section 4.9.3.1) instead.
2. XMPP実装がXMLストリームでそのような機能を一致させる文字を受信する場合、ストリームエラーでストリームを閉じる必要があります。>(セクション4.9.3.1)代わりに。
XML namespaces (see [XML-NAMES]) are used within XMPP streams to create strict boundaries of data ownership. The basic function of namespaces is to separate different vocabularies of XML elements that are structurally mixed together. Ensuring that XMPP streams are namespace-aware enables any allowable XML to be structurally mixed with any data element within XMPP. XMPP-specific rules for XML namespace names and prefixes are defined under Section 4.8 for XML streams and Section 8.4 for XML stanzas.
XML名空間([XML-Names]を参照)は、XMPPストリーム内で使用され、データ所有権の厳格な境界を作成します。名前空間の基本機能は、構造的に混合されたXML要素の異なる語彙を分離することです。XMPPストリームがNamespace-Awareであることを確認することで、許容可能なXMLをXMPP内の任意のデータ要素と構造的に混合できるようにします。XMLネームスペース名とプレフィックスのXMPP固有のルールは、XMLストリームのセクション4.8、XMLスタンザのセクション8.4で定義されています。
In XML, there are two varieties of well-formedness:
XMLには、2つの品種があります。
o "XML-well-formedness" in accordance with the definition of "well-formed" from Section 2.1 of [XML].
o [XML]のセクション2.1からの「よく形成された」の定義に従って、「XML-Well-Formends」。
o "Namespace-well-formedness" in accordance with the definition of "namespace-well-formed" from Section 7 of [XML-NAMES].
o [xml-names]のセクション7の「名前空間ウェル形式」の定義に従って、「名前空間壁の形成」。
The following rules apply:
次のルールが適用されます。
1. An XMPP entity MUST NOT generate data that is not XML-well-formed.
1. XMPPエンティティは、XML-Well-Formedではないデータを生成してはなりません。
2. An XMPP entity MUST NOT accept data that is not XML-well-formed; instead it MUST close the stream over which the data was received with a <not-well-formed/> stream error (Section 4.9.3.13).
2. XMPPエンティティは、XML-Well-Formedではないデータを受け入れてはなりません。代わりに、<not-well-formed/>ストリームエラー(セクション4.9.3.13)でデータが受信されたストリームを閉じる必要があります。
3. An XMPP entity MUST NOT generate data that is not namespace-well-formed.
3. XMPPエンティティは、名前空間ウェルが形成されていないデータを生成してはなりません。
4. An XMPP entity MUST NOT accept data that is not namespace-well-formed (in particular, an XMPP server MUST NOT route or deliver data that is not namespace-well-formed); instead it MUST return either a <not-acceptable/> stanza error (Section 8.3.3.9) or close the stream with a <not-well-formed/> stream error (Section 4.9.3.13), where it is preferable to close the stream with a stream error because accepting such data can open an entity to certain denial-of-service attacks.
4. XMPPエンティティは、名前空間ウェル形式ではないデータを受け入れてはなりません(特に、XMPPサーバーは、名前空間ウェル形式ではないデータをルーティングまたは配信してはなりません)。代わりに、A <acceptable/> stanzaエラー(セクション8.3.3.9)を返すか、<not-well-formed/>ストリームエラー(セクション4.9.3.13)でストリームを閉じる必要があります。そのようなデータを受け入れると、特定のサービス拒否攻撃にエンティティを開くことができるため、ストリームエラーでストリーミングされます。
Interoperability Note: Because these restrictions were underspecified in [RFC3920], it is possible that implementations based on that specification will send data that does not comply with these restrictions.
相互運用性注:これらの制限は[RFC3920]では不十分であるため、その仕様に基づく実装により、これらの制限に準拠していないデータが送信される可能性があります。
A server is not responsible for ensuring that XML data delivered to a connected client or routed to a peer server is valid, in accordance with the definition of "valid" provided in Section 2.8 of [XML]. An implementation MAY choose to accept or send only data that has been explicitly validated against the schemas provided in this document, but such behavior is OPTIONAL. Clients are advised not to rely on the ability to send data that does not conform to the schemas, and SHOULD ignore any non-conformant elements or attributes on the incoming XML stream.
サーバーは、[XML]のセクション2.8で提供されている「有効」の定義に従って、接続されたクライアントまたはピアサーバーにルーティングされたXMLデータが有効であることを確認する責任を負いません。実装は、このドキュメントで提供されているスキーマに対して明示的に検証されたデータのみを受け入れるか送信することを選択できますが、そのような動作はオプションです。クライアントは、スキーマに準拠していないデータを送信する能力に依存しないことをお勧めします。また、着信XMLストリームの不適合要素または属性を無視する必要があります。
Informational Note: The terms "valid" and "well-formed" are distinct in XML.
情報ノート:「有効」および「よく形成された」という用語は、XMLで異なります。
Before sending a stream header, an implementation SHOULD send an XML declaration (matching the "XMLDecl" production from [XML]). Applications MUST follow the rules provided in [XML] regarding the format of the XML declaration and the circumstances under which the XML declaration is included.
ストリームヘッダーを送信する前に、実装はXML宣言を送信する必要があります([XML]から「XMLDECL」生産と一致します)。アプリケーションは、XML宣言の形式とXML宣言が含まれる状況に関して、[XML]で提供される規則に従う必要があります。
Because external markup declarations are prohibited in XMPP (as described under Section 11.1), the standalone document declaration (matching the "SDDecl" production from [XML]) would have no meaning and therefore MUST NOT be included in an XML declaration sent over an XML stream. If an XMPP entity receives an XML declaration containing a standalone document declaration set to a value of "no", the entity MUST either ignore the standalone document declaration or close the stream with a stream error, which SHOULD be <restricted-xml/> (Section 4.9.3.18).
XMPPで外部マークアップ宣言は禁止されているため(セクション11.1で説明されているように)、スタンドアロン文書宣言([XML]からの「SDDECL」生産と一致する)には意味がないため、XMLを介して送信されたXML宣言に含まれてはなりません。ストリーム。XMPPエンティティが「いいえ」の値に設定されたスタンドアロンドキュメント宣言を含むXML宣言を受信した場合、エンティティはスタンドアロンドキュメント宣言を無視するか、ストリームエラーでストリームを閉じる必要があります。セクション4.9.3.18)。
Implementations MUST support the UTF-8 transformation of Universal Character Set [UCS2] characters, as needed for conformance with [CHARSETS] and as defined in [UTF-8]. Implementations MUST NOT attempt to use any other encoding. If one party to an XML stream detects that the other party has attempted to send XML data with an encoding other than UTF-8, it MUST close the stream with a stream error, which SHOULD be <unsupported-encoding/> (Section 4.9.3.22), although some existing implementations send <bad-format/> (Section 4.9.3.1) instead.
実装は、[charsets]と[utf-8]で定義されているように、必要に応じて、ユニバーサル文字セット[UCS2]文字のUTF-8変換をサポートする必要があります。実装は、他のエンコードを使用しようとしてはなりません。XMLストリームの一方の当事者が、もう一方の当事者がUTF-8以外のエンコードでXMLデータを送信しようとしたことを検出した場合、ストリームエラーでストリームを閉じる必要があります。3.22)、一部の既存の実装は代わりに<bad-format/>(セクション4.9.3.1)を送信します。
Because it is mandatory for an XMPP implementation to support all and only the UTF-8 encoding and because UTF-8 always has the same byte order, an implementation MUST NOT send a byte order mark ("BOM") at the beginning of the data stream. If an entity receives the [UNICODE] character U+FEFF anywhere in an XML stream (including as the first character of the stream), it MUST interpret that character as a zero width no-break space, not as a byte order mark.
XMPP実装がすべてのUTF-8エンコーディングのみをサポートすることが必須であり、UTF-8は常に同じバイト順序を持っているため、実装はデータの先頭にバイトオーダーマーク(「BOM」)を送信してはなりませんストリーム。エンティティがXMLストリーム内の[unicode]文字u feffを受信している場合(ストリームの最初の文字を含む)、その文字はバイトオーダーマークとしてではなく、ゼロ幅のないブレイクスペースとして解釈する必要があります。
Except where explicitly disallowed (e.g., during TLS negotiation (Section 5) and SASL negotiation (Section 6)), either entity MAY send whitespace as separators between XML stanzas or between any other first-level elements sent over the stream. One common use for sending such whitespace is explained under Section 4.4.
明示的に許可されていない場合(例:TLS交渉(セクション5)およびSASL交渉中(セクション6))、いずれかのエンティティがXMLスタンザの間、またはストリーム上に送信される他の最初のレベルの要素の間でセパレーターとして白人を送信する場合があります。このような空白を送信するための一般的な使用の1つは、セクション4.4で説明されています。
XMPP is an application profile of XML 1.0. A future version of XMPP might be defined in terms of higher versions of XML, but this specification defines XMPP only in terms of XML 1.0.
XMPPは、XML 1.0のアプリケーションプロファイルです。XMPPの将来のバージョンは、XMLのより高いバージョンの観点から定義される場合がありますが、この仕様はXML 1.0に関してのみXMPPを定義します。
As specified under Section 11.6, XML streams MUST be encoded in UTF-8.
セクション11.6で指定されているように、XMLストリームはUTF-8でエンコードする必要があります。
As specified under Section 4.7, an XML stream SHOULD include an 'xml: lang' attribute specifying the default language for any XML character data that is intended to be presented to a human user. As specified under Section 8.1.5, an XML stanza SHOULD include an 'xml:lang' attribute if the stanza contains XML character data that is intended to be presented to a human user. A server SHOULD apply the default 'xml:lang' attribute to stanzas it routes or delivers on behalf of connected entities, and MUST NOT modify or delete 'xml:lang' attributes on stanzas it receives from other entities.
セクション4.7で指定されているように、XMLストリームには、人間のユーザーに提示されることを目的としたXML文字データのデフォルト言語を指定する「XML:LANG」属性を含める必要があります。セクション8.1.5で指定されているように、XMLスタンザには、スタンザに人間のユーザーに提示されることを目的としたXML文字データが含まれている場合、「XML:Lang」属性を含める必要があります。サーバーは、接続されたエンティティに代わってルートまたは配信するスタンザにデフォルトの「XML:LANG」属性を適用する必要があり、他のエンティティから受け取るスタンザに 'XML:LANG'属性を変更または削除してはなりません。
Internationalization of XMPP addresses is specified in [XMPP-ADDR].
XMPPアドレスの国際化は、[XMPP-ADDR]で指定されています。
XMPP technologies are typically deployed using a decentralized client-server architecture. As a result, several paths are possible when two XMPP entities need to communicate:
XMPPテクノロジーは、通常、分散型クライアントサーバーアーキテクチャを使用して展開されます。その結果、2つのXMPPエンティティが通信する必要がある場合、いくつかのパスが可能です。
1. Both entities are servers. In this case, the entities can establish a direct server-to-server stream between themselves.
1. 両方のエンティティはサーバーです。この場合、エンティティは自分自身の間に直接サーバー間ストリームを確立できます。
2. One entity is a server and the other entity is a client whose account is hosted on that server. In this case, the entities can establish a direct client-to-server stream between themselves.
2. 1つのエンティティはサーバーであり、もう1つのエンティティはそのサーバーでアカウントがホストされているクライアントです。この場合、エンティティは自分自身の間に直接的なクライアント間ストリームを確立できます。
3. Both entities are clients whose accounts are hosted on the same server. In this case, the entities cannot establish a direct stream between themselves, but there is only one intermediate entity between them, whose policies they might understand and in which they might have some level of trust (e.g., the server might require the use of Transport Layer Security for all client connections).
3. 両方のエンティティは、アカウントが同じサーバーでホストされているクライアントです。この場合、エンティティは自分自身の間に直接的なストリームを確立することはできませんが、それらの間には1つの中間エンティティしかありません。そのポリシーは理解している可能性があり、ある程度の信頼を持っている可能性があります(たとえば、サーバーは輸送の使用を必要とする場合があります。すべてのクライアント接続のセキュリティをレイヤーします)。
4. Both entities are clients but their accounts are hosted on different servers. In this case, the entities cannot establish a direct stream between themselves and there are two intermediate entities between them; each client might have some trust in the server that hosts its account but might know nothing about the policies of the server to which the other client connects.
4. どちらのエンティティもクライアントですが、アカウントはさまざまなサーバーでホストされています。この場合、エンティティはそれ自体との間に直接的なストリームを確立することができず、それらの間に2つの中間エンティティがあります。各クライアントは、アカウントをホストするサーバーにある程度の信頼を持っている可能性がありますが、他のクライアントが接続するサーバーのポリシーについて何も知らない場合があります。
This specification covers only the security of a direct XML stream between two servers or between a client and a server (cases #1 and #2), where each stream can be considered a single "hop" along a communication path. The goal of security for a multi-hop path (cases #3 and #4), although very desirable, is out of scope for this specification.
この仕様は、2つのサーバー間の直接XMLストリームのセキュリティのみをカバーします。クライアントとサーバー(ケース#1および#2)の間で、各ストリームは通信パスに沿って単一の「ホップ」と見なすことができます。マルチホップパス(ケース#3および#4)のセキュリティの目標は、非常に望ましいものの、この仕様の範囲外です。
In accordance with [SEC-GUIDE], this specification covers communication security (confidentiality, data integrity, and peer entity authentication), non-repudiation, and systems security (unauthorized usage, inappropriate usage, and denial of service). We also discuss common security issues such as information leaks, firewalls, and directory harvesting, as well as best practices related to the reuse of technologies such as base 64, DNS, cryptographic hash functions, SASL, TLS, UTF-8, and XML.
[Sec-Guide]に従って、この仕様は、コミュニケーションセキュリティ(機密性、データの整合性、およびピアエンティティ認証)、非控除、およびシステムセキュリティ(不正使用、不適切な使用、およびサービス拒否)をカバーしています。また、情報リーク、ファイアウォール、ディレクトリの収穫などの一般的なセキュリティの問題、およびベース64、DNS、暗号ハッシュ関数、SASL、TLS、UTF-8、XMLなどの技術の再利用に関連するベストプラクティスについても説明します。
The threat model for XMPP is in essence the standard "Internet Threat Model" described in [SEC-GUIDE]. Attackers are assumed to be interested in and capable of launching the following attacks against unprotected XMPP systems:
XMPPの脅威モデルは、本質的に[SECガイド]で説明されている標準的な「インターネット脅威モデル」です。攻撃者は、保護されていないXMPPシステムに対する以下の攻撃に関心があり、開始できると想定されています。
o Eavesdropping
o 盗聴
o Sniffing passwords
o パスワードをスニッフィングします
o Breaking passwords through dictionary attacks o Discovering usernames through directory harvesting attacks
o 辞書攻撃を通じてパスワードを破るoディレクトリの収穫攻撃を通じてユーザー名の発見
o Replaying, inserting, deleting, or modifying stanzas
o スタンザの再生、挿入、削除、または変更
o Spoofing users
o スプーフィングユーザー
o Gaining unauthorized entry to a server or account
o サーバーまたはアカウントへの不正なエントリを獲得します
o Using a server or account inappropriately
o サーバーまたはアカウントを不適切に使用します
o Denying service to other entities
o 他のエンティティへのサービスの拒否
o Subverting communication streams through man-in-the-middle attacks
o コミュニケーションの流れは、中間の攻撃を通じてストリームを流します
o Gaining control over on-path servers
o オンパスサーバーを制御する
Where appropriate, the following sections describe methods for protecting against these threats.
必要に応じて、次のセクションでは、これらの脅威から保護する方法について説明します。
The order of layers in which protocols MUST be stacked is as follows:
プロトコルを積み重ねなければならないレイヤーの順序は次のとおりです。
1. TCP
1. TCP
2. TLS
2. TLS
3. SASL
3. SASL
4. XMPP
4. xmpp
This order has important security implications, as described throughout these security considerations.
これらのセキュリティ上の考慮事項全体で説明されているように、この順序には重要なセキュリティへの影響があります。
Within XMPP, XML stanzas are further ordered on top of XML streams, as described under Section 4.
XMPP内では、セクション4で説明されているように、XMLスタンザがXMLストリームの上にさらに注文されます。
The use of Transport Layer Security (TLS) with appropriate ciphersuites provides a reliable mechanism to ensure the confidentiality and integrity of data exchanged between a client and a server or between two servers. Therefore, TLS can help to protect against eavesdropping, password sniffing, man-in-the-middle attacks, and stanza replays, insertion, deletion, and modification over an XML stream. XMPP clients and servers MUST support TLS as defined under Section 5.
適切な暗号網を使用したトランスポートレイヤーセキュリティ(TLS)の使用は、クライアントとサーバー間、または2つのサーバー間で交換されるデータの機密性と整合性を確保するための信頼できるメカニズムを提供します。したがって、TLSは、盗聴、パスワードのスニッフィング、中間攻撃、スタンザのリプレイ、挿入、削除、およびXMLストリームに対する変更から保護するのに役立ちます。XMPPクライアントとサーバーは、セクション5で定義されているようにTLSをサポートする必要があります。
Informational Note: The confidentiality and integrity of a stream can be protected by methods other than TLS, e.g., by means of a SASL mechanism that involves negotiation of a security layer.
情報ノート:ストリームの機密性と完全性は、たとえば、セキュリティ層の交渉を含むSASLメカニズムによってTLS以外の方法によって保護できます。
Security Warning: The use of TLS in XMPP applies to a single stream. Because XMPP is typically deployed using a distributed client-server architecture (as explained under Section 2.5), a stanza might traverse multiple streams, and not all of those streams might be TLS-protected. For example, a stanza sent from a client with a session at one server (e.g., <romeo@example.net/orchard>) and intended for delivery to a client with a session at another server (e.g., <juliet@example.com/balcony>) will traverse three streams: (1) the stream from the sender's client to its server, (2) the stream from the sender's server to the recipient's server, and (3) the stream from the recipient's server to the recipient's client. Furthermore, the stanza will be processed as cleartext within the sender's server and the recipient's server. Therefore, even if the stream from the sender's client to its server is protected, the confidentiality and integrity of a stanza sent over that protected stream cannot be guaranteed when the stanza is processed by the sender's server, sent from the sender's server to the recipient's server, processed by the recipient's server, or sent from the recipient's server to the recipient's client. Only a robust technology for end-to-end encryption could ensure the confidentiality and integrity of a stanza as it traverses all of the "hops" along a communication path (e.g., a technology that meets the requirements defined in [E2E-REQS]). Unfortunately, the XMPP community has so far failed to produce an end-to-end encryption technology that might be suitable for widespread implementation and deployment, and definition of such a technology is out of scope for this document.
セキュリティ警告:XMPPでのTLSの使用は、単一のストリームに適用されます。XMPPは通常、分散クライアントサーバーアーキテクチャを使用して展開されるため(セクション2.5で説明されている)、スタンザは複数のストリームを通過する可能性があり、これらのストリームのすべてがTLS保護されているわけではありません。たとえば、1つのサーバーでセッションを持つクライアントから送信されたスタンザ(例:<romeo@example.net/orchard>)と別のサーバーでのセッションを持つクライアントへの配信を目的としています(例:<juliet@example.com/バルコニー>)は3つのストリームを通過します。(1)送信者のクライアントからサーバーへのストリーム、(2)送信者のサーバーから受信者のサーバーへのストリーム、および(3)受信者のサーバーから受信者のクライアントへのストリーム。さらに、スタンザは、送信者のサーバーと受信者のサーバー内でクリアテキストとして処理されます。したがって、送信者のクライアントからサーバーへのストリームが保護されていても、Stanzaが送信者のサーバーから送信者のサーバーに送信されたStanzaが受信者のサーバーに送信された場合、その保護されたストリームを介して送信されたStanzaの機密性と整合性を保証することはできません、受信者のサーバーによって処理されるか、受信者のサーバーから受信者のクライアントに送信されます。エンドツーエンドの暗号化のための堅牢なテクノロジーのみが、通信パスに沿ってすべての「ホップ」を横断するときにスタンザの機密性と完全性を確保することができます(たとえば、[E2E-REQS]で定義されている要件を満たすテクノロジー)。残念ながら、XMPPコミュニティはこれまでのところ、広範な実装と展開に適している可能性のあるエンドツーエンドの暗号化テクノロジーを作成できませんでした。このような技術の定義は、このドキュメントの範囲外です。
The use of the Simple Authentication and Security Layer (SASL) for authentication provides a reliable mechanism for peer entity authentication. Therefore, SASL helps to protect against user spoofing, unauthorized usage, and man-in-the middle attacks. XMPP clients and servers MUST support SASL as defined under Section 6.
認証にSimple認証とセキュリティレイヤー(SASL)を使用することは、ピアエンティティ認証のための信頼できるメカニズムを提供します。したがって、SASLは、ユーザーのスプーフィング、不正使用、および中間攻撃から保護するのに役立ちます。XMPPクライアントとサーバーは、セクション6で定義されているようにSASLをサポートする必要があります。
[STRONGSEC] defines "strong security" and its importance to communication over the Internet. For the purpose of XMPP communication over client-to-server and server-to-server streams, the term "strong security" refers to the use of security technologies that provide both mutual authentication and integrity checking (e.g., a combination of TLS encryption and SASL authentication using appropriate SASL mechanisms).
[StrongSec]は、「強力なセキュリティ」とインターネット上のコミュニケーションに対するその重要性を定義しています。クライアント間およびサーバーからサーバーへのストリームを介したXMPP通信を目的として、「強力なセキュリティ」という用語は、相互認証と整合性チェックの両方を提供するセキュリティテクノロジーの使用を指します(たとえば、TLS暗号化と組み合わせと適切なSASLメカニズムを使用したSASL認証)。
Implementations MUST support strong security. Service provisioning SHOULD use strong security.
実装は強力なセキュリティをサポートする必要があります。サービスプロビジョニングは強力なセキュリティを使用する必要があります。
An implementation SHOULD make it possible for an end user or service administrator to provision a deployment with specific trust anchors for the certificate presented by a connecting entity (either client or server); when an application is thus provisioned, it MUST NOT use a generic PKI trust store to authenticate the connecting entity. More detailed rules and guidelines regarding certificate validation are provided in the next section.
実装により、エンドユーザーまたはサービス管理者が、接続エンティティ(クライアントまたはサーバー)によって提示された証明書の特定の信頼アンカーで展開を提供することを可能にする必要があります。このようにアプリケーションがプロビジョニングされている場合、汎用PKIトラストストアを使用して接続エンティティを認証してはなりません。証明書の検証に関するより詳細なルールとガイドラインは、次のセクションで提供されています。
The initial stream and the response stream MUST be secured separately, although security in both directions MAY be established via mechanisms that provide mutual authentication.
初期ストリームと応答ストリームは個別に保護する必要がありますが、両方向のセキュリティは相互認証を提供するメカニズムを介して確立される場合があります。
Channel encryption of an XML stream using Transport Layer Security as described under Section 5, and in some cases also authentication as described under Section 6, is commonly based on a PKIX certificate presented by the receiving entity (or, in the case of mutual certificate authentication, both the receiving entity and the initiating entity). This section describes best practices regarding the generation of PKIX certificates to be presented by XMPP entities and the verification of PKIX certificates presented by XMPP entities.
セクション5で説明されているように、輸送層のセキュリティを使用したXMLストリームのチャネル暗号化、およびセクション6で説明されているように認証も一般に、受信エンティティによって提示されたPKIX証明書に基づいています(または、相互証明書認証の場合、受信エンティティと開始エンティティの両方)。このセクションでは、XMPPエンティティによって提示されるPKIX証明書の生成と、XMPPエンティティが提示するPKIX証明書の検証に関するベストプラクティスについて説明します。
In general, the following sections rely on and extend the rules and guidelines provided in the [PKIX] profile of [X509], and in [TLS-CERTS]. The reader is referred to those specifications for a detailed understanding of PKIX certificates and their use in TLS.
一般に、以下のセクションは、[x509]の[pkix]プロファイルと[TLS-CERTS]に提供されるルールとガイドラインに依存して拡張します。読者は、PKIX証明書とTLSでの使用を詳細に理解するために、これらの仕様に照会されます。
The following rules apply to end entity public key certificates that are issued to XMPP servers or clients:
以下のルールは、XMPPサーバーまたはクライアントに発行されるEnd Entity公開キー証明書に適用されます。
1. The certificate MUST conform to [PKIX].
1. 証明書は[pkix]に準拠する必要があります。
2. The certificate MUST NOT contain a basicConstraints extension with the cA boolean set to TRUE.
2. 証明書には、Ca BooleanセットがTrueに設定されたBasicConstraints拡張機能を含めてはなりません。
3. The subject field MUST NOT be null.
3. サブジェクトフィールドはヌルであってはなりません。
4. The signatureAlgorithm SHOULD be the PKCS #1 version 1.5 signature algorithm with SHA-256 as defined by [PKIX-ALGO], or a stronger algorithm if available.
4. SignatureAlgorithmは、[pkix-algo]で定義されているSHA-256を備えたPKCS#1バージョン1.5署名アルゴリズム、または利用可能な場合は強力なアルゴリズムである必要があります。
5. The certificate SHOULD include an Authority Information Access (AIA) extension that specifies the address of an Online Certificate Status Protocol [OCSP] responder (if not, a relying party would need to fall back on the use of Certificate Revocation Lists (CRLs) as described in [PKIX]).
5. 証明書には、オンライン証明書ステータスプロトコル[OCSP]レスポンダーのアドレスを指定する権限情報アクセス(AIA)拡張機能を含める必要があります(そうでない場合、頼る当事者は、記載されているように証明書取消リスト(CRL)の使用に戻る必要があります[pkix])。
The following rules apply to certification authority (CA) certificates that are used by issuers of XMPP end entity certificates:
以下の規則は、XMPP End Entity証明書の発行者が使用する認定機関(CA)証明書に適用されます。
1. The certificate MUST conform to [PKIX].
1. 証明書は[pkix]に準拠する必要があります。
2. The certificate MUST contain a keyUsage extension with the digitalSignature bit set.
2. 証明書には、DigitalSignature Bit Setを使用したKeyUSAGE拡張機能を含める必要があります。
3. The subject field MUST NOT be null.
3. サブジェクトフィールドはヌルであってはなりません。
4. The signatureAlgorithm SHOULD be the PKCS #1 version 1.5 signature algorithm with SHA-256 as defined by [PKIX-ALGO], or a stronger algorithm if available.
4. SignatureAlgorithmは、[pkix-algo]で定義されているSHA-256を備えたPKCS#1バージョン1.5署名アルゴリズム、または利用可能な場合は強力なアルゴリズムである必要があります。
5. For issuers of public key certificates, the issuer's certificate MUST contain a basicConstraints extension with the cA boolean set to TRUE.
5. 公開キーの証明書の発行者の場合、発行者の証明書には、CAブールンセットがtrueに設定された基本的なコクストレイン拡張が含まれている必要があります。
In a PKIX certificate to be presented by an XMPP server (i.e., a "server certificate"), the certificate SHOULD include one or more XMPP addresses (i.e., domainparts) associated with XMPP services hosted at the server. The rules and guidelines defined in [TLS-CERTS] apply to XMPP server certificates, with the following XMPP-specific considerations:
XMPPサーバー(つまり、「サーバー証明書」)によって提示されるPKIX証明書では、証明書には、サーバーでホストされているXMPPサービスに関連付けられた1つ以上のXMPPアドレス(つまり、ドメインパート)を含める必要があります。[TLS-CERTS]で定義されているルールとガイドラインは、XMPPサーバー証明書に適用され、次のXMPP固有の考慮事項があります。
o Support for the DNS-ID identifier type [PKIX] is REQUIRED in XMPP client and server software implementations. Certification authorities that issue XMPP-specific certificates MUST support the DNS-ID identifier type. XMPP service providers SHOULD include the DNS-ID identifier type in certificate requests.
o XMPPクライアントおよびサーバーソフトウェアの実装では、DNS-ID識別子タイプ[PKIX]のサポートが必要です。XMPP固有の証明書を発行する認定当局は、DNS-ID識別子タイプをサポートする必要があります。XMPPサービスプロバイダーには、証明書リクエストにDNS-ID識別子タイプを含める必要があります。
o Support for the SRV-ID identifier type [PKIX-SRV] is REQUIRED for XMPP client and server software implementations (for verification purposes XMPP client implementations need to support only the "_xmpp-client" service type, whereas XMPP server implementations need to support both the "_xmpp-client" and "_xmpp-server" service types). Certification authorities that issue XMPP-specific certificates SHOULD support the SRV-ID identifier type. XMPP service providers SHOULD include the SRV-ID identifier type in certificate requests.
o SRV-ID識別子タイプのサポート[PKIX-SRV]はXMPPクライアントおよびサーバーソフトウェアの実装に必要です(検証のためにXMPPクライアントの実装は「_XMPP-Client」サービスタイプのみをサポートする必要がありますが、XMPPサーバーの実装は両方をサポートする必要があります。「_xmpp-client」および「_xmpp-server」サービスタイプ)。XMPP固有の証明書を発行する認定当局は、SRV-ID識別子タイプをサポートする必要があります。XMPPサービスプロバイダーには、証明書リクエストにSRV-ID識別子タイプを含める必要があります。
o Support for the XmppAddr identifier type (specified under Section 13.7.1.4) is encouraged in XMPP client and server software implementations for the sake of backward-compatibility, but is no longer encouraged in certificates issued by certification authorities or requested by XMPP service providers.
o XMPPADDR識別子タイプのサポート(セクション13.7.1.4で指定)は、XMPPクライアントおよびサーバーソフトウェアの実装で奨励されていますが、認定当局によって発行された証明書またはXMPPサービスプロバイダーが要求した証明書では奨励されていません。
o DNS domain names in server certificates MAY contain the wildcard character '*' as the complete left-most label within the identifier.
o サーバー証明書のDNSドメイン名には、識別子内の完全な左のラベルとしてワイルドカード文字 '*'が含まれている場合があります。
For our first (relatively simple) example, consider a company called "Example Products, Inc." It hosts an XMPP service at "im.example.com" (i.e., user addresses at the service are of the form "user@im.example.com"), and SRV lookups for the xmpp-client and xmpp-server services at "im.example.com" yield one machine, called "x.example.com", as follows:
最初の(比較的単純な)例については、「Example Product、Inc。」と呼ばれる会社を検討してください。「im.example.com」でXMPPサービスをホストしています(つまり、サービスのユーザーアドレスは「user@im.example.com」という形式です)、xmpp-clientおよびxmpp-serverサービスのSRVルックアップは「im.example.com」は、次のように「x.example.com」と呼ばれる1つのマシンを生成します。
_xmpp-client._tcp.im.example.com. 400 IN SRV 20 0 5222 x.example.com _xmpp-server._tcp.im.example.com. 400 IN SRV 20 0 5269 x.example.com
_xmpp-client._tcp.im.example.com。SRV 20 0 5222 x.example.com _xmpp-server._tcp.im.example.com。SRV 20 0 5269 x.example.comの400
The certificate presented by x.example.com contains the following representations:
x.example.comが提示した証明書には、次の表現が含まれています。
o An otherName type of SRVName (id-on-dnsSRV) containing an IA5String (ASCII) string of "_xmpp-client.im.example.com"
o 「_xmpp-client.im.example.com」のia5string(ascii)文字列を含むsrvname(id-on-dnssrv)の他のタイプ(id-on-dnssrv)
o An otherName type of SRVName (id-on-dnsSRV) containing an IA5String (ASCII) string of "_xmpp-server.im.example.com"
o 「_xmpp-server.im.example.com」のia5string(ascii)文字列を含むsrvname(id-on-dnssrv)の他のタイプ(id-on-dnssrv)
o A dNSName containing an ASCII string of "im.example.com"
o 「im.example.com」のascii文字列を含むdnsname
o An otherName type of XmppAddr (id-on-xmppAddr) containing a UTF-8 string of "im.example.com"
o 「im.example.com」のUTF-8文字列を含むXMPPADDR(ID-ON-XMPPADDR)の他のタイプのタイプ
o A CN containing an ASCII string of "Example Products, Inc." For our second (more complex) example, consider an ISP called "Example Internet Services". It hosts an XMPP service at "example.net" (i.e., user addresses at the service are of the form "user@example.net"), but SRV lookups for the xmpp-client and xmpp-server services at "example.net" yield two machines ("x1.example.net" and "x2.example.net"), as follows:
o 「Example Product、Inc。」のASCII文字列を含むCN2番目の(より複雑な)例については、「インターネットサービスの例」と呼ばれるISPを検討してください。「example.net」でXMPPサービスをホストします(つまり、サービスのユーザーアドレスは「user@example.net」という形式ですが、XMPP-ClientおよびXMPP-ServerサービスのSRV検索「2つのマシン( "x1.example.net」と「x2.example.net")を次のように獲得します。
_xmpp-client._tcp.example.net. 68400 IN SRV 20 0 5222 x1.example.net. _xmpp-client._tcp.example.net. 68400 IN SRV 20 0 5222 x2.example.net. _xmpp-server._tcp.example.net. 68400 IN SRV 20 0 5269 x1.example.net. _xmpp-server._tcp.example.net. 68400 IN SRV 20 0 5269 x2.example.net.
_xmpp-client._tcp.example.net。68400 IN SRV 20 0 5222 x1.example.net。_xmpp-client._tcp.example.net。68400 IN SRV 20 0 5222 x2.example.net。_xmpp-server._tcp.example.net。SRV 20 0 5269 x1.example.netの68400_xmpp-server._tcp.example.net。68400 IN SRV 20 0 5269 x2.example.net。
Example Internet Services also hosts chatrooms at chat.example.net, and provides an xmpp-server SRV record for that service as well (thus enabling entities from remote domains to access that service). It also might provide other such services in the future, so it wishes to represent a wildcard in its certificate to handle such growth.
Internet Servicesの例は、chat.example.netでチャットルームもホストし、そのサービスにXMPP-Server SRVレコードを提供します(したがって、リモートドメインのエンティティがそのサービスにアクセスできるようにする)。また、将来他のそのようなサービスを提供する可能性があるため、そのような成長を処理するために証明書のワイルドカードを代表したいと考えています。
The certificate presented by either x1.example.net or x2.example.net contains the following representations:
x1.example.netまたはx2.example.netのいずれかによって提示された証明書には、次の表現が含まれています。
o An otherName type of SRVName (id-on-dnsSRV) containing an IA5String (ASCII) string of "_xmpp-client.example.net"
o "_xmpp-client.example.net"のia5string(ascii)文字列を含むsrvname(id-on-dnssrv)の他のタイプのタイプ(id-on-dnssrv)
o An otherName type of SRVName (id-on-dnsSRV) containing an IA5String (ASCII) string of "_xmpp-server.example.net"
o "_xmpp-server.example.net"のia5string(ascii)文字列を含むsrvname(id-on-dnssrv)の他のタイプのsrvname(id-on-dnssrv)
o An otherName type of SRVName (id-on-dnsSRV) containing an IA5String (ASCII) string of "_xmpp-server.chat.example.net"
o "_xmpp-server.chat.example.net"のia5string(ascii)文字列を含むsrvname(id-on-dnssrv)の他のタイプのsrvname(id-on-dnssrv)
o A dNSName containing an ASCII string of "example.net"
o 「embles.net」のascii文字列を含むdnsname
o A dNSName containing an ASCII string of "*.example.net"
o 「*.example.net」のascii文字列を含むdnsname
o An otherName type of XmppAddr (id-on-xmppAddr) containing a UTF-8 string of "example.net"
o UTF-8文字列の「example.net」を含むXMPPADDR(ID-ON-XMPPADDR)の他のタイプのタイプ
o An otherName type of XmppAddr (id-on-xmppAddr) containing a UTF-8 string of "chat.example.net"
o UTF-8文字列の「chat.example.net」を含むxmppaddr(id-on-xmppaddr)の他のタイプのタイプ
o A CN containing an ASCII string of "Example Internet Services"
o 「インターネットサービスの例」のASCII文字列を含むCN
In a PKIX certificate to be presented by an XMPP client controlled by a human user (i.e., a "client certificate"), it is RECOMMENDED for the certificate to include one or more JIDs associated with an XMPP user. If included, a JID MUST be represented as an XmppAddr as specified under Section 13.7.1.4.
人間のユーザーが制御するXMPPクライアント(つまり、「クライアント証明書」)によって提示されるPKIX証明書では、証明書にXMPPユーザーに関連付けられた1つ以上のJIDを含めることをお勧めします。含まれている場合、JIDは、セクション13.7.1.4で指定されているようにXMPPADDRとして表現する必要があります。
The XmppAddr identifier type is a UTF8String within an otherName entity inside the subjectAltName, using the [ASN.1] Object Identifier "id-on-xmppAddr" specified below.
XMPPADDR識別子タイプは、[asn.1]オブジェクト識別子「id-on-xmppaddr」を以下に指定する[asn.1]オブジェクト識別子「id-on-xmppaddr」を使用して、subjectaltname内の他のエンティティ内のutf8stringです。
id-pkix OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) }
id-on OBJECT IDENTIFIER ::= { id-pkix 8 } -- other name forms
id-on-xmppAddr OBJECT IDENTIFIER ::= { id-on 5 }
XmppAddr ::= UTF8String
As an alternative to the "id-on-xmppAddr" notation, this Object Identifier MAY be represented in dotted display format (i.e., "1.3.6.1.5.5.7.8.5") or in the Uniform Resource Name notation specified in [URN-OID] (i.e., "urn:oid:1.3.6.1.5.5.7.8.5").
「id-on-xmppaddr」表記に代わるものとして、このオブジェクト識別子は、点線の表示形式(つまり、 "1.3.6.1.5.5.7.8.5")または[urnで指定された均一なリソース名表記で表現できます。-oid](つまり、 "urn:oid:1.3.6.1.5.5.7.8.5")。
Thus for example the JID <juliet@im.example.com> as included in a certificate could be formatted in any of the following three ways:
したがって、たとえば、証明書に含まれるJid <juliet@im.example.com>は、次の3つの方法のいずれかでフォーマットできます。
id-on-xmppAddr: subjectAltName=otherName:id-on-xmppAddr;UTF8:juliet@im.example.com
dotted display format: subjectAltName=otherName: 1.3.6.1.5.5.7.8.5;UTF8:juliet@im.example.com
URN notation: subjectAltName=otherName:urn:oid: 1.3.6.1.5.5.7.8.5;UTF8:juliet@im.example.com
Use of the "id-on-xmppAddr" format is RECOMMENDED in the generation of certificates, but all three formats MUST be supported for the purpose of certificate validation.
「ID-on-XMPPADDR」形式の使用は、証明書の生成で推奨されますが、3つの形式はすべて、証明書の検証を目的としてサポートする必要があります。
The "id-on-xmppAddr" object identifier MAY be used in conjunction with the extended key usage extension specified in Section 4.2.1.12 of [PKIX] in order to explicitly define and limit the intended use of a certificate to the XMPP network.
「id-on-xmppaddr」オブジェクト識別子は、[pkix]のセクション4.2.1.12で指定された拡張キー使用拡張機能と併せて使用して、証明書の使用をXMPPネットワークに明示的に定義および制限することができます。
When an XMPP entity is presented with a server certificate or client certificate by a peer for the purpose of encryption or authentication of XML streams as described under Section 5 and Section 6, the entity MUST attempt to validate the certificate to determine if the certificate will be considered a "trusted certificate", i.e., a certificate that is acceptable for encryption and/or authentication in accordance with the XMPP entity's local service policies or configured settings.
セクション5およびセクション6で説明されているように、XMLストリームの暗号化または認証を目的として、ピアによってXMPPエンティティにサーバー証明書またはクライアント証明書が提示された場合、エンティティは証明書を検証して証明書を決定する必要があります。「信頼できる証明書」、つまり、XMPPエンティティのローカルサービスポリシーまたは設定された設定に従って、暗号化および/または認証を許容できる証明書。
For both server certificates and client certificates, the validating entity MUST do the following:
サーバー証明書とクライアント証明書の両方について、検証エンティティは次のことを行う必要があります。
1. Attempt to verify the integrity of the certificate.
1. 証明書の整合性を確認しようとします。
2. Attempt to verify that the certificate has been properly signed by the issuing Certificate Authority.
2. 証明書が発行証明書当局によって適切に署名されていることを確認しようとします。
3. Attempt to validate the full certification path.
3. 完全な認証パスを検証しようとします。
4. Check the rules for end entity public key certificates and certification authority certificates specified under Section 13.7.1.1 for the general case and under either Section 13.7.1.2 or Section 13.7.1.3 for XMPP server or client certificates, respectively.
4. XMPPサーバーまたはクライアント証明書については、それぞれ一般的なケースのセクション13.7.1.2またはセクション13.7.1.2またはセクション13.7.1.3のいずれかで、セクション13.7.1.1のセクション13.7.1.1で指定された公開キー証明書と認証機関の証明書を確認してください。
5. Check certificate revocation messages via Certificate Revocation Lists (CRLs), the Online Certificate Status Protocol [OCSP], or both.
5. 証明書の取り消しリスト(CRLS)、オンライン証明書ステータスプロトコル[OCSP]、またはその両方を介して証明書の取り消しメッセージを確認してください。
If any of those validation attempts fail, the validating entity MUST unilaterally terminate the session.
これらの検証試行のいずれかが失敗した場合、検証エンティティはセッションを一方的に終了する必要があります。
The following sections describe the additional identity verification rules that apply to server-to-server and client-to-server streams.
次のセクションでは、サーバーからサーバーへのクライアントからサーバー間ストリームに適用される追加のID検証ルールについて説明します。
Once the identity of the stream peer has been validated, the validating entity SHOULD also correlate the validated identity with the 'from' address (if any) of the stream header it received from the peer. If the two identities do not match, the validating entity SHOULD terminate the connection attempt (however, there might be good reasons why the identities do not match, as described under Section 4.7.1).
ストリームピアのIDが検証されると、検証済みのエンティティは、検証済みのアイデンティティを、ピアから受け取ったストリームヘッダーの「From」アドレス(もしあれば)と相関させる必要があります。2つのアイデンティティが一致しない場合、検証エンティティは接続試行を終了する必要があります(ただし、セクション4.7.1で説明されているように、アイデンティティが一致しない理由があるかもしれません)。
For server certificates, the rules and guidelines defined in [TLS-CERTS] apply, with the proviso that the XmppAddr identifier specified under Section 13.7.1.4 is allowed as a reference identifier.
サーバー証明書の場合、[TLS-CERTS]で定義されているルールとガイドラインが適用され、セクション13.7.1.4で指定されているXMPPADDR識別子が参照識別子として許可されているという条件が付いています。
The identities to be checked are set as follows:
チェックされるアイデンティティは次のように設定されています。
o The initiating entity sets the source domain of its reference identifiers to the 'to' address it communicates in the initial stream header; i.e., this is the identity it expects the receiving entity to provide in a PKIX certificate.
o 開始エンティティは、初期ストリームヘッダーで通信する「to」アドレスに基準識別子のソースドメインを設定します。つまり、これは受信エンティティがPKIX証明書で提供することを期待するアイデンティティです。
o The receiving entity sets the source domain of its reference identifiers to the 'from' address communicated by the initiating entity in the initial stream header; i.e., this is the identity that the initiating entity is trying to assert.
o 受信エンティティは、初期ストリームヘッダーの開始エンティティによって伝達された「From」アドレスに参照識別子のソースドメインを設定します。つまり、これは開始エンティティが主張しようとしているアイデンティティです。
In the case of server-to-server communication, the matching procedure described in [TLS-CERTS] can be performed by an application server (receiving entity) when verifying an incoming server-to-server connection from a peer server (initiating entity). In this case, the receiving entity verifies the identity of the initiating entity and uses as the source domain of its reference identifiers the DNS domain name asserted by the initiating entity in the 'from' attribute of the initial stream header. However, the matching procedure described in [TLS-CERTS] remains unchanged and is applied in the same way.
サーバーからサーバーへの通信の場合、[TLS-CERTS]で説明されている一致手順は、ピアサーバー(エンティティの開始)から着信サーバーからサーバーへの接続を確認する際にアプリケーションサーバー(エンティティを受信)によって実行できます。。この場合、受信エンティティは、開始エンティティのIDを検証し、その参照識別子のソースドメインとして使用します。初期ストリームヘッダーの「From」属性の開始エンティティによって主張されたDNSドメイン名が主張されます。ただし、[TLS-Certs]で説明されている一致する手順は変更されておらず、同じ方法で適用されます。
When an XMPP server validates a certificate presented by a client, there are three possible cases, as discussed in the following sections.
XMPPサーバーがクライアントが提示した証明書を検証すると、次のセクションで説明するように、3つのケースがあります。
The identities to be checked are set as follows:
チェックされるアイデンティティは次のように設定されています。
o The client sets the source domain of its reference identifiers to the 'to' address it communicates in the initial stream header; i.e., this is the identity it expects the server to provide in a PKIX certificate.
o クライアントは、参照識別子のソースドメインを、最初のストリームヘッダーで通信する「to」アドレスに設定します。つまり、これはサーバーがPKIX証明書で提供することを期待するアイデンティティです。
o The server sets the bare JID of its reference identifiers to the 'from' address communicated by the initiating entity in the initial stream header; i.e., this is the identity that the client is trying to assert.
o サーバーは、初期ストリームヘッダーの開始エンティティによって通信された「From」アドレスに、参照識別子の裸のJIDを設定します。つまり、これはクライアントが主張しようとしているアイデンティティです。
If the client certificate appears to be certified by a certification path terminating in a trust anchor (as described in Section 6.1 of [PKIX]), the server MUST check the certificate for any instances of the XmppAddr as described under Section 13.7.1.4. There are three possible sub-cases:
クライアント証明書が信頼アンカーで終了する認定パス([PKIX]のセクション6.1で説明)によって認定されていると思われる場合、サーバーはセクション13.7.1.4に記載されているようにXMPPADDRの任意のインスタンスを証明書に確認する必要があります。3つのサブケースがあります。
Sub-Case #1: The server finds one XmppAddr for which the domainpart of the represented JID matches one of the configured FQDNs of the server; the server SHOULD use this represented JID as the validated identity of the client.
サブケース#1:サーバーは、表されたJIDのドメインパートがサーバーの構成されたFQDNSの1つと一致する1つのXMPPADDRを見つけます。サーバーは、これを表現したJIDをクライアントの検証済みのIDとして使用する必要があります。
Sub-Case #2: The server finds more than one XmppAddr for which the domainpart of the represented JID matches one of the configured FQDNs of the server; the server SHOULD use one of these represented JIDs as the validated identity of the client, choosing among them based on the bare JID contained in the 'from' address of the initial stream header (if any), based on the domainpart contained in the 'to' address of the initial stream header, or in accordance with local service policies (such as a lookup in a user database based on other information contained in the client certificate).
サブケース#2:サーバーは、表現されたJIDのドメインパートがサーバーの構成されたFQDNの1つと一致する複数のXmppaddrを見つけます。サーバーは、これらの表現されたJIDのいずれかをクライアントの検証されたIDとして使用する必要があります。クライアントの中から選択します。'初期ストリームヘッダーのアドレス、またはローカルサービスポリシー(クライアント証明書に含まれる他の情報に基づくユーザーデータベースの検索など)に従って。
Sub-Case #3: The server finds no XmppAddrs, or finds at least one XmppAddr but the domainpart of the represented JID does not match one of the configured FQDNs of the server; the server MUST NOT use the represented JID (if any) as the validated identity of the client but instead MUST validate the identity of the client using other means in accordance with local service policies (such as a lookup in a user database based on other information contained in the client certificate). If the identity cannot be so validated, the server MAY abort the validation process and terminate the TLS negotiation.
サブケース#3:サーバーはXMPPADDRを見つけられないか、少なくとも1つのXMPPADDRを見つけますが、表されたJIDのドメインパートは、サーバーの構成されたFQDNの1つと一致しません。サーバーは、クライアントの検証済みのIDとして表されたJID(もしあれば)を使用してはなりませんが、代わりにローカルサービスポリシーに従って他の手段を使用してクライアントのIDを検証する必要があります(他の情報に基づくユーザーデータベースのルックアップなどクライアント証明書に含まれています)。IDを検証できない場合、サーバーは検証プロセスを中止し、TLS交渉を終了する場合があります。
If the client certificate is certified by a Certificate Authority not known to the server, the server MUST proceed as under Case #1, Sub-Case #3.
クライアント証明書がサーバーに知られていない証明書当局によって認定されている場合、サーバーはケース#1、サブケース#3に基づいて進む必要があります。
If the client certificate is self-signed, the server MUST proceed as under Case #1, Sub-Case #3.
クライアント証明書が自己署名されている場合、サーバーはケース#1、サブケース#3に基づいて進む必要があります。
Because XMPP uses long-lived XML streams, it is possible that a certificate presented during stream negotiation might expire or be revoked while the stream is still live (this is especially relevant in the context of server-to-server streams). Therefore, each party to a long-lived stream SHOULD:
XMPPは長寿命のXMLストリームを使用しているため、ストリームの交渉中に提示された証明書が失効または取り消される可能性があります。したがって、長寿命のストリームの各当事者は次のようにする必要があります。
1. Cache the expiration date of the certificate presented by the other party and any certificates on which that certificate depends (such as a root or intermediate certificate for a certification authority), and close the stream when any such certificate expires, with a stream error of <reset/> (Section 4.9.3.16).
1. キャッシュ相手が提示した証明書の有効期限と、その証明書が依存する証明書(認定機関のルートまたは中間証明書など)をキャッシュし、そのような証明書が期限切れになったときにストリームを閉じます。リセット/>(セクション4.9.3.16)。
2. Periodically query the Online Certificate Status Protocol [OCSP] responder listed in the Authority Information Access (AIA) extension of the certificate presented by the other party and any certificates on which that certificate depends (such as a root or intermediate certificate for a certification authority), and close the stream if any such certificate has been revoked, with a stream error of <reset/> (Section 4.9.3.16). It is RECOMMENDED to query the OSCP responder at or near the time communicated via the nextUpdate field received in the OCSP response or, if the nextUpdate field is not set, to query every 24 hours.
2. 定期的に照会オンライン証明書ステータスプロトコル[OCSP] Responder Authority Information Access(AIA)相手が提示した証明書の拡張およびその証明書が依存する証明書(認定機関のルートまたは中級証明書など)、およびそのような証明書が取り消された場合、ストリームを閉じ、<reset/>(セクション4.9.3.16)のストリームエラーを使用します。OCSP応答で受信されたNextUpDateフィールドを介して通信された時間またはその近くでOSCP Responderを照会することをお勧めします。
After the stream is closed, the initiating entity from the closed stream will need to reconnect and the receiving entity will need to authenticate the initiating entity based on whatever certificate it presents during negotiation of the new stream.
ストリームが閉鎖された後、閉じたストリームからの開始エンティティは再接続する必要があり、受信エンティティは新しいストリームの交渉中に提示する証明書に基づいて開始エンティティを認証する必要があります。
Certificates MAY be used in extensions to XMPP for the purpose of application-layer encryption or authentication above the level of XML streams (e.g., for end-to-end encryption). Such extensions will define their own certificate handling rules. At a minimum, such extensions are encouraged to remain consistent with the rules defined in this specification, specifying additional rules only when necessary.
証明書は、XMLストリームのレベルを超えるアプリケーション層暗号化または認証を目的として、XMPPの拡張で使用できます(例:エンドツーエンド暗号化など)。このような拡張機能は、独自の証明書処理ルールを定義します。少なくとも、このような拡張機能は、この仕様で定義されているルールと一致し続けることが推奨され、必要に応じて追加のルールを指定します。
The following TLS ciphersuites and SASL mechanisms are mandatory-to-implement (naturally, implementations MAY support other ciphersuites and mechanisms as well). For security considerations related to TLS ciphersuites, see Section 13.9.4 and [TLS]. For security considerations related to SASL mechanisms, see Section 13.9.4, [SASL], and specifications for particular SASL mechanisms such as [SCRAM], [DIGEST-MD5], and [PLAIN].
以下のTLSシファースーツとSASLメカニズムは、必須から実装されています(当然、実装は他のシッパースイートとメカニズムもサポートする可能性があります)。TLS暗号に関連するセキュリティ上の考慮事項については、セクション13.9.4および[TLS]を参照してください。SASLメカニズムに関連するセキュリティ上の考慮事項については、セクション13.9.4、[SASL]、および[スクラム]、[Digest-MD5]、[Plain]などの特定のSASLメカニズムの仕様を参照してください。
For authentication only, servers and clients MUST support the SASL Salted Challenge Response Authentication Mechanism [SCRAM] -- in particular, the SCRAM-SHA-1 and SCRAM-SHA-1-PLUS variants.
認証のみの場合、サーバーとクライアントは、SASLサルドチャレンジ応答認証メカニズム[SCRAM]、特にScram-Sha-1-Plusバリアントをサポートする必要があります。
Security Warning: Even though it is possible to complete authentication only without confidentiality, it is RECOMMENDED for servers and clients to protect the stream with TLS before attempting authentication with SASL, both to help protect the information exchanged during SASL negotiation and to help prevent certain downgrade attacks as described under Section 13.9.4 and Section 13.9.5. Even if TLS is used, implementations SHOULD also enforce channel binding as described under Section 13.9.4.
セキュリティ警告:機密性なしでのみ認証を完了することは可能ですが、SASLでの認証を試みる前にサーバーとクライアントがTLSでストリームを保護することをお勧めします。セクション13.9.4およびセクション13.9.5に記載されている攻撃。TLSが使用されていても、セクション13.9.4に記載されているように、実装はチャネルバインディングも強制する必要があります。
Interoperability Note: The SCRAM-SHA-1 or SASL-SCRAM-SHA-1-PLUS variants of the SCRAM mechanism replace the SASL DIGEST-MD5 mechanism as XMPP's mandatory-to-implement password-based method for authentication only. For backward-compatibility with existing deployed infrastructure, implementations are encouraged to continue supporting the DIGEST-MD5 mechanism as specified in [DIGEST-MD5]; however, there are known interoperability issues with DIGEST-MD5 that make it impractical in the long term.
相互運用性注:スクラムメカニズムのSCRAM-SHA-1またはSASL-SCRAM-SHA-1-PLUSバリアントは、SASL Digest-MD5メカニズムをXMPPの必須のパスワードベースの認証方法のみとして置き換えます。既存の展開されたインフラストラクチャとの後方互換性のために、[Digest-MD5]で指定されているDigest-MD5メカニズムをサポートし続けることが実装が推奨されます。ただし、Digest-MD5には既知の相互運用性の問題があり、長期的には非現実的になります。
For confidentiality only, servers MUST support TLS with the TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite.
機密性のみについては、サーバーはTLS_RSA_WITH_AES_128_CBC_SHA CIPHERSUITEでTLSをサポートする必要があります。
Security Warning: Because a connection with confidentiality only has weaker security properties than a connection with both confidentiality and authentication, it is RECOMMENDED for servers and clients to prefer connections with both qualities (e.g., by protecting the stream with TLS before attempting authentication with SASL). In practice, confidentiality only is employed merely for server-to-server connections when the peer server does not present a trusted certificate and the servers use Server Dialback [XEP-0220] for weak identity verification, but TLS with confidentiality only is still desirable to protect the connection against casual eavesdropping.
セキュリティ警告:機密性との接続は、機密性と認証の両方の接続よりもセキュリティプロパティが弱いため、サーバーとクライアントが両方の品質との接続を好むことをお勧めします(たとえば、SASLで認証を試みる前にTLSでストリームを保護することにより)。実際には、Peer Serverが信頼できる証明書を提示せず、サーバーがServer Dialback [XEP-0220]を弱いID検証に使用している場合、機密性はサーバー間接続に対してのみ採用されますが、機密性を持つTLSはまだ望ましいです。カジュアルな盗聴からつながりを保護します。
For both confidentiality and authentication with passwords, servers and clients MUST implement TLS with the TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite plus SASL SCRAM, in particular the SCRAM-SHA-1 and SCRAM-SHA-1-PLUS variants (with SCRAM-SHA1-PLUS being preferred, as described under Section 13.9.4).
パスワードを使用した機密性と認証の両方について、サーバーとクライアントは、TLS_RSA_WITH_AES_128_CBC_SHA CipherSuite Plus SASL Scram、特にScram-Sha-1-Plusバリエーション(Scram-Sha1-Plusバリエーション、Scram-Sha1-Plusバリエーションを使用してTLSを実装する必要があります。セクション13.9.4で説明されています)。
As further explained in the following Security Warning, in certain circumstances a server MAY offer TLS with the TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite plus SASL PLAIN when it is not possible to offer more secure alternatives; in addition, clients SHOULD implement PLAIN over TLS in order to maximize interoperability with servers that are not able to deploy more secure alternatives.
次のセキュリティ警告でさらに説明したように、特定の状況では、サーバーは、より安全な代替品を提供できない場合、TLS_RSA_WITH_AES_128_CBC_SHA CipherSuite Plus SASL PlainとTLSを提供する場合があります。さらに、クライアントは、より安全な代替品を展開できないサーバーとの相互運用性を最大化するために、TLSを超えるプレーンを実装する必要があります。
Security Warning: In practice, many servers offer, and many clients use, TLS plus SASL PLAIN. The SCRAM-SHA-1 and especially SCRAM-SHA-1-PLUS variants of the SCRAM mechanism are strongly preferred over the PLAIN mechanism because of their superior security properties (including for SCRAM-SHA-1-PLUS the ability to enforce channel binding as described under Section 13.9.4). A client SHOULD treat TLS plus SASL PLAIN as a technology of last resort to be used only when interacting with a server that does not offer SCRAM (or other alternatives that are more secure than TLS plus SASL PLAIN), MUST prefer more secure mechanisms (e.g., EXTERNAL, SCRAM-SHA-1-PLUS, SCRAM-SHA-1, or the older DIGEST-MD5 mechanism) to the PLAIN mechanism, and MUST NOT use the PLAIN mechanism if the stream does not at a minimum have confidentiality and integrity protection via TLS with full certificate validation as described under Section 13.7.2.1. A server MUST NOT offer SASL PLAIN if the confidentiality and integrity of the stream are not protected via TLS or an equivalent security layer. A server SHOULD NOT offer TLS plus SASL PLAIN unless it is unable to offer some variant of SASL SCRAM (or other alternatives that are more secure than TLS plus SASL PLAIN), e.g., because the XMPP service depends for authentication purposes on a database or directory that is not under the control of the XMPP administrators, such as Pluggable Authentication Modules (PAM), an Lightweight Directory Access Protocol (LDAP) directory [LDAP], or an Authentication, Authorization, and Accounting (AAA) key management protocol (for guidance, refer to [AAA]). However, offering TLS plus SASL PLAIN even when the server supports more secure alternatives might be appropriate if the server needs to enable interoperability with an installed base of clients that do not yet support SCRAM or other alternatives that are more secure than TLS plus SASL PLAIN.
セキュリティ警告:実際には、多くのサーバーが提供し、多くのクライアントが使用しています。TLSプラスSASLプレーン。Scram-Sha-1、特にスクラムメカニズムのScram-Sha-1-Plusバリエーションは、優れたセキュリティ特性のために、プレーンメカニズムよりも強く好まれています(Scram-Sha-1-Plusを含むセクション13.9.4で説明されています)。クライアントは、TLS Plus SASL Plainを最後の手段として扱う必要があります。スクラム(またはTLSとSASLプレーンよりも安全な他の代替品)を提供しないサーバーと対話する場合にのみ使用する必要があります。、外部、Scram-Sha-1-Plus、Scram-Sha-1、または古いDigest-MD5メカニズム)プレーンメカニズムに対して、ストリームに最小限の機密性と整合性保護がない場合は、プレーンメカニズムを使用してはなりませんセクション13.7.2.1で説明されているように、完全な証明書の検証を持つTLSを介して。ストリームの機密性と整合性がTLSまたは同等のセキュリティレイヤーを介して保護されていない場合、サーバーはSASLプレーンを提供してはなりません。サーバーは、XMPPサービスがデータベースまたはディレクトリ上の認証を依存するため、SASLスクラム(またはTLSプラスSASLプレーンよりも安全な他の代替品を提供できない場合を除き、TLSプラスSASLプレーンを提供してはいけません。これは、プラグ可能な認証モジュール(PAM)、軽量ディレクトリアクセスプロトコル(LDAP)ディレクトリ[LDAP]、認証、承認、会計(AAA)主要な管理プロトコルなど、XMPP管理者の管理下にありません(ガイダンス用)、[aaa]を参照してください。ただし、サーバーがより安全な代替案をサポートする場合でも、TLSプラスSASLプレーンを提供する場合でも、サーバーがSCRAMやSASLプレーンよりも安全な他の代替品をまだサポートしていないクライアントのインストールされたベースとの相互運用性を有効にする必要がある場合でも適切です。
For both confidentiality and authentication without passwords, servers MUST and clients SHOULD implement TLS with the TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite plus the SASL EXTERNAL mechanism (see Appendix A of [SASL]) with PKIX certificates.
パスワードのない機密性と認証の両方について、サーバーとクライアントは、TLS_RSA_WITH_AES_128_CBC_SHA CipherSuiteとPKIX証明書を使用したSASL外部メカニズム([SASL]の付録Aを参照)を使用してTLSを実装する必要があります。
Both the client and the server MUST verify any base 64 data received during SASL negotiation (Section 6). An implementation MUST reject (not ignore) any characters that are not explicitly allowed by the base 64 alphabet; this helps to guard against creation of a covert channel that could be used to "leak" information.
クライアントとサーバーの両方が、SASL交渉中に受信したベース64データを確認する必要があります(セクション6)。実装は、ベース64アルファベットで明示的に許可されていない文字を拒否する必要があります(無視しません)。これは、情報を「漏れ」に使用できる秘密チャネルの作成を防ぐのに役立ちます。
An implementation MUST NOT break on invalid input and MUST reject any sequence of base 64 characters containing the pad ('=') character if that character is included as something other than the last character of the data (e.g., "=AAA" or "BBBB=CCC"); this helps to guard against buffer overflow attacks and other attacks on the implementation.
実装は無効な入力で壊れてはならず、その文字がデータの最後の文字以外のものとして含まれている場合、パッド( '=')文字を含むベース64文字のシーケンスを拒否する必要があります(例: "= aaa"または "bbbb = ccc ");これは、バッファーオーバーフロー攻撃や実装に対するその他の攻撃を防ぐのに役立ちます。
While base 64 encoding visually hides otherwise easily recognized information (such as passwords), it does not provide any computational confidentiality.
視覚的に隠されているベース64は、それ以外の場合は簡単に認識された情報(パスワードなど)を隠していますが、計算の機密性は提供されません。
All uses of base 64 encoding MUST follow the definition in Section 4 of [BASE64] and padding bits MUST be set to zero.
ベース64エンコードのすべての使用は、[base64]のセクション4の定義に従う必要があり、パディングビットはゼロに設定する必要があります。
XMPP typically relies on the Domain Name System (specifically [DNS-SRV] records) to resolve a fully qualified domain name to an IP address before a client connects to a server or before a peer server connects to another server. Before attempting to negotiate an XML stream, the initiating entity MUST NOT proceed until it has resolved the DNS domain name of the receiving entity as specified under Section 3 (although it is not necessary to resolve the DNS domain name before each connection attempt, because DNS resolution results can be temporarily cached in accordance with time-to-live values). However, in the absence of a secure DNS option (e.g., as provided by [DNSSEC]), a malicious attacker with access to the DNS server data, or able to cause spoofed answers to be cached in a recursive resolver, can potentially cause the initiating entity to connect to any XMPP server chosen by the attacker. Deployment and validation of server certificates help to prevent such attacks.
XMPPは通常、ドメイン名システム(特に[DNS-SRV]レコード)に依存して、クライアントがサーバーに接続する前、またはピアサーバーが別のサーバーに接続する前に、完全に適格なドメイン名をIPアドレスに解決します。XMLストリームを交渉しようとする前に、開始エンティティは、セクション3で指定されているように、受信エンティティのDNSドメイン名を解決するまで続行してはなりません(ただし、DNSが試行される前にDNSドメイン名を解決する必要はありません。解像度の結果は、時間までの値に応じて一時的にキャッシュできます)。ただし、安全なDNSオプションがない場合(例:[DNSSEC]によって提供されるように)、DNSサーバーデータにアクセスする悪意のある攻撃者、または再帰的なリゾルバーでスプーフィングされた回答をキャッシュすることができ、潜在的に原因になる可能性があります。攻撃者が選択したXMPPサーバーに接続するためのエンティティを開始します。サーバー証明書の展開と検証は、そのような攻撃を防ぐのに役立ちます。
XMPP itself does not directly mandate the use of any particular cryptographic hash function. However, technologies on which XMPP depends (e.g., TLS and particular SASL mechanisms), as well as various XMPP extensions, might make use of cryptographic hash functions. Those who implement XMPP technologies or who develop XMPP extensions are advised to closely monitor the state of the art regarding attacks against cryptographic hash functions in Internet protocols as they relate to XMPP. For helpful guidance, refer to [HASHES].
XMPP自体は、特定の暗号化ハッシュ関数の使用を直接義務付けていません。ただし、XMPPが依存するテクノロジー(TLSや特定のSASLメカニズムなど)、およびさまざまなXMPP拡張機能は、暗号化ハッシュ関数を利用する可能性があります。XMPPテクノロジーを実装している人、またはXMPP拡張機能を開発する人は、XMPPに関連するインターネットプロトコルの暗号化ハッシュ機能に対する攻撃に関する最先端を綿密に監視することをお勧めします。有用なガイダンスについては、[ハッシュ]を参照してください。
Because the initiating entity chooses an acceptable SASL mechanism from the list presented by the receiving entity, the initiating entity depends on the receiving entity's list for authentication. This dependency introduces the possibility of a downgrade attack if an attacker can gain control of the channel and therefore present a weak list of mechanisms. To mitigate this attack, the parties SHOULD protect the channel using TLS before attempting SASL negotiation and either perform full certificate validation as described under Section 13.7.2.1 or use a SASL mechanism that provides channel bindings, such as SCRAM-SHA-1-PLUS. (Protecting the channel via TLS with full certificate validation can help to ensure the confidentiality and integrity of the information exchanged during SASL negotiation.)
開始エンティティは、受信エンティティによって提示されたリストから許容可能なSASLメカニズムを選択しているため、開始エンティティは認証のための受信エンティティのリストに依存します。この依存関係は、攻撃者がチャネルの制御を獲得し、したがってメカニズムの弱いリストを提示できる場合、ダウングレード攻撃の可能性を導入します。この攻撃を軽減するために、当事者は、SASLの交渉を試みる前にTLSを使用してチャネルを保護し、セクション13.7.2.1で説明したように完全な証明書の検証を実行するか、スクラムSha-1-Plusなどのチャネルバインディングを提供するSASLメカニズムを使用する必要があります。(完全な証明書の検証でTLSを介してチャネルを保護することは、SASL交渉中に交換された情報の機密性と完全性を確保するのに役立ちます。)
The SASL framework itself does not provide a method for binding SASL authentication to a security layer providing confidentiality and integrity protection that was negotiated at a lower layer (e.g., TLS). Such a binding is known as a "channel binding" (see [CHANNEL]). Some SASL mechanisms provide channel bindings, which in the case of XMPP would typically be a binding to TLS (see [CHANNEL-TLS]). If a SASL mechanism provides a channel binding (e.g., this is true of [SCRAM]), then XMPP entities using that mechanism SHOULD prefer the channel binding variant (e.g., preferring "SCRAM-SHA-1-PLUS" over "SCRAM-SHA-1"). If a SASL mechanism does not provide a channel binding, then the mechanism cannot provide a way to verify that the source and destination end points to which the lower layer's security is bound are equivalent to the end points that SASL is authenticating; furthermore, if the end points are not identical, then the lower layer's security cannot be trusted to protect data transmitted between the SASL-authenticated entities. In such a situation, a SASL security layer SHOULD be negotiated that effectively ignores the presence of the lower-layer security.
SASLフレームワーク自体は、SASL認証をセキュリティレイヤーにバインドする方法を提供しません。セキュリティレイヤーは、下層層(TLSなど)で交渉された機密性と整合性保護を提供します。このような結合は、「チャネル結合」として知られています([チャネル]を参照)。一部のSASLメカニズムはチャネルバインディングを提供しますが、これはXMPPの場合に通常TLSへの結合になります([チャネルTLS]を参照)。SASLメカニズムがチャネル結合を提供する場合(これは[スクラム]に当てはまる場合)、そのメカニズムを使用してXMPPエンティティがチャネル結合バリアントを好む必要があります(例えば、スクラム-shaよりも「スクラム-sha-1-plus」を好む-1 ")。SASLメカニズムがチャネル結合を提供しない場合、メカニズムは、下層のセキュリティがバインドされているソースと宛先のエンドポイントがSASLが認証しているエンドポイントと同等であることを確認する方法を提供できません。さらに、エンドポイントが同一でない場合、下層のセキュリティは、SASL認証エンティティ間で送信されるデータを保護するために信頼できません。このような状況では、低層セキュリティの存在を効果的に無視するSASLセキュリティ層を交渉する必要があります。
Many deployed XMPP services authenticate client connections by means of passwords. It is well known that most human users choose relatively weak passwords. Although service provisioning is out of scope for this document, XMPP servers that allow password-based authentication SHOULD enforce minimal criteria for password strength to help prevent dictionary attacks. Because all password-based authentication mechanisms are susceptible to password guessing attacks, XMPP servers MUST limit the number of retries allowed during SASL authentication, as described under Section 6.4.5.
XMPPサービスの多くは、パスワードを使用してクライアント接続を認証しました。ほとんどの人間ユーザーが比較的弱いパスワードを選択することはよく知られています。このドキュメントのサービスプロビジョニングは範囲外ですが、パスワードベースの認証を許可するXMPPサーバーは、辞書攻撃を防ぐためにパスワード強度の最小限の基準を強制する必要があります。すべてのパスワードベースの認証メカニズムは、パスワード推測攻撃の影響を受けやすいため、XMPPサーバーは、セクション6.4.5で説明されているように、SASL認証中に許可されるRETRITEの数を制限する必要があります。
Some SASL mechanisms (e.g., [ANONYMOUS]) do not provide strong peer entity authentication of the client to the server. Service administrators are advised to enable such mechanisms with caution. Best practices for the use of the SASL ANONYMOUS mechanism in XMPP are described in [XEP-0175].
一部のSASLメカニズム([匿名]など)は、クライアントの強力なピアエンティティ認証をサーバーに提供しません。サービス管理者は、そのようなメカニズムを慎重に有効にすることをお勧めします。XMPPでのSASL匿名メカニズムの使用のためのベストプラクティスは、[XEP-0175]で説明されています。
Implementations of TLS typically support multiple versions of the Transport Layer Security protocol as well as the older Secure Sockets Layer (SSL) protocol. Because of known security vulnerabilities, XMPP servers and clients MUST NOT request, offer, or use SSL 2.0. For further details, see Appendix E.2 of [TLS] along with [TLS-SSL2].
TLSの実装は通常、Transport Layer Security Protocolの複数のバージョンと古いSecure Socketsレイヤー(SSL)プロトコルをサポートします。既知のセキュリティの脆弱性のため、XMPPサーバーとクライアントはSSL 2.0を要求、提供、または使用してはなりません。詳細については、[TLS-SSL2]とともに[TLS]の付録E.2を参照してください。
To prevent man-in-the-middle attacks, the TLS client (which might be an XMPP client or an XMPP server) MUST verify the certificate of the TLS server and MUST check its understanding of the server FQDN against the server's identity as presented in the TLS Certificate message as described under Section 13.7.2.1 (for further details, see [TLS-CERTS].
中間の攻撃を防ぐために、TLSクライアント(XMPPクライアントまたはXMPPサーバーである可能性がある)は、TLSサーバーの証明書を検証し、提示されたサーバーのIDに対してサーバーFQDNの理解を確認する必要があります。セクション13.7.2.1で説明されているTLS証明書メッセージ(詳細については、[TLS-Certs]を参照してください。
Support for TLS renegotiation is strictly OPTIONAL. However, implementations that support TLS renegotiation MUST implement and use the TLS Renegotiation Extension [TLS-NEG]. Further details are provided under Section 5.3.5.
TLS再交渉のサポートは厳密にオプションです。ただし、TLS再交渉をサポートする実装は、TLS再交渉拡張[TLS-Neg]を実装および使用する必要があります。詳細については、セクション5.3.5に記載されています。
The use of UTF-8 makes it possible to transport non-ASCII characters, and thus enables character "spoofing" scenarios, in which a displayed value appears to be something other than it is. Furthermore, there are known attack scenarios related to the decoding of UTF-8 data. On both of these points, refer to [UTF-8] for more information.
UTF-8を使用すると、非ASCII文字を輸送できるため、表示された値が表示以外のものであるように見える文字「スプーフィング」シナリオが可能になります。さらに、UTF-8データのデコードに関連する既知の攻撃シナリオがあります。これらの両方のポイントで、詳細については[UTF-8]を参照してください。
Because XMPP is an application profile of the Extensible Markup Language [XML], many of the security considerations described in [XML-MEDIA] and [XML-GUIDE] also apply to XMPP. Several aspects of XMPP mitigate the risks described there, such as the prohibitions specified under Section 11.1 and the lack of external references to style sheets or transformations, but these mitigating factors are by no means comprehensive.
XMPPは拡張可能なマークアップ言語[XML]のアプリケーションプロファイルであるため、[XML-MEDIA]および[XML-GUIDE]で説明されているセキュリティ上の考慮事項の多くもXMPPに適用されます。XMPPのいくつかの側面は、セクション11.1で指定されている禁止やスタイルシートまたは変換への外部参照の欠如など、そこに記載されているリスクを軽減しますが、これらの緩和要因は決して包括的ではありません。
A client's IP address and method of access MUST NOT be made public by a server (e.g., as typically occurs in [IRC]).
クライアントのIPアドレスとアクセス方法は、サーバーによって公開されてはなりません(たとえば、[IRC]で発生するように)。
One of the core aspects of XMPP is presence: information about the network availability of an XMPP entity (i.e., whether the entity is currently online or offline). A "presence leak" occurs when an entity's network availability is inadvertently and involuntarily revealed to a second entity that is not authorized to know the first entity's network availability.
XMPPの中心的な側面の1つは存在です。XMPPエンティティのネットワーク可用性に関する情報(つまり、エンティティが現在オンラインであるかオフラインであるか)です。エンティティのネットワークの可用性が、最初のエンティティのネットワークの可用性を知ることを許可されていない2番目のエンティティに不注意に不注意に明らかにされたときに、「プレゼンスリーク」が発生します。
Although presence is discussed more fully in [XMPP-IM], it is important to note that an XMPP server MUST NOT leak presence. In particular at the core XMPP level, real-time addressing and network availability is associated with a specific connected resource; therefore, any disclosure of a connected resource's full JID comprises a presence leak. To help prevent such a presence leak, a server MUST NOT return different stanza errors depending on whether a potential attacker sends XML stanzas to the entity's bare JID (<localpart@domainpart>) or full JID (<localpart@domainpart/resourcepart>).
[XMPP-IM]で存在感はより完全に議論されていますが、XMPPサーバーが存在を漏らしてはならないことに注意することが重要です。特に、コアXMPPレベルでは、リアルタイムアドレス指定とネットワークの可用性は、特定の接続されたリソースに関連付けられています。したがって、接続されたリソースの完全なJIDの開示は、存在漏れで構成されています。このような存在漏れを防ぐために、サーバーは、潜在的な攻撃者がXMLスタンザをエンティティのベアジッド(<localpart@domainpart>)またはフルJID(<localpart@domainpart/resourcepart>)に送信するかどうかに応じて、別のスタンザエラーを返してはなりません。
If a server generates an error stanza in response to receiving a stanza for a user account that does not exist, using the <service-unavailable/> stanza error condition (Section 8.3.3.19) can help protect against directory harvesting attacks, since this is the same error condition that is returned if, for instance, the namespace of an IQ child element is not understood, or if "offline message storage" ([XEP-0160]) or message forwarding is not enabled for a domain. However, subtle differences in the exact XML of error stanzas, as well as in the timing with which such errors are returned, can enable an attacker to determine the network presence of a user when more advanced blocking technologies are not used (see for instance [XEP-0016] and [XEP-0191]). Therefore, a server that exercises a higher level of caution might not return any error at all in response to certain kinds of received stanzas, so that a non-existent user appears to behave like a user that has no interest in conversing with the sender.
サーバーが存在しないユーザーアカウントのスタンザを受信することに応じてエラースタンザを生成した場合、<Service-Unavable/> Stanzaエラー条件(セクション8.3.3.19)を使用すると、これはディレクトリの収穫攻撃から保護するのに役立ちます。たとえば、IQチャイルド要素の名前空間が理解されていない場合、または「オフラインメッセージストレージ」([XEP-0160])またはメッセージ転送がドメインに対して有効になっていない場合に返されるのと同じエラー条件。ただし、エラースタンザの正確なXMLの微妙な違い、およびそのようなエラーが返されるタイミングでは、攻撃者がより高度なブロッキングテクノロジーを使用していない場合にユーザーのネットワークの存在を判断できるようにすることができます(たとえば[参照]XEP-0016]および[XEP-0191])。したがって、より高いレベルの注意を払うサーバーは、特定の種類の受信スタンザに応じてエラーをまったく返さない可能性があります。そのため、存在しないユーザーは、送信者との会話に関心のないユーザーのように振る舞います。
[DOS] defines denial of service as follows:
[DOS]は、サービスの拒否を次のように定義します。
A denial-of-service (DoS) attack is an attack in which one or more machines target a victim and attempt to prevent the victim from doing useful work. The victim can be a network server, client or router, a network link or an entire network, an individual Internet user or a company doing business using the Internet, an Internet Service Provider (ISP), country, or any combination of or variant on these.
サービス拒否(DOS)攻撃は、1つ以上のマシンが被害者を標的とし、被害者が有用な仕事をするのを防ぐための攻撃です。被害者は、ネットワークサーバー、クライアントまたはルーター、ネットワークリンクまたはネットワーク全体、個々のインターネットユーザーまたはインターネットを使用してビジネスを行っている企業、インターネットサービスプロバイダー(ISP)、国、または任意の組み合わせまたはバリアントを使用しています。これらは。
Some considerations discussed in this document help to prevent denial-of-service attacks (e.g., the mandate that a server MUST NOT process XML stanzas from clients that have not yet provided appropriate authentication credentials and MUST NOT process XML stanzas from peer servers whose identity it has not either authenticated via SASL or weakly verified via Server Dialback).
このドキュメントで議論されているいくつかの考慮事項は、サービス拒否攻撃の防止に役立ちます(たとえば、サーバーがまだ適切な認証資格情報を提供していないクライアントからXMLスタンザを処理してはならず、アイデンティティを持つピアサーバーからXMLスタンザを処理してはならないという委任状SASLを介して認証されていないか、サーバーダイヤルバックを介して弱く検証されていません)。
In addition, [XEP-0205] provides a detailed discussion of potential denial-of-service attacks against XMPP systems along with best practices for preventing such attacks. The recommendations include:
さらに、[XEP-0205]は、そのような攻撃を防ぐためのベストプラクティスとともに、XMPPシステムに対するサービス拒否攻撃の潜在的な攻撃の詳細な議論を提供します。推奨事項は次のとおりです。
1. A server implementation SHOULD enable a server administrator to limit the number of TCP connections that it will accept from a given IP address at any one time. If an entity attempts to connect but the maximum number of TCP connections has been reached, the receiving server MUST NOT allow the new connection to proceed.
1. サーバーの実装により、サーバー管理者は、一度に特定のIPアドレスから受け入れるTCP接続の数を制限できるようにする必要があります。エンティティが接続しようとするが、TCP接続の最大数に到達した場合、受信サーバーは新しい接続を続行してはなりません。
2. A server implementation SHOULD enable a server administrator to limit the number of TCP connection attempts that it will accept from a given IP address in a given time period. If an entity attempts to connect but the maximum number of connection attempts has been reached, the receiving server MUST NOT allow the new connection to proceed.
2. サーバーの実装により、サーバー管理者は、特定の期間に特定のIPアドレスから受け入れるTCP接続試行の数を制限できるようにする必要があります。エンティティが接続を試みたが、接続の試みの最大数に達した場合、受信サーバーは新しい接続を続行してはなりません。
3. A server implementation SHOULD enable a server administrator to limit the number of connected resources it will allow an account to bind at any one time. If a client attempts to bind a resource but it has already reached the configured number of allowable resources, the receiving server MUST return a <resource-constraint/> stanza error (Section 8.3.3.18).
3. サーバーの実装により、サーバー管理者が接続されたリソースの数を制限できるようにする必要があります。これにより、アカウントがいつでもバインドできるようになります。クライアントがリソースをバインドしようとしているが、設定された許容リソースの数にすでに到達している場合、受信サーバーは<リソース-Constraint/> Stanzaエラー(セクション8.3.3.18)を返す必要があります。
4. A server implementation SHOULD enable a server administrator to limit the size of stanzas it will accept from a connected client or peer server (where "size" is inclusive of all XML markup as defined in Section 2.4 of [XML], from the opening "<" character of the stanza to the closing ">" character). A deployed server's maximum stanza size MUST NOT be smaller than 10000 bytes, which reflects a reasonable compromise between the benefits of expressiveness for originating entities and the costs of stanza processing for servers. A server implementation SHOULD NOT blindly set 10000 bytes as the value for all deployments but instead SHOULD enable server administrators to set their own limits. If a connected resource or peer server sends a stanza that violates the upper limit, the receiving server MUST either return a <policy-violation/> stanza error (Section 8.3.3.12), thus allowing the sender to recover, or close the stream with a <policy-violation/> stream error (Section 4.9.3.14).
4. サーバーの実装では、サーバー管理者が接続されたクライアントまたはピアサーバーから受け入れるスタンザのサイズを制限できるようにする必要があります(「サイズ」には、[XML]のセクション2.4で定義されているすべてのXMLマークアップがオープニング "<<<<「スタンザの閉鎖へのキャラクター」>「文字)。展開されたサーバーの最大スタンザサイズは、10000バイトを超えてはなりません。これは、発信エンティティの表現力の利点とサーバーのスタンザ処理のコストとの合理的な妥協を反映しています。サーバーの実装では、すべての展開の値として10000バイトを盲目的に設定しないでください。代わりに、サーバー管理者が独自の制限を設定できるようにする必要があります。接続されたリソースまたはピアサーバーが上限に違反するスタンザを送信する場合、受信サーバーは<ポリシーバイオレーション/>スタンザエラー(セクション8.3.3.12)を返す必要があります。a <ポリシーバイオレーション/>ストリームエラー(セクション4.9.3.14)。
5. A server implementation SHOULD enable a server administrator to limit the number of XML stanzas that a connected client is allowed to send to distinct recipients within a given time period. If a connected client sends too many stanzas to distinct recipients in a given time period, the receiving server SHOULD NOT process the stanza and instead SHOULD return a <policy-violation/> stanza error (Section 8.3.3.12).
5. サーバーの実装により、サーバー管理者は、接続されたクライアントが特定の期間内に異なる受信者に送信できるXMLスタンザの数を制限できるようにする必要があります。接続されたクライアントが特定の期間に個別の受信者にあまりにも多くのスタンザを送信する場合、受信サーバーはスタンザを処理しないでください。
6. A server implementation SHOULD enable a server administrator to limit the amount of bandwidth it will allow a connected client or peer server to use in a given time period.
6. サーバーの実装により、サーバー管理者は、接続されたクライアントまたはピアサーバーが特定の期間に使用できるようにする帯域幅を制限できるようにする必要があります。
7. A server implementation MAY enable a server administrator to limit the types of stanzas (based on the extended content "payload") that it will allow a connected resource or peer server send over an active connection. Such limits and restrictions are a matter of deployment policy.
7. サーバーの実装により、サーバー管理者は、接続されたリソースまたはピアサーバーがアクティブな接続を送信できるようにするスタンザの種類(拡張コンテンツ「ペイロード」に基づく)を制限できる場合があります。このような制限と制限は、展開ポリシーの問題です。
8. A server implementation MAY refuse to route or deliver any stanza that it considers to be abusive, with or without returning an error to the sender.
8. サーバーの実装では、送信者にエラーを返すか、または返すことなく、虐待的であると考えるスタンザのルーティングまたは配信を拒否する場合があります。
For more detailed recommendations regarding denial-of-service attacks in XMPP systems, refer to [XEP-0205].
XMPPシステムのサービス拒否攻撃に関するより詳細な推奨事項については、[XEP-0205]を参照してください。
Although DNS SRV records can instruct connecting entities to use TCP ports other than 5222 (client-to-server) and 5269 (server-to-server), communication using XMPP typically occurs over those ports, which are registered with the IANA (see Section 14). Use of these well-known ports allows administrators to easily enable or disable XMPP activity through existing and commonly deployed firewalls.
DNS SRVレコードは、接続エンティティに5222(クライアントからサーバー)および5269以外のTCPポートを使用するように指示できますが、XMPPを使用した通信は通常、IANAに登録されているポートで発生します(セクションを参照14)。これらの有名なポートを使用すると、管理者は既存および一般的に展開されているファイアウォールを介してXMPPアクティビティを簡単に有効または無効にすることができます。
The term "federation" is commonly used to describe communication between two servers.
「フェデレーション」という用語は、2つのサーバー間の通信を記述するために一般的に使用されます。
Because service provisioning is a matter of policy, it is OPTIONAL for any given server to support federation. If a particular server enables federation, it SHOULD enable strong security as previously described to ensure both authentication and confidentiality; compliant implementations SHOULD support TLS and SASL for this purpose.
サービスプロビジョニングはポリシーの問題であるため、特定のサーバーがフェデレーションをサポートすることはオプションです。特定のサーバーがフェデレーションを有効にする場合、以前に説明したように強力なセキュリティを有効にして、認証と機密性の両方を確保する必要があります。準拠した実装は、この目的のためにTLSとSASLをサポートする必要があります。
Before RFC 3920 defined TLS plus SASL EXTERNAL with certificates for encryption and authentication of server-to-server streams, the only method for weak identity verification of a peer server was Server Dialback as defined in [XEP-0220]. Even when [DNSSEC] is used, Server Dialback provides only weak identity verification and provides no confidentiality or integrity. At the time of writing, Server Dialback is still the most widely used technique for some level of assurance over server-to-server streams. This reality introduces the possibility of a downgrade attack from TLS + SASL EXTERNAL to Server Dialback if an attacker can gain control of the channel and therefore convince the initiating server that the receiving server does not support TLS or does not have an appropriate certificate. To help prevent this attack, the parties SHOULD protect the channel using TLS before proceeding, even if the presented certificates are self-signed or otherwise untrusted.
RFC 3920が、サーバー間ストリームの暗号化と認証の証明書を備えたTLSとSASL外部を定義する前に、ピアサーバーの弱いID検証の唯一の方法は[XEP-0220]で定義されているサーバーダイヤルバックでした。[DNSSEC]を使用している場合でも、サーバーダイヤルバックは弱いID検証のみを提供し、機密性や整合性を提供しません。執筆時点では、サーバーダイヤルバックは、サーバーからサーバーへのストリームよりもある程度の保証のために、依然として最も広く使用されている手法です。この現実は、攻撃者がチャネルの制御を獲得できるため、サーバーのダイヤルバック外TLS SASLからのダウングレード攻撃の可能性を導入し、したがって、受信サーバーがTLSをサポートしていないか、適切な証明書を持っていないことを開始サーバーに納得させます。この攻撃を防ぐために、当事者は、提示された証明書が自己署名されているか、そうでなければ信頼されていない場合でも、先に進む前にTLSを使用してチャネルを保護する必要があります。
Systems that provide both peer entity authentication and data integrity have the potential to enable an entity to prove to a third party that another entity intended to send particular data. Although XMPP systems can provide both peer entity authentication and data integrity, XMPP was never designed to provide non-repudiation.
ピアエンティティ認証とデータの整合性の両方を提供するシステムは、別のエンティティが特定のデータを送信することを意図したことをエンティティが第三者に証明できるようにする可能性があります。XMPPシステムは、ピアエンティティ認証とデータの整合性の両方を提供できますが、XMPPは非和解を提供するように設計されていません。
The following subsections update the registrations provided in [RFC3920]. This section is to be interpreted according to [IANA-GUIDE].
次のサブセクションでは、[RFC3920]で提供される登録を更新します。このセクションは、[Iana-Guide]に従って解釈されます。
A URN sub-namespace for STARTTLS negotiation data in the Extensible Messaging and Presence Protocol (XMPP) is defined as follows. (This namespace name adheres to the format defined in [XML-REG].)
拡張可能なメッセージングおよび存在プロトコル(XMPP)のStartTLSネゴシエーションデータのURNサブネームスペースは、次のように定義されます。(この名前空間名は、[xml-reg]で定義されている形式に付着します。)
URI: urn:ietf:params:xml:ns:xmpp-tls Specification: RFC 6120 Description: This is the XML namespace name for STARTTLS negotiation data in the Extensible Messaging and Presence Protocol (XMPP) as defined by RFC 6120. Registrant Contact: IESG <iesg@ietf.org>
A URN sub-namespace for SASL negotiation data in the Extensible Messaging and Presence Protocol (XMPP) is defined as follows. (This namespace name adheres to the format defined in [XML-REG].)
拡張可能なメッセージと存在プロトコル(XMPP)のSASLネゴシエーションデータのurnサブネームスペースは、次のように定義されます。(この名前空間名は、[xml-reg]で定義されている形式に付着します。)
URI: urn:ietf:params:xml:ns:xmpp-sasl Specification: RFC 6120 Description: This is the XML namespace name for SASL negotiation data in the Extensible Messaging and Presence Protocol (XMPP) as defined by RFC 6120. Registrant Contact: IESG <iesg@ietf.org>
A URN sub-namespace for stream error data in the Extensible Messaging and Presence Protocol (XMPP) is defined as follows. (This namespace name adheres to the format defined in [XML-REG].)
拡張可能なメッセージと存在プロトコル(XMPP)のストリームエラーデータのURNサブネームスペースは、次のように定義されます。(この名前空間名は、[xml-reg]で定義されている形式に付着します。)
URI: urn:ietf:params:xml:ns:xmpp-streams Specification: RFC 6120 Description: This is the XML namespace name for stream error data in the Extensible Messaging and Presence Protocol (XMPP) as defined by RFC 6120. Registrant Contact: IESG <iesg@ietf.org>
A URN sub-namespace for resource binding in the Extensible Messaging and Presence Protocol (XMPP) is defined as follows. (This namespace name adheres to the format defined in [XML-REG].)
拡張可能なメッセージングおよび存在プロトコル(XMPP)におけるリソースバインディングのためのURNサブネームスペースは、次のように定義されます。(この名前空間名は、[xml-reg]で定義されている形式に付着します。)
URI: urn:ietf:params:xml:ns:xmpp-bind Specification: RFC 6120 Description: This is the XML namespace name for resource binding in the Extensible Messaging and Presence Protocol (XMPP) as defined by RFC 6120. Registrant Contact: IESG <iesg@ietf.org>
A URN sub-namespace for stanza error data in the Extensible Messaging and Presence Protocol (XMPP) is defined as follows. (This namespace name adheres to the format defined in [XML-REG].)
拡張可能なメッセージと存在プロトコル(XMPP)のスタンザエラーデータのurnサブネームスペースは、次のように定義されます。(この名前空間名は、[xml-reg]で定義されている形式に付着します。)
URI: urn:ietf:params:xml:ns:xmpp-stanzas Specification: RFC 6120 Description: This is the XML namespace name for stanza error data in the Extensible Messaging and Presence Protocol (XMPP) as defined by RFC 6120. Registrant Contact: IESG <iesg@ietf.org>
The IANA has registered "xmpp" as a [GSS-API] service name, as defined under Section 6.6.
IANAは、セクション6.6で定義されているように、「XMPP」を[GSS-API]サービス名として登録しています。
The IANA has registered "xmpp-client" and "xmpp-server" as keywords for [TCP] ports 5222 and 5269, respectively. In accordance with [IANA-PORTS], this document updates the existing registration, as follows.
IANAは、それぞれ[TCP]ポート5222および5269のキーワードとして「XMPP-Client」と「XMPP-Server」を登録しています。[Iana-Ports]に従って、このドキュメントは、次のように既存の登録を更新します。
Service Name: xmpp-client Transport Protocol: TCP Description: A service offering support for connections by XMPP client applications Registrant: IETF XMPP Working Group Contact: IESG <iesg@ietf.org> Reference: RFC 6120 Port Number: 5222 Service Name: xmpp-server Transport Protocol: TCP Description: A service offering support for connections by XMPP server applications Registrant: IETF XMPP Working Group Contact: IESG <iesg@ietf.org> Reference: RFC 6120 Port Number: 5269
This section describes a protocol feature set that summarizes the conformance requirements of this specification. This feature set is appropriate for use in software certification, interoperability testing, and implementation reports. For each feature, this section provides the following information:
このセクションでは、この仕様の適合要件を要約するプロトコル機能セットについて説明します。この機能セットは、ソフトウェア認証、相互運用性テスト、および実装レポートでの使用に適しています。各機能について、このセクションは次の情報を提供します。
o A human-readable name
o 人間の読み取り可能な名前
o An informational description
o 情報説明
o A reference to the particular section of this document that normatively defines the feature
o このドキュメントの特定のセクションへの参照は、機能を規範的に定義しています
o Whether the feature applies to the Client role, the Server role, or both (where "N/A" signifies that the feature is not applicable to the specified role)
o 機能がクライアントの役割、サーバーの役割、またはその両方に適用されるかどうか(「n/a」は、機能が指定された役割に適用されないことを意味します)
o Whether the feature MUST or SHOULD be implemented, where the capitalized terms are to be understood as described in [KEYWORDS]
o 機能を実装する必要があるか、実装する必要があるか、[キーワード]で説明されているように、資本化された用語を理解する必要があるかどうか
The feature set specified here attempts to adhere to the concepts and formats proposed by Larry Masinter within the IETF's NEWTRK Working Group in 2005, as captured in [INTEROP]. Although this feature set is more detailed than called for by [REPORTS], it provides a suitable basis for the generation of implementation reports to be submitted in support of advancing this specification from Proposed Standard to Draft Standard in accordance with [PROCESS].
ここで指定されている機能セットは、[Interop]で捕獲されたように、2005年にIETFのNewTrkワーキンググループ内のLarry Masinterによって提案された概念と形式を遵守しようとします。この機能セットは[レポート]で求められているよりも詳細ですが、[プロセス]に従って提案された標準からドラフト標準へのこの仕様を進めることをサポートするために提出される実装レポートの生成に適した根拠を提供します。
Feature: bind-gen Description: Generate a random resource on demand. Section: Section 7.6 Roles: Client N/A, Server MUST.
機能:Bind-Gen説明:オンデマンドでランダムリソースを生成します。セクション:セクション7.6の役割:クライアントN/A、サーバーは必要です。
Feature: bind-mtn Description: Consider resource binding as mandatory-to-negotiate. Section: Section 7.3.1 Roles: Client MUST, Server MUST.
機能:Bind-MTN説明:リソースバインディングは必須であると考えてください。セクション:セクション7.3.1の役割:クライアントは、サーバーが必要です。
Feature: bind-restart Description: Do not restart the stream after negotiation of resource binding. Section: Section 7.3.2 Roles: Client MUST, Server MUST.
機能:バインドリスタート説明:リソースバインディングの交渉後にストリームを再起動しないでください。セクション:セクション7.3.2の役割:クライアントは、サーバーが必要です。
Feature: bind-support Description: Support binding of client resources to an authenticated stream. Section: Section 7 Roles: Client MUST, Server MUST.
機能:バインドサポートの説明:クライアントリソースの認証されたストリームへのバインディングをサポートします。セクション:セクション7の役割:クライアントは、サーバーが必要です。
Feature: sasl-correlate Description: When authenticating a stream peer using SASL, correlate the authentication identifier resulting from SASL negotiation with the 'from' address (if any) of the stream header it received from the peer. Section: Section 6.4.6 Roles: Client SHOULD, Server SHOULD.
機能:SASL相関の説明:SASLを使用してストリームピアを認証する場合、SASLの交渉から生じる認証識別子を、ピアから受け取ったストリームヘッダーの「from」アドレス(存在する場合)と相関させます。セクション:セクション6.4.6の役割:クライアントは、サーバーが必要です。
Feature: sasl-errors Description: Support SASL errors during the negotiation process. Section: Section 6.5 Roles: Client MUST, Server MUST.
機能:SASL-ERRORS説明:交渉プロセス中のSASLエラーをサポートします。セクション:セクション6.5の役割:クライアントは、サーバーが必要です。
Feature: sasl-mtn Description: Consider SASL as mandatory-to-negotiate. Section: Section 6.3.1 Roles: Client MUST, Server MUST.
機能:SASL-MTN説明:SASLを必須と交渉すると考えてください。セクション:セクション6.3.1ロール:クライアントは、サーバーが必要です。
Feature: sasl-restart Description: Initiate or handle a stream restart after SASL negotiation. Section: Section 6.3.2 Roles: Client MUST, Server MUST.
機能:SASL-Restart説明:SASL交渉後にストリーム再起動を開始または処理します。セクション:セクション6.3.2の役割:クライアントは、サーバーが必要です。
Feature: sasl-support Description: Support the Simple Authentication and Security Layer for stream authentication. Section: Section 6 Roles: Client MUST, Server MUST.
機能:SASL-Support説明:ストリーム認証のための簡単な認証とセキュリティレイヤーをサポートします。セクション:セクション6の役割:クライアントは、サーバーが必要です。
Feature: security-mti-auth-scram Description: Support the SASL SCRAM mechanism for authentication only (this implies support for both the SCRAM-SHA-1 and SCRAM-SHA-1-PLUS variants). Section: Section 13.8 Roles: Client MUST, Server MUST.
機能:Security-MTI-Auth-Scram説明:認証のみのSASLスクラムメカニズムをサポートします(これは、Scram-Sha-1とScram-Sha-1-Plusバリアントの両方のサポートを意味します)。セクション:セクション13.8の役割:クライアントは、サーバーが必要です。
Feature: security-mti-both-external Description: Support TLS with SASL EXTERNAL for confidentiality and authentication. Section: Section 13.8 Roles: Client SHOULD, Server MUST.
機能:セキュリティ-MTI-BOTH-EXTENTARCTION:SASL外部でTLSをサポートして、機密性と認証を行います。セクション:セクション13.8の役割:クライアントは、サーバーが必要です。
Feature: security-mti-both-plain Description: Support TLS using the TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite plus the SASL PLAIN mechanism for confidentiality and authentication. Section: Section 13.8 Roles: Client SHOULD, Server MAY.
機能:セキュリティ-MTI-BOTH-PLAIN説明:TLS_RSA_WITH_AES_128_CBC_SHA CIPHERSUITEを使用してTLSをサポートし、機密性と認証のためのSASLプレーンメカニズム。セクション:セクション13.8の役割:クライアントは、サーバーが必要です。
Feature: security-mti-both-scram Description: Support TLS using the TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite plus the SCRAM-SHA-1 and SCRAM-SHA-1-PLUS variants of the SASL SCRAM mechanism for confidentiality and authentication. Section: Section 13.8 Roles: Client MUST, Server MUST.
機能:セキュリティ-MTI-BOTHSCRAM説明:TLS_RSA_WITH_AES_128_CBC_SHA CIPHERSUITEを使用してTLSをサポートし、SASL SCRAMメカニズムのSCRAM-SHA-1PLUSバリエーションと機密性と認証のためのSCRAM-SHA-1-PLUSバリエーション。セクション:セクション13.8の役割:クライアントは、サーバーが必要です。
Feature: security-mti-confidentiality Description: Support TLS using the TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite for confidentiality only. Section: Section 13.8 Roles: Client N/A, Server SHOULD.
機能:Security-MTI-Confidentiality説明:TLS_RSA_WITH_AES_128_CBC_SHA CIPHERSUITEを使用してTLSをサポートします。セクション:セクション13.8の役割:クライアントN/A、サーバーは必要です。
Feature: stanza-attribute-from Description: Support the common 'from' attribute for all stanza kinds. Section: Section 8.1.2 Roles: Client MUST, Server MUST.
機能:Stanza-Attribute-from説明:すべてのスタンザ種類の属性から共通の「属性」をサポートします。セクション:セクション8.1.2ロール:クライアントは、サーバーが必要です。
Feature: stanza-attribute-from-stamp Description: Stamp or rewrite the 'from' address of all stanzas received from connected clients. Section: Section 8.1.2.1 Roles: Client N/A, Server MUST.
機能:Stanza-Attribute-From-Stamp説明:接続されたクライアントから受け取ったすべてのスタンザの「From」アドレスをスタンプまたは書き直します。セクション:セクション8.1.2.1ロール:クライアントN/A、サーバーは必要です。
Feature: stanza-attribute-from-validate Description: Validate the 'from' address of all stanzas received from peer servers. Section: Section 8.1.2.2 Roles: Client N/A, Server MUST.
機能:Stanza-Attribute-From-Validate説明:ピアサーバーから受け取ったすべてのスタンザのアドレスを検証します。セクション:セクション8.1.2.2の役割:クライアントN/A、サーバーは必要です。
Feature: stanza-attribute-id Description: Support the common 'id' attribute for all stanza kinds. Section: Section 8.1.3 Roles: Client MUST, Server MUST.
機能:Stanza-Attribute-ID説明:すべてのスタンザ種類の共通「ID」属性をサポートします。セクション:セクション8.1.3の役割:クライアントは、サーバーが必要です。
Feature: stanza-attribute-to Description: Support the common 'to' attribute for all stanza kinds. Section: Section 8.1.1 Roles: Client MUST, Server MUST.
機能:Stanza-Attribute-to説明:すべてのスタンザ種類の属性をサポートします。セクション:セクション8.1.1ロール:クライアントは、サーバーが必要です。
Feature: stanza-attribute-to-validate Description: Ensure that all stanzas received from peer servers include a 'to' address. Section: Section 8.1.1 Roles: Client N/A, Server MUST.
機能:Stanza-Attribute-to-Validate説明:ピアサーバーから受け取ったすべてのスタンザに「To」アドレスが含まれていることを確認してください。セクション:セクション8.1.1ロール:クライアントN/A、サーバーは必要です。
Feature: stanza-attribute-type Description: Support the common 'type' attribute for all stanza kinds. Section: Section 8.1.4 Roles: Client MUST, Server MUST.
機能:Stanza-Attribute-Type説明:すべてのスタンザ種類の一般的な「タイプ」属性をサポートします。セクション:セクション8.1.4役割:クライアントは、サーバーが必要です。
Feature: stanza-attribute-xmllang Description: Support the common 'xml:lang' attribute for all stanza kinds. Section: Section 8.1.5 Roles: Client MUST, Server MUST.
機能:Stanza-Attribute-Xmlang説明:すべてのスタンザ種類の一般的な 'XML:Lang'属性をサポートします。セクション:セクション8.1.5ロール:クライアントは、サーバーが必要です。
Feature: stanza-error Description: Generate and handle stanzas of type "error" for all stanza kinds. Section: Section 8.3 Roles: Client MUST, Server MUST.
機能:スタンザエラーの説明:すべてのスタンザ種類のタイプ「エラー」のスタンザを生成および処理します。セクション:セクション8.3の役割:クライアントは、サーバーが必要です。
Feature: stanza-error-child Description: Ensure that stanzas of type "error" include an <error/> child element. Section: Section 8.3 Roles: Client MUST, Server MUST.
機能:Stanza-Error-Childの説明:タイプ「エラー」のスタンザには、<エラー/>子要素が含まれていることを確認してください。セクション:セクション8.3の役割:クライアントは、サーバーが必要です。
Feature: stanza-error-id Description: Ensure that stanzas of type "error" preserve the 'id' provided in the triggering stanza. Section: Section 8.3 Roles: Client MUST, Server MUST.
機能:Stanza-Error-ID説明:タイプの「エラー」のスタンザが、トリガースタンザで提供される「ID」を保持していることを確認してください。セクション:セクション8.3の役割:クライアントは、サーバーが必要です。
Feature: stanza-error-reply Description: Do not reply to a stanza of type "error" with another stanza of type "error". Section: Section 8.3 Roles: Client MUST, Server MUST.
機能:Stanza-Error-Reply説明:「エラー」の別のスタンザを使用して、タイプ「エラー」のスタンザに返信しないでください。セクション:セクション8.3の役割:クライアントは、サーバーが必要です。
Feature: stanza-extension Description: Correctly process XML data qualified by an unsupported XML namespace, where "correctly process" means to ignore that portion of the stanza in the case of a message or presence stanza and return an error in the case of an IQ stanza (for the intended recipient), and to route or deliver the stanza (for a routing entity such as a server). Section: Section 8.4 Roles: Client MUST, Server MUST.
機能:Stanza-Extensionの説明:サポートされていないXMLネームスペースで適格なXMLデータを正しく処理します。「正しくプロセス」は、メッセージまたは存在の場合のスタンザのその部分を無視し、IQの場合にエラーを返すことを意味しますStanza(意図された受信者向け)、およびStanza(サーバーなどのルーティングエンティティ用)をルーティングまたは配信するため。セクション:セクション8.4の役割:クライアントは、サーバーが必要です。
Feature: stanza-iq-child Description: Include exactly one child element in an <iq/> stanza of type "get" or "set", zero or one child elements in an <iq/> stanza of type "result", and one or two child elements in an <iq/> stanza of type "error". Section: Section 8.2.3 Roles: Client MUST, Server MUST.
機能:Stanza-IQ-Childの説明:タイプ「Get」または「Set」の<IQ/>スタンザ、「結果」の<IQ/>スタンザのゼロまたは1つの子要素に1つの子要素を含め、タイプ「エラー」の<IQ/>スタンザの1つまたは2つの子要素。セクション:セクション8.2.3ロール:クライアントは、サーバーが必要です。
Feature: stanza-iq-id Description: Ensure that all <iq/> stanzas include an 'id' attribute. Section: Section 8.2.3 Roles: Client MUST, Server MUST.
機能:Stanza-IQ-ID説明:すべての<IQ/>スタンザに「ID」属性が含まれていることを確認してください。セクション:セクション8.2.3ロール:クライアントは、サーバーが必要です。
Feature: stanza-iq-reply Description: Reply to an <iq/> stanza of type "get" or "set" with an <iq/> stanza of type "result" or "error". Section: Section 8.2.3 Roles: Client MUST, Server MUST.
機能:Stanza-IQ-Reply説明:タイプ「結果」または「エラー」の<IQ/> Stanzaを使用して、<IQ/> Stanza "get"または "set"に返信します。セクション:セクション8.2.3ロール:クライアントは、サーバーが必要です。
Feature: stanza-iq-type Description: Ensure that all <iq/> stanzas include a 'type' attribute whose value is "get", "set", "result", or "error". Section: Section 8.2.3 Roles: Client MUST, Server MUST.
機能:Stanza-IQ-Type説明:すべての<IQ/>スタンザには、値が「get」、「set」、「result」、または「error」がある「タイプ」属性が含まれていることを確認してください。セクション:セクション8.2.3ロール:クライアントは、サーバーが必要です。
Feature: stanza-kind-iq Description: Support the <iq/> stanza. Section: Section 8.2.3 Roles: Client MUST, Server MUST.
機能:Stanza-Kind-IQ説明:<IQ/> Stanzaをサポートします。セクション:セクション8.2.3ロール:クライアントは、サーバーが必要です。
Feature: stanza-kind-message Description: Support the <message/> stanza. Section: Section 8.2.1 Roles: Client MUST, Server MUST.
機能:Stanza-Cind-Message説明:<メッセージ/> Stanzaをサポートします。セクション:セクション8.2.1ロール:クライアントは、サーバーが必要です。
Feature: stanza-kind-presence Description: Support the <presence/> stanza. Section: Section 8.2.2 Roles: Client MUST, Server MUST.
機能:Stanza-cind-presence説明:<enclient/> Stanzaをサポートします。セクション:セクション8.2.2ロール:クライアントは、サーバーが必要です。
Feature: stream-attribute-initial-from Description: Include a 'from' attribute in the initial stream header. Section: Section 4.7.1 Roles: Client SHOULD, Server MUST.
機能:Stream-Attribute-Initial-From説明:初期ストリームヘッダーに「From」属性を含めます。セクション:セクション4.7.1ロール:クライアントは、サーバーが必要です。
Feature: stream-attribute-initial-lang Description: Include an 'xml:lang' attribute in the initial stream header. Section: Section 4.7.4 Roles: Client SHOULD, Server SHOULD.
機能:Stream-Attribute-Initial-Lang説明:初期ストリームヘッダーに 'xml:lang'属性を含めます。セクション:セクション4.7.4役割:クライアントは、サーバーが必要です。
Feature: stream-attribute-initial-to Description: Include a 'to' attribute in the initial stream header. Section: Section 4.7.2 Roles: Client MUST, Server MUST.
機能:Stream-Attribute-Initial-to説明:初期ストリームヘッダーに 'to'属性を含めます。セクション:セクション4.7.2ロール:クライアントは、サーバーが必要です。
Feature: stream-attribute-response-from Description: Include a 'from' attribute in the response stream header. Section: Section 4.7.1 Roles: Client N/A, Server MUST.
機能:Stream-Attribute-Response-From説明:応答ストリームヘッダーに「From」属性を含めます。セクション:セクション4.7.1ロール:クライアントN/A、サーバーは必要です。
Feature: stream-attribute-response-id Description: Include an 'id' attribute in the response stream header. Section: Section 4.7.3 Roles: Client N/A, Server MUST.
機能:Stream-Attribute-Response-ID説明:応答ストリームヘッダーに「ID」属性を含めます。セクション:セクション4.7.3ロール:クライアントN/A、サーバーは必要です。
Feature: stream-attribute-response-id-unique Description: Ensure that the 'id' attribute in the response stream header is unique within the context of the receiving entity. Section: Section 4.7.3 Roles: Client N/A, Server MUST.
機能:Stream-Attribute-Response-ID-Unique説明:応答ストリームヘッダーの「ID」属性が受信エンティティのコンテキスト内で一意であることを確認してください。セクション:セクション4.7.3ロール:クライアントN/A、サーバーは必要です。
Feature: stream-attribute-response-to Description: Include a 'to' attribute in the response stream header. Section: Section 4.7.2 Roles: Client N/A, Server SHOULD.
機能:Stream-Attribute-Response-to説明:応答ストリームヘッダーに 'to'属性を含めます。セクション:セクション4.7.2ロール:クライアントN/A、サーバーは必要です。
Feature: stream-error-generate Description: Generate a stream error (followed by a closing stream tag and termination of the TCP connection) upon detecting a stream-related error condition. Section: Section 4.9 Roles: Client MUST, Server MUST.
機能:ストリームエラー全般の説明:ストリーム関連のエラー条件を検出したときに、ストリームエラー(クロージングストリームタグとTCP接続の終了)を生成します。セクション:セクション4.9の役割:クライアントは、サーバーが必要です。
Feature: stream-fqdn-resolution Description: Resolve FQDNs before opening a TCP connection to the receiving entity. Section: Section 3.2 Roles: Client MUST, Server MUST.
機能:Stream-FQDN解像度説明:受信エンティティへのTCP接続を開く前にFQDNSを解決します。セクション:セクション3.2の役割:クライアントは、サーバーが必要です。
Feature: stream-negotiation-complete Description: Do not consider the stream negotiation process to be complete until the receiving entity sends a stream features advertisement that is empty or that contains only voluntary-to-negotiate features. Section: Section 4.3.5 Roles: Client MUST, Server MUST.
機能:Stream-Negotiation-Complete説明:受信エンティティが空の広告を送信するか、自発的なネゴシエート機能のみを含むストリーム機能を送信するまで、ストリームネゴシエーションプロセスが完了するとは考えないでください。セクション:セクション4.3.5の役割:クライアントは、サーバーが必要です。
Feature: stream-negotiation-features Description: Send stream features after sending a response stream header. Section: Section 4.3.2 Roles: Client N/A, Server MUST.
機能:Stream-Negotiation-Features説明:応答ストリームヘッダーを送信した後、ストリーム機能を送信します。セクション:セクション4.3.2の役割:クライアントN/A、サーバーは必要です。
Feature: stream-negotiation-restart Description: Consider the previous stream to be replaced upon negotiation of a stream feature that necessitates a stream restart, and send or receive a new initial stream header after negotiation of such a stream feature. Section: Section 4.3.3 Roles: Client MUST, Server MUST.
機能:Stream-Negotiation-Restart説明:ストリームの再起動を必要とするストリーム機能のネゴシエーション時に、以前のストリームを交換することを検討し、そのようなストリーム機能のネゴシエーション後に新しい初期ストリームヘッダーを送信または受信します。セクション:セクション4.3.3の役割:クライアントは、サーバーが必要です。
Feature: stream-reconnect Description: Reconnect with exponential backoff if a TCP connection is terminated unexpectedly. Section: Section 3.3 Roles: Client MUST, Server MUST.
機能:Stream-Reconnect説明:TCP接続が予期せず終端されている場合、指数バックオフと再接続します。セクション:セクション3.3の役割:クライアントは、サーバーが必要です。
Feature: stream-tcp-binding Description: Bind an XML stream to a TCP connection. Section: Section 3 Roles: Client MUST, Server MUST.
機能:Stream-TCPバインディング説明:XMLストリームをTCP接続にバインドします。セクション:セクション3の役割:クライアントは、サーバーが必要です。
Feature: tls-certs Description: Check the identity specified in a certificate that is presented during TLS negotiation. Section: Section 13.7.2 Roles: Client MUST, Server MUST.
機能:TLS-CERTS説明:TLS交渉中に提示された証明書で指定されたIDを確認します。セクション:セクション13.7.2役割:クライアントは、サーバーが必要です。
Feature: tls-mtn Description: Consider TLS as mandatory-to-negotiate if STARTTLS is the only feature advertised or if the STARTTLS feature advertisement includes an empty <required/> element. Section: Section 5.3.1 Roles: Client MUST, Server MUST.
機能:TLS-MTN説明:StartTLSが宣伝されている唯一の機能である場合、またはStartTLS機能広告に空の<必須/>要素が含まれている場合、TLSを必須と交渉することと考えてください。セクション:セクション5.3.1役割:クライアントは、サーバーが必要です。
Feature: tls-restart Description: Initiate or handle a stream restart after TLS negotiation. Section: Section 5.3.2 Roles: Client MUST, Server MUST.
機能:TLS-Restart説明:TLS交渉後にストリーム再起動を開始または処理します。セクション:セクション5.3.2役割:クライアントは、サーバーが必要です。
Feature: tls-support Description: Support Transport Layer Security for stream encryption. Section: Section 5 Roles: Client MUST, Server MUST.
機能:TLS-Support説明:ストリーム暗号化の輸送層セキュリティをサポートします。セクション:セクション5の役割:クライアントは、サーバーが必要です。
Feature: tls-correlate Description: When validating a certificate presented by a stream peer during TLS negotiation, correlate the validated identity with the 'from' address (if any) of the stream header it received from the peer. Section: Section 13.7.2 Roles: Client SHOULD, Server SHOULD.
機能:TLS相関説明:TLS交渉中にストリームピアによって提示された証明書を検証する場合、検証済みのアイデンティティをピアから受け取ったストリームヘッダーの「From」アドレス(存在する場合)と相関させます。セクション:セクション13.7.2役割:クライアントは、サーバーがそうすべきです。
Feature: xml-namespace-content-client Description: Support 'jabber:client' as a content namespace. Section: Section 4.8.2 Roles: Client MUST, Server MUST.
機能:xml-namespace-content-client説明:コンテンツネームスペースとして「Jabber:client」をサポートします。セクション:セクション4.8.2ロール:クライアントは、サーバーが必要です。
Feature: xml-namespace-content-server Description: Support 'jabber:server' as a content namespace. Section: Section 4.8.2 Roles: Client N/A, Server MUST.
機能:xml-namespace-content-server説明:コンテンツネームスペースとして 'jabber:server'をサポートします。セクション:セクション4.8.2ロール:クライアントN/A、サーバーは必要です。
Feature: xml-namespace-streams-declaration Description: Ensure that there is a namespace declaration for the 'http://etherx.jabber.org/streams' namespace. Section: Section 4.8.1 Roles: Client MUST, Server MUST.
機能:xml-namespace-streams-declaration説明: 'http://etherx.jabber.org/streams' Namespaceの名前空間宣言があることを確認してください。セクション:セクション4.8.1ロール:クライアントは、サーバーが必要です。
Feature: xml-namespace-streams-prefix Description: Ensure that all elements qualified by the 'http://etherx.jabber.org/streams' namespace are prefixed by the prefix (if any) defined in the namespace declaration. Section: Section 4.8.1 Roles: Client MUST, Server MUST.
機能:xml-namespace-streams-prefix説明: 'http://etherx.jabber.org/streams' namespaceで認定されたすべての要素が、名前空間宣言で定義されているプレフィックス(存在する場合)によってプレフィックスが付けられていることを確認してください。セクション:セクション4.8.1ロール:クライアントは、サーバーが必要です。
Feature: xml-restriction-comment Description: Do not generate or accept XML comments. Section: Section 11.1 Roles: Client MUST, Server MUST.
機能:XML-Restriction-Comment説明:XMLコメントを生成または受け入れないでください。セクション:セクション11.1ロール:クライアントは、サーバーが必要です。
Feature: xml-restriction-dtd Description: Do not generate or accept internal or external DTD subsets. Section: Section 11.1 Roles: Client MUST, Server MUST.
機能:XML-Restriction-DTD説明:内部または外部のDTDサブセットを生成または受け入れないでください。セクション:セクション11.1ロール:クライアントは、サーバーが必要です。
Feature: xml-restriction-pi Description: Do not generate or accept XML processing instructions. Section: Section 11.1 Roles: Client MUST, Server MUST.
機能:XML-Restriction-PI説明:XML処理手順を生成または受け入れないでください。セクション:セクション11.1ロール:クライアントは、サーバーが必要です。
Feature: xml-restriction-ref Description: Do not generate or accept internal or external entity references with the exception of the predefined entities. Section: Section 11.1 Roles: Client MUST, Server MUST.
機能:XML-Restriction-REF説明:事前定義されたエンティティを除き、内部または外部のエンティティ参照を生成または受け入れないでください。セクション:セクション11.1ロール:クライアントは、サーバーが必要です。
Feature: xml-wellformed-xml Description: Do not generate or accept data that is not XML-well-formed. Section: Section 11.3 Roles: Client MUST, Server MUST.
機能:XML-Wellformed-XML説明:XML-Well-Formedではないデータを生成または受け入れないでください。セクション:セクション11.3の役割:クライアントは、サーバーが必要です。
Feature: xml-wellformed-ns Description: Do not generate or accept data that is not namespace-well-formed. Section: Section 11.3 Roles: Client MUST, Server MUST.
機能:XML-Wellformed-ns説明:名前空間壁に形成されていないデータを生成または受け入れないでください。セクション:セクション11.3の役割:クライアントは、サーバーが必要です。
[BASE64] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", RFC 4648, October 2006.
[Base64] Josefsson、S。、「Base16、Base32、およびBase64 Data Encodings」、RFC 4648、2006年10月。
[CHANNEL] Williams, N., "On the Use of Channel Bindings to Secure Channels", RFC 5056, November 2007.
[チャンネル]ウィリアムズ、N。、「チャンネルを保護するためのチャネルバインディングの使用について」、RFC 5056、2007年11月。
[CHANNEL-TLS] Altman, J., Williams, N., and L. Zhu, "Channel Bindings for TLS", RFC 5929, July 2010.
[Channel-TLS] Altman、J.、Williams、N。、およびL. Zhu、「TLSのチャネルバインディング」、RFC 5929、2010年7月。
[CHARSETS] Alvestrand, H., "IETF Policy on Character Sets and Languages", BCP 18, RFC 2277, January 1998.
[Charsets] Alvestrand、H。、「キャラクターセットと言語に関するIETFポリシー」、BCP 18、RFC 2277、1998年1月。
[DNS-CONCEPTS] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, November 1987.
[DNSConcepts] Mockapetris、P。、「ドメイン名 - 概念と施設」、STD 13、RFC 1034、1987年11月。
[DNS-SRV] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, February 2000.
[DNS-SRV] Gulbrandsen、A.、Vixie、P。、およびL. Esibov、「サービスの場所を指定するためのDNS RR(DNS SRV)」、RFC 2782、2000年2月。
[IPv6-ADDR] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 Address Text Representation", RFC 5952, August 2010.
[IPv6-Addr]川村、S。およびM.川島、「IPv6アドレステキスト表現の推奨」、RFC 5952、2010年8月。
[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[キーワード] Bradner、S。、「要件レベルを示すためにRFCで使用するためのキーワード」、BCP 14、RFC 2119、1997年3月。
[LANGMATCH] Phillips, A. and M. Davis, "Matching of Language Tags", BCP 47, RFC 4647, September 2006.
[Langmatch] Phillips、A。and M. Davis、「言語タグのマッチング」、BCP 47、RFC 4647、2006年9月。
[LANGTAGS] Phillips, A. and M. Davis, "Tags for Identifying Languages", BCP 47, RFC 5646, September 2009.
[Langtags] Phillips、A。およびM. Davis、「言語を識別するためのタグ」、BCP 47、RFC 5646、2009年9月。
[OCSP] Myers, M., Ankney, R., Malpani, A., Galperin, S., and C. Adams, "X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP", RFC 2560, June 1999.
[OCSP] Myers、M.、Ankney、R.、Malpani、A.、Galperin、S.、およびC. Adams、「X.509インターネット公開キーインフラストラクチャオンライン証明書ステータスプロトコル」、RFC 2560、1999年6月。
[PKIX] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 5280, May 2008.
[Pkix] Cooper、D.、Santesson、S.、Farrell、S.、Boeyen、S.、Housley、R.、およびW. Polk、「Internet X.509公開キーインフラストラクチャ証明書および証明書取消リスト(CRL)プロファイル"、RFC 5280、2008年5月。
[PKIX-ALGO] Jonsson, J. and B. Kaliski, "Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1", RFC 3447, February 2003.
[Pkix-Algo] Jonsson、J。and B. Kaliski、「Public-Key Cryptography Standards(PKCS)#1:RSA暗号仕様バージョン2.1 "、RFC 3447、2003年2月。
[PKIX-SRV] Santesson, S., "Internet X.509 Public Key Infrastructure Subject Alternative Name for Expression of Service Name", RFC 4985, August 2007.
[PKIX-SRV] Santesson、S。、「インターネットX.509公開キーインフラストラクチャの主題サービス名の表現の代替名」、RFC 4985、2007年8月。
[PLAIN] Zeilenga, K., "The PLAIN Simple Authentication and Security Layer (SASL) Mechanism", RFC 4616, August 2006.
[Plain] Zeilenga、K。、「プレーンシンプルな認証およびセキュリティレイヤー(SASL)メカニズム」、RFC 4616、2006年8月。
[RANDOM] Eastlake, D., Schiller, J., and S. Crocker, "Randomness Requirements for Security", BCP 106, RFC 4086, June 2005.
[ランダム] Eastlake、D.、Schiller、J。、およびS. Crocker、「セキュリティのランダム性要件」、BCP 106、RFC 4086、2005年6月。
[SASL] Melnikov, A. and K. Zeilenga, "Simple Authentication and Security Layer (SASL)", RFC 4422, June 2006.
[SASL] Melnikov、A。およびK. Zeilenga、「Simple Authentication and Security Layer(SASL)」、RFC 4422、2006年6月。
[SCRAM] Newman, C., Menon-Sen, A., Melnikov, A., and N. Williams, "Salted Challenge Response Authentication Mechanism (SCRAM) SASL and GSS-API Mechanisms", RFC 5802, July 2010.
[Scram] Newman、C.、Menon-Sen、A.、Melnikov、A。、およびN. Williams、「Salted Challenge Response Auttonsicemation(Scram)SASLおよびGSS-APIメカニズム」、RFC 5802、2010年7月。
[STRONGSEC] Schiller, J., "Strong Security Requirements for Internet Engineering Task Force Standard Protocols", BCP 61, RFC 3365, August 2002.
[StrongSec] Schiller、J。、「インターネットエンジニアリングタスクフォースの標準プロトコルの強力なセキュリティ要件」、BCP 61、RFC 3365、2002年8月。
[TCP] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981.
[TCP] Postel、J。、「トランスミッションコントロールプロトコル」、STD 7、RFC 793、1981年9月。
[TLS] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008.
[TLS] Dierks、T。およびE. Rescorla、「The Transport Layer Security(TLS)Protocolバージョン1.2」、RFC 5246、2008年8月。
[TLS-CERTS] Saint-Andre, P. and J. Hodges, "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)", RFC 6125, March 2011.
[TLS-CERTS] Saint-Andre、P。and J. Hodges、「X.509(PKIX)証明書を使用したインターネット公開キーインフラストラクチャ内のドメインベースのアプリケーションサービスIDの表現と検証輸送層セキュリティ(TLS)"、RFC 6125、2011年3月。
[TLS-NEG] Rescorla, E., Ray, M., Dispensa, S., and N. Oskov, "Transport Layer Security (TLS) Renegotiation Indication Extension", RFC 5746, February 2010.
[TLS-Neg] Rescorla、E.、Ray、M.、Dispensa、S。、およびN. Oskov、「輸送層のセキュリティ(TLS)再交渉表示拡張」、RFC 5746、2010年2月。
[TLS-SSL2] Turner, S. and T. Polk, "Prohibiting Secure Sockets Layer (SSL) Version 2.0", RFC 6176, March 2011.
[TLS-SSL2] Turner、S。およびT. Polk、「Secure Sockets Layer(SSL)バージョン2.0を禁止する」、RFC 6176、2011年3月。
[UCS2] International Organization for Standardization, "Information Technology - Universal Multiple-octet coded Character Set (UCS) - Amendment 2: UCS Transformation Format 8 (UTF-8)", ISO Standard 10646-1 Addendum 2, October 1996.
[UCS2]国際標準化機関、「情報技術 - ユニバーサルマルチオクテットコード化された文字セット(UCS) - 修正2:UCS変換形式8(UTF-8)」、ISO標準10646-1補遺2、1996年10月。
[UNICODE] The Unicode Consortium, "The Unicode Standard, Version 6.0", 2010, <http://www.unicode.org/versions/Unicode6.0.0/>.
[Unicode] Unicode Consortium、「Unicode Standard、バージョン6.0」、2010、<http://www.unicode.org/versions/unicode6.0.0/>。
[UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003.
[UTF-8] Yergeau、F。、「UTF-8、ISO 10646の変換形式」、STD 63、RFC 3629、2003年11月。
[URI] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005.
[URI] Berners-Lee、T.、Fielding、R。、およびL. Masinter、「Uniform Resource Identifier(URI):Generic Syntax」、Std 66、RFC 3986、2005年1月。
[X509] International Telecommunications Union, "Information technology - Open Systems Interconnection - The Directory: Public-key and attribute certificate frameworks", ITU-T Recommendation X.509, ISO Standard 9594-8, March 2000.
[X509] International Telecommunications Union、「情報技術 - オープンシステムの相互接続 - ディレクトリ:パブリックキーおよび属性証明書フレームワーク」、ITU-T推奨X.509、ISO Standard 9594-8、2000年3月。
[XML] Maler, E., Yergeau, F., Sperberg-McQueen, C., Paoli, J., and T. Bray, "Extensible Markup Language (XML) 1.0 (Fifth Edition)", World Wide Web Consortium Recommendation REC-xml-20081126, November 2008, <http://www.w3.org/TR/2008/REC-xml-20081126>.
[XML] Maler、E.、Yergeau、F.、Sperberg-Mcqueen、C.、Paoli、J。、およびT. Bray、「拡張可能なマークアップ言語(XML)1.0(第5版)」、World Wide Web Consortiumの推奨REC-XML-20081126、2008年11月、<http://www.w3.org/tr/2008/rec-xml-20081126>。
[XML-GUIDE] Hollenbeck, S., Rose, M., and L. Masinter, "Guidelines for the Use of Extensible Markup Language (XML) within IETF Protocols", BCP 70, RFC 3470, January 2003.
[XML-Guide] Hollenbeck、S.、Rose、M。、およびL. Masinter、「IETFプロトコル内の拡張マークアップ言語(XML)の使用に関するガイドライン」、BCP 70、RFC 3470、2003年1月。
[XML-MEDIA] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types", RFC 3023, January 2001.
[XML-Media] Murata、M.、St。Laurent、S。、およびD. Kohn、「XML Media Types」、RFC 3023、2001年1月。
[XML-NAMES] Thompson, H., Hollander, D., Layman, A., Bray, T., and R. Tobin, "Namespaces in XML 1.0 (Third Edition)", World Wide Web Consortium Recommendation REC-xml-names-20091208, December 2009, <http://www.w3.org/TR/2009/REC-xml-names-20091208>.
[XML-Names] Thompson、H.、Hollander、D.、Layman、A.、Bray、T。、およびR. Tobin、「XML 1.0の名前空間(第3版)」、World Wide Webコンソーシアムの推奨REC-XML-Names-20091208、2009年12月、<http://www.w3.org/tr/2009/rec-xml-names-20091208>。
[XMPP-ADDR] Saint-Andre, P., "Extensible Messaging and Presence Protocol (XMPP): Address Format", RFC 6122, March 2011.
[XMPP-ADDR] Saint-Andre、P。、「拡張可能なメッセージングと存在プロトコル(XMPP):アドレス形式」、RFC 6122、2011年3月。
[XMPP-IM] Saint-Andre, P., "Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence", RFC 6121, March 2011.
[XMPP-IM] Saint-Andre、P。、「拡張可能なメッセージと存在プロトコル(XMPP):インスタントメッセージングと存在」、RFC 6121、2011年3月。
[AAA] Housley, R. and B. Aboba, "Guidance for Authentication, Authorization, and Accounting (AAA) Key Management", BCP 132, RFC 4962, July 2007.
[AAA] Housley、R。and B. Aboba、「認証、承認、および会計(AAA)キー管理のガイダンス」、BCP 132、RFC 4962、2007年7月。
[ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.
[ABNF] Crocker、D。およびP. Overell、「構文仕様のためのBNFの増強:ABNF」、STD 68、RFC 5234、2008年1月。
[ACAP] Newman, C. and J. Myers, "ACAP -- Application Configuration Access Protocol", RFC 2244, November 1997.
[ACAP] Newman、C。and J. Myers、「ACAP-アプリケーション構成アクセスプロトコル」、RFC 2244、1997年11月。
[ANONYMOUS] Zeilenga, K., "Anonymous Simple Authentication and Security Layer (SASL) Mechanism", RFC 4505, June 2006.
[匿名] Zeilenga、K。、「匿名の単純認証とセキュリティレイヤー(SASL)メカニズム」、RFC 4505、2006年6月。
[ASN.1] CCITT, "Recommendation X.208: Specification of Abstract Syntax Notation One (ASN.1)", 1988.
[ASN.1] CCITT、「推奨X.208:抽象的構文表記の仕様(ASN.1)」、1988。
[DIGEST-MD5] Leach, P. and C. Newman, "Using Digest Authentication as a SASL Mechanism", RFC 2831, May 2000.
[Digest-MD5] Leach、P。and C. Newman、「SASLメカニズムとして消化認証を使用」、RFC 2831、2000年5月。
[DNSSEC] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, "DNS Security Introduction and Requirements", RFC 4033, March 2005.
[DNSSEC] Arends、R.、Austein、R.、Larson、M.、Massey、D.、およびS. Rose、「DNSセキュリティの紹介と要件」、RFC 4033、2005年3月。
[DNS-TXT] Rosenbaum, R., "Using the Domain Name System To Store Arbitrary String Attributes", RFC 1464, May 1993.
[DNS-TXT] Rosenbaum、R。、「ドメイン名システムを使用して任意の文字列属性を保存する」、RFC 1464、1993年5月。
[DOS] Handley, M., Rescorla, E., and IAB, "Internet Denial-of-Service Considerations", RFC 4732, December 2006.
[DOS] Handley、M.、Rescorla、E。、およびIAB、「インターネット拒否の考慮事項」、RFC 4732、2006年12月。
[E2E-REQS] Saint-Andre, P., "Requirements for End-to-End Encryption in the Extensible Messaging and Presence Protocol (XMPP)", Work in Progress, March 2010.
[E2E-Reqs] Saint-Andre、P。、「拡張可能なメッセージングおよび存在プロトコル(XMPP)におけるエンドツーエンド暗号化の要件」、2010年3月、進行中の作業。
[EMAIL-ARCH] Crocker, D., "Internet Mail Architecture", RFC 5598, July 2009.
[メールアーチ] Crocker、D。、「Internet Mail Architecture」、RFC 5598、2009年7月。
[ETHERNET] "Information technology - Telecommunications and information exchange between systems - Local and metropolitan area networks - Specific requirements - Part 3: Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specifications", IEEE Standard 802.3, September 1998.
[Ethernet] "情報技術 - システム間の通信と情報交換 - ローカルおよびメトロポリタンエリアネットワーク - 特定の要件 - パート3:衝突検出を備えた複数アクセス(CSMA/CD)アクセス方法と物理層の仕様」、IEEE Standard 802.3、1998年9月。
[GSS-API] Linn, J., "Generic Security Service Application Program Interface Version 2, Update 1", RFC 2743, January 2000.
[GSS-API] Linn、J。、「Generic Security Service Application Program Interfaceバージョン2、Update 1」、RFC 2743、2000年1月。
[HASHES] Hoffman, P. and B. Schneier, "Attacks on Cryptographic Hashes in Internet Protocols", RFC 4270, November 2005.
[ハッシュ] Hoffman、P。およびB. Schneier、「インターネットプロトコルにおける暗号化ハッシュへの攻撃」、RFC 4270、2005年11月。
[HTTP] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[HTTP] Fielding、R.、Gettys、J.、Mogul、J.、Frystyk、H.、Masinter、L.、Leach、P。、およびT. Berners-Lee、「HyperText Transfer Protocol-HTTP/1.1」、RFC 2616、1999年6月。
[IANA-GUIDE] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.
[Iana-Guide] Narten、T。およびH. Alvestrand、「RFCSでIANA考慮事項セクションを書くためのガイドライン」、BCP 26、RFC 5226、2008年5月。
[IANA-PORTS] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. Cheshire, "Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Transport Protocol Port Number and Service Name Registry", Work in Progress, February 2011.
[Iana-Ports] Cotton、M.、Eggert、L.、Touch、J.、Westerlund、M。、およびS. Cheshire、 "インターネット割り当てされた数字権(IANA)手順輸送プロトコルポート番号とサービスの管理のための手順Name Registry "、Work in Progress、2011年2月。
[IMAP] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1", RFC 3501, March 2003.
[IMAP] Crispin、M。、「インターネットメッセージアクセスプロトコル -バージョン4REV1」、RFC 3501、2003年3月。
[IMP-REQS] Day, M., Aggarwal, S., and J. Vincent, "Instant Messaging / Presence Protocol Requirements", RFC 2779, February 2000.
[Imp-Reqs] Day、M.、Aggarwal、S。、およびJ. Vincent、「インスタントメッセージング /存在プロトコル要件」、RFC 2779、2000年2月。
[INTEROP] Masinter, L., "Formalizing IETF Interoperability Reporting", Work in Progress, October 2005.
[Interop] Masinter、L。、「IETF相互運用性レポートの形式化」、2005年10月、進行中の作業。
[IRC] Kalt, C., "Internet Relay Chat: Architecture", RFC 2810, April 2000.
[IRC] Kalt、C。、「インターネットリレーチャット:アーキテクチャ」、RFC 2810、2000年4月。
[IRI] Duerst, M. and M. Suignard, "Internationalized Resource Identifiers (IRIs)", RFC 3987, January 2005.
[IRI] Duerst、M。およびM. Suignard、「国際化された資源識別子(IRIS)」、RFC 3987、2005年1月。
[LDAP] Zeilenga, K., "Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map", RFC 4510, June 2006.
[LDAP] Zeilenga、K。、「Lightweight Directory Access Protocol(LDAP):技術仕様ロードマップ」、RFC 4510、2006年6月。
[LINKLOCAL] Cheshire, S., Aboba, B., and E. Guttman, "Dynamic Configuration of IPv4 Link-Local Addresses", RFC 3927, May 2005.
[LinkLocal] Cheshire、S.、Aboba、B。、およびE. Guttman、「IPv4 Link-Localアドレスの動的構成」、RFC 3927、2005年5月。
[MAILBOXES] Crocker, D., "MAILBOX NAMES FOR COMMON SERVICES, ROLES AND FUNCTIONS", RFC 2142, May 1997.
[メールボックス] Crocker、D。、「一般的なサービス、役割、機能のメールボックス名」、RFC 2142、1997年5月。
[POP3] Myers, J. and M. Rose, "Post Office Protocol - Version 3", STD 53, RFC 1939, May 1996.
[POP3] Myers、J。and M. Rose、「郵便局プロトコル - バージョン3」、STD 53、RFC 1939、1996年5月。
[PROCESS] Bradner, S., "The Internet Standards Process -- Revision 3", BCP 9, RFC 2026, October 1996.
[プロセス] Bradner、S。、「インターネット標準プロセス - 改訂3」、BCP 9、RFC 2026、1996年10月。
[REPORTS] Dusseault, L. and R. Sparks, "Guidance on Interoperation and Implementation Reports for Advancement to Draft Standard", BCP 9, RFC 5657, September 2009.
[レポート] Dusseault、L。およびR. Sparks、「標準のドラフトへの進歩のための相互操作および実装レポートに関するガイダンス」、BCP 9、RFC 5657、2009年9月。
[REST] Fielding, R., "Architectural Styles and the Design of Network-based Software Architectures", 2000.
[REST] Fielding、R。、「アーキテクチャスタイルとネットワークベースのソフトウェアアーキテクチャの設計」、2000。
[RFC3920] Saint-Andre, P., Ed., "Extensible Messaging and Presence Protocol (XMPP): Core", RFC 3920, October 2004.
[RFC3920] Saint-Andre、P.、ed。、「拡張可能なメッセージと存在プロトコル(XMPP):Core」、RFC 3920、2004年10月。
[RFC3921] Saint-Andre, P., Ed., "Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence", RFC 3921, October 2004.
[RFC3921] Saint-Andre、P.、ed。、「拡張可能なメッセージと存在プロトコル(XMPP):インスタントメッセージングと存在」、RFC 3921、2004年10月。
[SASLPREP] Zeilenga, K., "SASLprep: Stringprep Profile for User Names and Passwords", RFC 4013, February 2005.
[Saslprep] Zeilenga、K。、「Saslprep:ユーザー名とパスワードのStringPrepプロファイル」、RFC 4013、2005年2月。
[SEC-TERMS] Shirey, R., "Internet Security Glossary, Version 2", RFC 4949, August 2007.
[Sec-Terms] Shirey、R。、「インターネットセキュリティ用語集、バージョン2」、RFC 4949、2007年8月。
[SMTP] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, October 2008.
[SMTP] Klensin、J。、「Simple Mail Transfer Protocol」、RFC 5321、2008年10月。
[SEC-GUIDE] Rescorla, E. and B. Korver, "Guidelines for Writing RFC Text on Security Considerations", BCP 72, RFC 3552, July 2003.
[Sec-Guide] Rescorla、E。and B. Korver、「セキュリティに関する考慮事項に関するRFCテキストを書くためのガイドライン」、BCP 72、RFC 3552、2003年7月。
[TLS-EXT] Eastlake 3rd, D., "Transport Layer Security (TLS) Extensions: Extension Definitions", RFC 6066, January 2011.
[TLS-Ext] EastLake 3rd、D。、「輸送層セキュリティ(TLS)拡張:拡張定義」、RFC 6066、2011年1月。
[TLS-RESUME] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig, "Transport Layer Security (TLS) Session Resumption without Server-Side State", RFC 5077, January 2008.
[TLS-Resume] Salowey、J.、Zhou、H.、Eronen、P。、およびH. Tschofenig、「サーバー側の状態なしでの輸送層セキュリティ(TLS)セッション再開」、RFC 5077、2008年1月。
[URN-OID] Mealling, M., "A URN Namespace of Object Identifiers", RFC 3061, February 2001.
[urn-of] Mealling、M。、「オブジェクト識別子のurn名空間」、RFC 3061、2001年2月。
[USINGTLS] Newman, C., "Using TLS with IMAP, POP3 and ACAP", RFC 2595, June 1999.
[使用]ニューマン、C。、「IMAP、POP3およびACAPでTLSを使用」、RFC 2595、1999年6月。
[UUID] Leach, P., Mealling, M., and R. Salz, "A Universally Unique IDentifier (UUID) URN Namespace", RFC 4122, July 2005.
[UUID] Leach、P.、Mealling、M。、およびR. Salz、「普遍的にユニークな識別子(UUID)URNネームスペース」、RFC 4122、2005年7月。
[XEP-0001] Saint-Andre, P., "XMPP Extension Protocols", XSF XEP 0001, March 2010.
[XEP-0001] Saint-Andre、P。、「XMPP拡張プロトコル」、XSF XEP 0001、2010年3月。
[XEP-0016] Millard, P. and P. Saint-Andre, "Privacy Lists", XSF XEP 0016, February 2007.
[XEP-0016] Millard、P。and P. Saint-Andre、「プライバシーリスト」、XSF XEP 0016、2007年2月。
[XEP-0045] Saint-Andre, P., "Multi-User Chat", XSF XEP 0045, July 2007.
[XEP-0045] Saint-Andre、P。、「Multi-User Chat」、XSF XEP 0045、2007年7月。
[XEP-0060] Millard, P., Saint-Andre, P., and R. Meijer, "Publish-Subscribe", XSF XEP 0060, July 2010.
[Xep-0060] Millard、P.、Saint-Andre、P.、およびR. Meijer、「Publish-Subscribe」、XSF XEP 0060、2010年7月。
[XEP-0071] Saint-Andre, P., "XHTML-IM", XSF XEP 0071, September 2008.
[Xep-0071] Saint-Andre、P。、 "xhtml-im"、xsf xep 0071、2008年9月。
[XEP-0077] Saint-Andre, P., "In-Band Registration", XSF XEP 0077, September 2009.
[XEP-0077] Saint-Andre、P。、「In-Band Registration」、XSF XEP 0077、2009年9月。
[XEP-0086] Norris, R. and P. Saint-Andre, "Error Condition Mappings", XSF XEP 0086, February 2004.
[XEP-0086] Norris、R。およびP. Saint-Andre、「エラー状態マッピング」、XSF XEP 0086、2004年2月。
[XEP-0100] Saint-Andre, P. and D. Smith, "Gateway Interaction", XSF XEP 0100, October 2005.
[XEP-0100] Saint-Andre、P。and D. Smith、「Gateway Interaction」、XSF XEP 0100、2005年10月。
[XEP-0114] Saint-Andre, P., "Jabber Component Protocol", XSF XEP 0114, March 2005.
[XEP-0114] Saint-Andre、P。、「Jabber Component Protocol」、XSF XEP 0114、2005年3月。
[XEP-0124] Paterson, I., Smith, D., and P. Saint-Andre, "Bidirectional-streams Over Synchronous HTTP (BOSH)", XSF XEP 0124, July 2010.
[XEP-0124] Paterson、I.、Smith、D。、およびP. Saint-Andre、「同期HTTP(BOSH)上の双方向ストリーム」、XSF XEP 0124、2010年7月。
[XEP-0138] Hildebrand, J. and P. Saint-Andre, "Stream Compression", XSF XEP 0138, May 2009.
[XEP-0138] Hildebrand、J。およびP. Saint-Andre、「Stream Compression」、XSF XEP 0138、2009年5月。
[XEP-0156] Hildebrand, J. and P. Saint-Andre, "Discovering Alternative XMPP Connection Methods", XSF XEP 0156, June 2007.
[XEP-0156] Hildebrand、J。およびP. Saint-Andre、「代替XMPP接続方法の発見」、XSF XEP 0156、2007年6月。
[XEP-0160] Saint-Andre, P., "Best Practices for Handling Offline Messages", XSF XEP 0160, January 2006.
[XEP-0160] Saint-Andre、P。、「オフラインメッセージの処理のためのベストプラクティス」、XSF XEP 0160、2006年1月。
[XEP-0174] Saint-Andre, P., "Link-Local Messaging", XSF XEP 0174, November 2008.
[XEP-0174] Saint-Andre、P。、「Link-Local Messaging」、XSF XEP 0174、2008年11月。
[XEP-0175] Saint-Andre, P., "Best Practices for Use of SASL ANONYMOUS", XSF XEP 0175, September 2009.
[XEP-0175] Saint-Andre、P。、「SASL Anonymousの使用のためのベストプラクティス」、XSF XEP 0175、2009年9月。
[XEP-0178] Saint-Andre, P. and P. Millard, "Best Practices for Use of SASL EXTERNAL with Certificates", XSF XEP 0178, February 2007.
[XEP-0178] Saint-Andre、P。and P. Millard、「証明書を使用したSASL外部の使用のためのベストプラクティス」、XSF XEP 0178、2007年2月。
[XEP-0191] Saint-Andre, P., "Simple Communications Blocking", XSF XEP 0191, February 2007.
[XEP-0191] Saint-Andre、P。、「Simple Communications Blocking」、XSF XEP 0191、2007年2月。
[XEP-0198] Karneges, J., Hildebrand, J., Saint-Andre, P., Forno, F., Cridland, D., and M. Wild, "Stream Management", XSF XEP 0198, February 2011.
[Xep-0198] Karneges、J.、Hildebrand、J.、Saint-Andre、P.、Forno、F.、Cridland、D.、およびM. Wild、 "Stream Management"、XSF XEP 0198、2011年2月。
[XEP-0199] Saint-Andre, P., "XMPP Ping", XSF XEP 0199, June 2009.
[Xep-0199] Saint-Andre、P。、 "xmpp ping"、xsf xep 0199、2009年6月。
[XEP-0205] Saint-Andre, P., "Best Practices to Discourage Denial of Service Attacks", XSF XEP 0205, January 2009.
[XEP-0205] Saint-Andre、P。、「サービス拒否攻撃を阻止するためのベストプラクティス」、XSF XEP 0205、2009年1月。
[XEP-0206] Paterson, I. and P. Saint-Andre, "XMPP Over BOSH", XSF XEP 0206, July 2010.
[XEP-0206] Paterson、I。およびP. Saint-Andre、「XMPP Over Bosh」、XSF XEP 0206、2010年7月。
[XEP-0220] Miller, J., Saint-Andre, P., and P. Hancke, "Server Dialback", XSF XEP 0220, March 2010.
[XEP-0220] Miller、J.、Saint-Andre、P。、およびP. Hancke、「Server Dialback」、XSF XEP 0220、2010年3月。
[XEP-0225] Saint-Andre, P., "Component Connections", XSF XEP 0225, October 2008.
[XEP-0225] Saint-Andre、P。、「コンポーネント接続」、XSF XEP 0225、2008年10月。
[XEP-0233] Miller, M., Saint-Andre, P., and J. Hildebrand, "Domain-Based Service Names in XMPP SASL Negotiation", XSF XEP 0233, June 2010.
[XEP-0233] Miller、M.、Saint-Andre、P。、およびJ. Hildebrand、「XMPP SASL交渉のドメインベースのサービス名」、XSF XEP 0233、2010年6月。
[XEP-0288] Hancke, P. and D. Cridland, "Bidirectional Server-to-Server Connections", XSF XEP 0288, October 2010.
[XEP-0288] Hancke、P。およびD. Cridland、「双方向サーバーからサーバーへの接続」、XSF XEP 0288、2010年10月。
[XML-FRAG] Grosso, P. and D. Veillard, "XML Fragment Interchange", World Wide Web Consortium CR CR-xml-fragment-20010212, February 2001, <http://www.w3.org/TR/2001/CR-xml-fragment-20010212>.
[XML-Frag] Grosso、P。and D. Veillard、「XML Fragment Interchange」、World Wide Web Consortium CR-XML-Fragment-20010212、2001年2月、<http://www.w3.org/tr/2001/cr-xml-fragment-20010212>。
[XML-REG] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, January 2004.
[XML-Reg] Mealling、M。、「IETF XMLレジストリ」、BCP 81、RFC 3688、2004年1月。
[XML-SCHEMA] Thompson, H., Maloney, M., Mendelsohn, N., and D. Beech, "XML Schema Part 1: Structures Second Edition", World Wide Web Consortium Recommendation REC-xmlschema-1-20041028, October 2004, <http://www.w3.org/TR/2004/REC-xmlschema-1-20041028>.
[XML-Schema] Thompson、H.、Maloney、M.、Mendelsohn、N.、およびD. Beech、「XML Schema Part 1:Structures Second Edition」、World Wide Web Consortiumの推奨REC-XMLSCHEMA-1-20041028、10月2004、<http://www.w3.org/tr/2004/rec-xmlschema-1-20041028>。
[XMPP-URI] Saint-Andre, P., "Internationalized Resource Identifiers (IRIs) and Uniform Resource Identifiers (URIs) for the Extensible Messaging and Presence Protocol (XMPP)", RFC 5122, February 2008.
[XMPP-URI] Saint-Andre、P。、「拡張可能なメッセージと存在プロトコル(XMPP)の国際化されたリソース識別子(IRIS)および均一なリソース識別子(URI)」、RFC 5122、2008年2月。
The following schemas formally define various namespaces used in this document, in conformance with [XML-SCHEMA]. Because validation of XML streams and stanzas is optional, these schemas are not normative and are provided for descriptive purposes only.
次のスキーマは、[XML-Schema]に準拠して、このドキュメントで使用されているさまざまな名前空間を正式に定義します。XMLストリームとスタンザの検証はオプションであるため、これらのスキーマは規範的ではなく、説明的な目的のためにのみ提供されます。
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='http://etherx.jabber.org/streams' xmlns='http://etherx.jabber.org/streams' elementFormDefault='unqualified'>
<xs:import namespace='jabber:client'/> <xs:import namespace='jabber:server'/> <xs:import namespace='urn:ietf:params:xml:ns:xmpp-sasl'/> <xs:import namespace='urn:ietf:params:xml:ns:xmpp-streams'/> <xs:import namespace='urn:ietf:params:xml:ns:xmpp-tls'/>
<xs:element name='stream'> <xs:complexType> <xs:sequence xmlns:client='jabber:client' xmlns:server='jabber:server'> <xs:element ref='features' minOccurs='0' maxOccurs='1'/> <xs:any namespace='urn:ietf:params:xml:ns:xmpp-tls' minOccurs='0' maxOccurs='1'/> <xs:any namespace='urn:ietf:params:xml:ns:xmpp-sasl' minOccurs='0' maxOccurs='1'/> <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' processContents='lax'/> <xs:choice minOccurs='0' maxOccurs='1'> <xs:choice minOccurs='0' maxOccurs='unbounded'> <xs:element ref='client:message'/> <xs:element ref='client:presence'/> <xs:element ref='client:iq'/> </xs:choice>
<xs:choice minOccurs='0' maxOccurs='unbounded'> <xs:element ref='server:message'/> <xs:element ref='server:presence'/> <xs:element ref='server:iq'/> </xs:choice> </xs:choice> <xs:element ref='error' minOccurs='0' maxOccurs='1'/> </xs:sequence> <xs:attribute name='from' type='xs:string' use='optional'/> <xs:attribute name='id' type='xs:string' use='optional'/> <xs:attribute name='to' type='xs:string' use='optional'/> <xs:attribute name='version' type='xs:decimal' use='optional'/> <xs:attribute ref='xml:lang' use='optional'/> <xs:anyAttribute namespace='##other' processContents='lax'/> </xs:complexType> </xs:element>
<xs:element name='features'> <xs:complexType> <xs:sequence> <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' processContents='lax'/> </xs:sequence> </xs:complexType> </xs:element>
<xs:element name='error'> <xs:complexType> <xs:sequence xmlns:err='urn:ietf:params:xml:ns:xmpp-streams'> <xs:group ref='err:streamErrorGroup'/> <xs:element ref='err:text' minOccurs='0' maxOccurs='1'/> <xs:any namespace='##other' minOccurs='0' maxOccurs='1' processContents='lax'/> </xs:sequence> </xs:complexType> </xs:element>
</xs:schema>
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:ietf:params:xml:ns:xmpp-streams' xmlns='urn:ietf:params:xml:ns:xmpp-streams' elementFormDefault='qualified'>
<xs:element name='bad-format' type='empty'/> <xs:element name='bad-namespace-prefix' type='empty'/> <xs:element name='conflict' type='empty'/> <xs:element name='connection-timeout' type='empty'/> <xs:element name='host-gone' type='empty'/> <xs:element name='host-unknown' type='empty'/> <xs:element name='improper-addressing' type='empty'/> <xs:element name='internal-server-error' type='empty'/> <xs:element name='invalid-from' type='empty'/> <xs:element name='invalid-id' type='empty'/> <xs:element name='invalid-namespace' type='empty'/> <xs:element name='invalid-xml' type='empty'/> <xs:element name='not-authorized' type='empty'/> <xs:element name='not-well-formed' type='empty'/> <xs:element name='policy-violation' type='empty'/> <xs:element name='remote-connection-failed' type='empty'/> <xs:element name='reset' type='empty'/> <xs:element name='resource-constraint' type='empty'/> <xs:element name='restricted-xml' type='empty'/> <xs:element name='see-other-host' type='xs:string'/> <xs:element name='system-shutdown' type='empty'/> <xs:element name='undefined-condition' type='empty'/> <xs:element name='unsupported-encoding' type='empty'/> <xs:element name='unsupported-stanza-type' type='empty'/> <xs:element name='unsupported-version' type='empty'/>
<xs:group name='streamErrorGroup'> <xs:choice> <xs:element ref='bad-format'/> <xs:element ref='bad-namespace-prefix'/> <xs:element ref='conflict'/> <xs:element ref='connection-timeout'/> <xs:element ref='host-gone'/> <xs:element ref='host-unknown'/> <xs:element ref='improper-addressing'/> <xs:element ref='internal-server-error'/> <xs:element ref='invalid-from'/> <xs:element ref='invalid-id'/>
<xs:element ref='invalid-namespace'/> <xs:element ref='invalid-xml'/> <xs:element ref='not-authorized'/> <xs:element ref='not-well-formed'/> <xs:element ref='policy-violation'/> <xs:element ref='remote-connection-failed'/> <xs:element ref='reset'/> <xs:element ref='resource-constraint'/> <xs:element ref='restricted-xml'/> <xs:element ref='see-other-host'/> <xs:element ref='system-shutdown'/> <xs:element ref='undefined-condition'/> <xs:element ref='unsupported-encoding'/> <xs:element ref='unsupported-stanza-type'/> <xs:element ref='unsupported-version'/> </xs:choice> </xs:group>
<xs:element name='text'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:string'> <xs:attribute ref='xml:lang' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:simpleType name='empty'> <xs:restriction base='xs:string'> <xs:enumeration value=''/> </xs:restriction> </xs:simpleType>
</xs:schema>
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:ietf:params:xml:ns:xmpp-tls' xmlns='urn:ietf:params:xml:ns:xmpp-tls' elementFormDefault='qualified'>
<xs:element name='starttls'> <xs:complexType> <xs:choice minOccurs='0' maxOccurs='1'> <xs:element name='required' type='empty'/> </xs:choice> </xs:complexType> </xs:element>
<xs:element name='proceed' type='empty'/>
<xs:element name='failure' type='empty'/>
<xs:simpleType name='empty'> <xs:restriction base='xs:string'> <xs:enumeration value=''/> </xs:restriction> </xs:simpleType>
</xs:schema>
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:ietf:params:xml:ns:xmpp-sasl' xmlns='urn:ietf:params:xml:ns:xmpp-sasl' elementFormDefault='qualified'>
<xs:element name='mechanisms'> <xs:complexType> <xs:sequence> <xs:element name='mechanism' minOccurs='1' maxOccurs='unbounded' type='xs:NMTOKEN'/> <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' processContents='lax'/> </xs:sequence> </xs:complexType> </xs:element>
<xs:element name='abort' type='empty'/>
<xs:element name='auth'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:string'> <xs:attribute name='mechanism' type='xs:NMTOKEN' use='required'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:element name='challenge' type='xs:string'/>
<xs:element name='response' type='xs:string'/>
<xs:element name='success' type='xs:string'/>
<xs:element name='failure'> <xs:complexType> <xs:sequence> <xs:choice minOccurs='0'> <xs:element name='aborted' type='empty'/> <xs:element name='account-disabled' type='empty'/> <xs:element name='credentials-expired' type='empty'/> <xs:element name='encryption-required' type='empty'/> <xs:element name='incorrect-encoding' type='empty'/> <xs:element name='invalid-authzid' type='empty'/> <xs:element name='invalid-mechanism' type='empty'/> <xs:element name='malformed-request' type='empty'/> <xs:element name='mechanism-too-weak' type='empty'/> <xs:element name='not-authorized' type='empty'/> <xs:element name='temporary-auth-failure' type='empty'/> </xs:choice> <xs:element ref='text' minOccurs='0' maxOccurs='1'/> </xs:sequence> </xs:complexType> </xs:element>
<xs:element name='text'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:string'> <xs:attribute ref='xml:lang' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:simpleType name='empty'> <xs:restriction base='xs:string'> <xs:enumeration value=''/> </xs:restriction> </xs:simpleType>
</xs:schema>
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='jabber:client' xmlns='jabber:client' elementFormDefault='qualified'>
<xs:import namespace='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<xs:element name='message'> <xs:complexType> <xs:sequence> <xs:choice minOccurs='0' maxOccurs='unbounded'> <xs:element ref='subject'/> <xs:element ref='body'/> <xs:element ref='thread'/> </xs:choice> <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' processContents='lax'/> <xs:element ref='error' minOccurs='0'/> </xs:sequence> <xs:attribute name='from' type='xs:string' use='optional'/> <xs:attribute name='id' type='xs:NMTOKEN' use='optional'/> <xs:attribute name='to' type='xs:string' use='optional'/> <xs:attribute name='type' use='optional' default='normal'>
<xs:simpleType> <xs:restriction base='xs:NMTOKEN'> <xs:enumeration value='chat'/> <xs:enumeration value='error'/> <xs:enumeration value='groupchat'/> <xs:enumeration value='headline'/> <xs:enumeration value='normal'/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute ref='xml:lang' use='optional'/> </xs:complexType> </xs:element>
<xs:element name='body'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:string'> <xs:attribute ref='xml:lang' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:element name='subject'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:string'> <xs:attribute ref='xml:lang' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:element name='thread'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:NMTOKEN'> <xs:attribute name='parent' type='xs:NMTOKEN' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:element name='presence'> <xs:complexType> <xs:sequence> <xs:choice minOccurs='0' maxOccurs='unbounded'> <xs:element ref='show'/> <xs:element ref='status'/> <xs:element ref='priority'/> </xs:choice> <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' processContents='lax'/> <xs:element ref='error' minOccurs='0'/> </xs:sequence> <xs:attribute name='from' type='xs:string' use='optional'/> <xs:attribute name='id' type='xs:NMTOKEN' use='optional'/> <xs:attribute name='to' type='xs:string' use='optional'/> <xs:attribute name='type' use='optional'> <xs:simpleType> <xs:restriction base='xs:NMTOKEN'> <xs:enumeration value='error'/> <xs:enumeration value='probe'/> <xs:enumeration value='subscribe'/> <xs:enumeration value='subscribed'/> <xs:enumeration value='unavailable'/> <xs:enumeration value='unsubscribe'/> <xs:enumeration value='unsubscribed'/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute ref='xml:lang' use='optional'/> </xs:complexType> </xs:element>
<xs:element name='show'> <xs:simpleType> <xs:restriction base='xs:NMTOKEN'> <xs:enumeration value='away'/> <xs:enumeration value='chat'/> <xs:enumeration value='dnd'/> <xs:enumeration value='xa'/> </xs:restriction> </xs:simpleType> </xs:element>
<xs:element name='status'> <xs:complexType> <xs:simpleContent> <xs:extension base='string1024'> <xs:attribute ref='xml:lang' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:simpleType name='string1024'> <xs:restriction base='xs:string'> <xs:minLength value='1'/> <xs:maxLength value='1024'/> </xs:restriction> </xs:simpleType>
<xs:element name='priority' type='xs:byte'/>
<xs:element name='iq'> <xs:complexType> <xs:sequence> <xs:any namespace='##other' minOccurs='0' maxOccurs='1' processContents='lax'/> <xs:element ref='error' minOccurs='0'/> </xs:sequence> <xs:attribute name='from' type='xs:string' use='optional'/> <xs:attribute name='id' type='xs:NMTOKEN' use='required'/>
<xs:attribute name='to' type='xs:string' use='optional'/> <xs:attribute name='type' use='required'> <xs:simpleType> <xs:restriction base='xs:NMTOKEN'> <xs:enumeration value='error'/> <xs:enumeration value='get'/> <xs:enumeration value='result'/> <xs:enumeration value='set'/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute ref='xml:lang' use='optional'/> </xs:complexType> </xs:element>
<xs:element name='error'> <xs:complexType> <xs:sequence xmlns:err='urn:ietf:params:xml:ns:xmpp-stanzas'> <xs:group ref='err:stanzaErrorGroup'/> <xs:element ref='err:text' minOccurs='0'/> </xs:sequence> <xs:attribute name='by' type='xs:string' use='optional'/> <xs:attribute name='type' use='required'> <xs:simpleType> <xs:restriction base='xs:NMTOKEN'> <xs:enumeration value='auth'/> <xs:enumeration value='cancel'/> <xs:enumeration value='continue'/> <xs:enumeration value='modify'/> <xs:enumeration value='wait'/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
</xs:schema>
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='jabber:server' xmlns='jabber:server' elementFormDefault='qualified'>
<xs:import namespace='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<xs:element name='message'> <xs:complexType> <xs:sequence> <xs:choice minOccurs='0' maxOccurs='unbounded'> <xs:element ref='subject'/> <xs:element ref='body'/> <xs:element ref='thread'/> </xs:choice> <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' processContents='lax'/> <xs:element ref='error' minOccurs='0'/> </xs:sequence> <xs:attribute name='from' type='xs:string' use='required'/> <xs:attribute name='id' type='xs:NMTOKEN' use='optional'/> <xs:attribute name='to' type='xs:string' use='required'/> <xs:attribute name='type' use='optional' default='normal'> <xs:simpleType> <xs:restriction base='xs:NMTOKEN'> <xs:enumeration value='chat'/> <xs:enumeration value='error'/> <xs:enumeration value='groupchat'/> <xs:enumeration value='headline'/> <xs:enumeration value='normal'/> </xs:restriction>
</xs:simpleType> </xs:attribute> <xs:attribute ref='xml:lang' use='optional'/> </xs:complexType> </xs:element>
<xs:element name='body'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:string'> <xs:attribute ref='xml:lang' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:element name='subject'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:string'> <xs:attribute ref='xml:lang' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:element name='thread'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:NMTOKEN'> <xs:attribute name='parent' type='xs:NMTOKEN' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:element name='subject'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:NMTOKEN'> <xs:attribute name='parent' type='xs:NMTOKEN' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:element name='presence'> <xs:complexType> <xs:sequence> <xs:choice minOccurs='0' maxOccurs='unbounded'> <xs:element ref='show'/> <xs:element ref='status'/> <xs:element ref='priority'/> </xs:choice> <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' processContents='lax'/> <xs:element ref='error' minOccurs='0'/> </xs:sequence> <xs:attribute name='from' type='xs:string' use='required'/> <xs:attribute name='id' type='xs:NMTOKEN' use='optional'/> <xs:attribute name='to' type='xs:string' use='required'/> <xs:attribute name='type' use='optional'> <xs:simpleType> <xs:restriction base='xs:NMTOKEN'> <xs:enumeration value='error'/> <xs:enumeration value='probe'/> <xs:enumeration value='subscribe'/> <xs:enumeration value='subscribed'/> <xs:enumeration value='unavailable'/> <xs:enumeration value='unsubscribe'/> <xs:enumeration value='unsubscribed'/> </xs:restriction> </xs:simpleType>
</xs:attribute> <xs:attribute ref='xml:lang' use='optional'/> </xs:complexType> </xs:element>
<xs:element name='show'> <xs:simpleType> <xs:restriction base='xs:NMTOKEN'> <xs:enumeration value='away'/> <xs:enumeration value='chat'/> <xs:enumeration value='dnd'/> <xs:enumeration value='xa'/> </xs:restriction> </xs:simpleType> </xs:element>
<xs:element name='status'> <xs:complexType> <xs:simpleContent> <xs:extension base='string1024'> <xs:attribute ref='xml:lang' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:simpleType name='string1024'> <xs:restriction base='xs:string'> <xs:minLength value='1'/> <xs:maxLength value='1024'/> </xs:restriction> </xs:simpleType>
<xs:element name='priority' type='xs:byte' default='0'/>
<xs:element name='iq'> <xs:complexType> <xs:sequence> <xs:any namespace='##other' minOccurs='0' maxOccurs='1' processContents='lax'/> <xs:element ref='error' minOccurs='0'/> </xs:sequence> <xs:attribute name='from' type='xs:string' use='required'/>
<xs:attribute name='id' type='xs:NMTOKEN' use='required'/> <xs:attribute name='to' type='xs:string' use='required'/> <xs:attribute name='type' use='required'> <xs:simpleType> <xs:restriction base='xs:NMTOKEN'> <xs:enumeration value='error'/> <xs:enumeration value='get'/> <xs:enumeration value='result'/> <xs:enumeration value='set'/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute ref='xml:lang' use='optional'/> </xs:complexType> </xs:element>
<xs:element name='error'> <xs:complexType> <xs:sequence xmlns:err='urn:ietf:params:xml:ns:xmpp-stanzas'> <xs:group ref='err:stanzaErrorGroup'/> <xs:element ref='err:text' minOccurs='0'/> </xs:sequence> <xs:attribute name='by' type='xs:string' use='optional'/> <xs:attribute name='type' use='required'> <xs:simpleType> <xs:restriction base='xs:NMTOKEN'> <xs:enumeration value='auth'/> <xs:enumeration value='cancel'/> <xs:enumeration value='continue'/> <xs:enumeration value='modify'/> <xs:enumeration value='wait'/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
</xs:schema>
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:ietf:params:xml:ns:xmpp-bind' xmlns='urn:ietf:params:xml:ns:xmpp-bind' elementFormDefault='qualified'>
<xs:element name='bind'> <xs:complexType> <xs:choice> <xs:element name='resource' type='resourceType'/> <xs:element name='jid' type='fullJIDType'/> </xs:choice> </xs:complexType> </xs:element>
<xs:simpleType name='fullJIDType'> <xs:restriction base='xs:string'> <xs:minLength value='8'/> <xs:maxLength value='3071'/> </xs:restriction> </xs:simpleType>
<xs:simpleType name='resourceType'> <xs:restriction base='xs:string'> <xs:minLength value='1'/> <xs:maxLength value='1023'/> </xs:restriction> </xs:simpleType>
</xs:schema>
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:ietf:params:xml:ns:xmpp-stanzas' xmlns='urn:ietf:params:xml:ns:xmpp-stanzas' elementFormDefault='qualified'>
<xs:element name='bad-request' type='empty'/> <xs:element name='conflict' type='empty'/> <xs:element name='feature-not-implemented' type='empty'/>
<xs:element name='forbidden' type='empty'/> <xs:element name='gone' type='xs:string'/> <xs:element name='internal-server-error' type='empty'/> <xs:element name='item-not-found' type='empty'/> <xs:element name='jid-malformed' type='empty'/> <xs:element name='not-acceptable' type='empty'/> <xs:element name='not-allowed' type='empty'/> <xs:element name='not-authorized' type='empty'/> <xs:element name='policy-violation' type='empty'/> <xs:element name='recipient-unavailable' type='empty'/> <xs:element name='redirect' type='xs:string'/> <xs:element name='registration-required' type='empty'/> <xs:element name='remote-server-not-found' type='empty'/> <xs:element name='remote-server-timeout' type='empty'/> <xs:element name='resource-constraint' type='empty'/> <xs:element name='service-unavailable' type='empty'/> <xs:element name='subscription-required' type='empty'/> <xs:element name='undefined-condition' type='empty'/> <xs:element name='unexpected-request' type='empty'/>
<xs:group name='stanzaErrorGroup'> <xs:choice> <xs:element ref='bad-request'/> <xs:element ref='conflict'/> <xs:element ref='feature-not-implemented'/> <xs:element ref='forbidden'/> <xs:element ref='gone'/> <xs:element ref='internal-server-error'/> <xs:element ref='item-not-found'/> <xs:element ref='jid-malformed'/> <xs:element ref='not-acceptable'/> <xs:element ref='not-authorized'/> <xs:element ref='not-allowed'/> <xs:element ref='policy-violation'/> <xs:element ref='recipient-unavailable'/> <xs:element ref='redirect'/> <xs:element ref='registration-required'/> <xs:element ref='remote-server-not-found'/> <xs:element ref='remote-server-timeout'/> <xs:element ref='resource-constraint'/> <xs:element ref='service-unavailable'/> <xs:element ref='subscription-required'/> <xs:element ref='undefined-condition'/> <xs:element ref='unexpected-request'/> </xs:choice> </xs:group>
<xs:element name='text'> <xs:complexType> <xs:simpleContent> <xs:extension base='xs:string'> <xs:attribute ref='xml:lang' use='optional'/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
<xs:simpleType name='empty'> <xs:restriction base='xs:string'> <xs:enumeration value=''/> </xs:restriction> </xs:simpleType>
</xs:schema>
Consistent with [MAILBOXES], organization that offer XMPP services are encouraged to provide an Internet mailbox of "XMPP" for inquiries related to that service, where the host portion of the resulting mailto URI is the organization's domain, not the domain of the XMPP service itself (e.g., the XMPP service might be offered at im.example.com but the Internet mailbox would be <xmpp@example.com>).
[メールボックス]と一致して、XMPPサービスを提供する組織は、そのサービスに関連する問い合わせの「XMPP」のインターネットメールボックスを提供することをお勧めします。それ自体(例えば、XMPPサービスはim.example.comで提供される場合がありますが、インターネットメールボックスは<xmpp@example.com>になります)。
Account provisioning is out of scope for this specification. Possible methods for account provisioning include account creation by a server administrator and in-band account registration using the 'jabber:iq:register' namespace as documented in [XEP-0077]. An XMPP server implementation or administrative function MUST ensure that any JID assigned during account provisioning (including localpart, domainpart, resourcepart, and separator characters) conforms to the canonical format for XMPP addresses defined in [XMPP-ADDR].
アカウントプロビジョニングは、この仕様の範囲外です。アカウントプロビジョニングの可能な方法には、[Jabber:IQ:Register 'NameSpaceを使用したサーバー管理者によるアカウント作成と帯域内のアカウント登録が含まれます。XMPPサーバーの実装または管理機能は、アカウントプロビジョニング中に割り当てられたJID(LocalPart、DomainPart、ResourcePart、およびSeparator文字を含む)が[XMPP-ADDR]で定義されたXMPPアドレスの標準形式に準拠することを確認する必要があります。
Based on consensus derived from implementation and deployment experience as well as formal interoperability testing, the following substantive modifications were made from RFC 3920 (in addition to numerous changes of an editorial nature).
実装と展開の経験、および正式な相互運用性テストから派生したコンセンサスに基づいて、RFC 3920から次の実質的な変更が行われました(編集性の多数の変更に加えて)。
o Moved specification of the XMPP address format to a separate document.
o XMPPアドレス形式の仕様を別のドキュメントに移動しました。
o Recommended or mandated use of the 'from' and 'to' attributes on stream headers.
o ストリームヘッダー上の「From」および 'to'属性の推奨または義務付けられた使用。
o More fully specified the stream closing handshake.
o ストリームの閉鎖握手をより完全に指定しました。
o Specified the recommended stream reconnection algorithm.
o 推奨されるストリーム再接続アルゴリズムを指定しました。
o Changed the name of the <xml-not-well-formed/> stream error condition to <not-well-formed/> for compliance with the XML specification.
o XML仕様のコンプライアンスのために、<xml-not-well-formed/>ストリームエラー条件の名前を<not-well-formed/>に変更しました。
o Removed the unnecessary and unused <invalid-id/> stream error (see RFC 3920 for historical documentation).
o 不必要で使用されていない未使用の<invalid-id/>ストリームエラーを削除しました(履歴文書についてはRFC 3920を参照)。
o Specified return of the <restricted-xml/> stream error in response to receipt of prohibited XML features.
o 禁止されているXML機能の受領に応じて、<制限付きXML/>ストリームエラーの指定されたリターン。
o More completely specified the format and handling of the <see-other-host/> stream error, including consistency with RFC 3986 and RFC 5952 with regard to IPv6 addresses (e.g., enclosing the IPv6 address in square brackets '[' and ']').
o IPv6アドレスに関してRFC 3986およびRFC 5952との一貫性を含む、<See-Other-Host/>ストリームエラーの形式と処理をより完全に指定しました(たとえば、四角いブラケットのIPv6アドレスを囲む['および'] ')。
o Specified that the SASL SCRAM mechanism is a mandatory-to-implement technology for client-to-server streams.
o SASLスクラムメカニズムは、クライアントからサーバーまでのストリームのための必須テクノロジーであることを指定しました。
o Specified that TLS plus the SASL PLAIN mechanism is a mandatory-to-implement technology for client-to-server streams.
o TLSプラスSASLプレーンメカニズムは、クライアントからサーバーへのストリームのための必須テクノロジーであることを指定しました。
o Specified that support for the SASL EXTERNAL mechanism is required for servers but only recommended for clients (since end-user X.509 certificates are difficult to obtain and not yet widely deployed).
o サーバーにはSASL外部メカニズムのサポートが必要ですが、クライアントにのみ推奨されることが指定されています(エンドユーザーX.509証明書は取得が困難であり、まだ広く展開されていません)。
o Removed the hard two-connection rule for server-to-server streams.
o サーバー間ストリームのハード2接続ルールを削除しました。
o More clearly specified the certificate profile for both public key certificates and issuer certificates.
o 公開キー証明書と発行者証明書の両方の証明書プロファイルをより明確に指定しました。
o Added the <reset/> stream error (Section 4.9.3.16) condition to handle expired/revoked certificates or the addition of security-critical features to an existing stream.
o <reset/>ストリームエラー(セクション4.9.3.16)条件を追加して、期限切れ/取り消された証明書または既存のストリームにセキュリティ批判的な機能を追加することを処理しました。
o Added the <account-disabled/>, <credentials-expired/>, <encryption-required/>, and <malformed-request/> SASL error conditions to handle error flows mistakenly left out of RFC 3920 or discussed in RFC 4422 but not in RFC 2222.
o <Account-Disabled/>、<credentientivels-Expired/>、<encryption-required/>、および<malformed-request/> saslエラー条件を追加して、rfc 3920から誤って残したエラーフローを処理するか、RFC 4422で議論されていますが、RFC 2222で。
o Removed the unused <payment-required/> stanza error.
o 未使用の<支払い要請/>スタンザエラーを削除しました。
o Removed the unnecessary requirement for escaping of characters that map to certain predefined entities, since they do not need to be escaped in XML.
o XMLで逃げる必要がないため、特定の事前定義されたエンティティにマッピングする文字を逃げるための不必要な要件を削除しました。
o Clarified the process of DNS SRV lookups and fallbacks.
o DNS SRVルックアップとフォールバックのプロセスを明確にしました。
o Clarified the handling of SASL security layers.
o SASLセキュリティレイヤーの取り扱いを明確にしました。
o Clarified that a SASL simple user name is the localpart, not the bare JID.
o SASLの単純なユーザー名は、むき出しのジッドではなく、LocalPartであることを明らかにしました。
o Clarified the stream negotiation process and associated flow chart.
o ストリーム交渉プロセスと関連するフローチャートを明確にしました。
o Clarified the handling of stream features.
o ストリーム機能の処理を明確にしました。
o Added a 'by' attribute to the <error/> element for stanza errors so that the entity that has detected the error can include its JID for diagnostic or tracking purposes.
o Stanzaエラーの<エラー/>要素に「by」属性を追加して、エラーを検出したエンティティに診断または追跡の目的でJIDを含めることができます。
o Clarified the handling of data that violates the well-formedness definitions for XML 1.0 and XML namespaces.
o XML 1.0およびXMLネームスペースの整形式定義に違反するデータの取り扱いを明らかにしました。
o Specified the security considerations in more detail, especially with regard to presence leaks and denial-of-service attacks.
o 特に存在漏れとサービス拒否攻撃に関して、セキュリティ上の考慮事項をより詳細に指定しました。
o Moved documentation of the Server Dialback protocol from this specification to a separate specification maintained by the XMPP Standards Foundation.
o サーバーダイヤルバックプロトコルのドキュメントは、この仕様からXMPP Standards Foundationが管理する別の仕様に移動しました。
This document is an update to, and derived from, RFC 3920. This document would have been impossible without the work of the contributors and commenters acknowledged there.
このドキュメントは、RFC 3920の更新であり、派生したものです。このドキュメントは、貢献者とコメンターの作業がそこに認められないと不可能でした。
Hundreds of people have provided implementation feedback, bug reports, requests for clarification, and suggestions for improvement since publication of RFC 3920. Although the document editor has endeavored to address all such feedback, he is solely responsible for any remaining errors and ambiguities.
何百人もの人々が、RFC 3920の公開以来、実装フィードバック、バグレポート、明確化の要求、改善の提案を提供しています。ドキュメントエディターはそのようなすべてのフィードバックに対処するよう努めていますが、彼は残りのエラーやあいまいさについて単独で責任を負います。
Special thanks are due to Kevin Smith, Matthew Wild, Dave Cridland, Philipp Hancke, Waqas Hussain, Florian Zeitz, Ben Campbell, Jehan Pages, Paul Aurich, Justin Karneges, Kurt Zeilenga, Simon Josefsson, Ralph Meijer, Curtis King, and others for their comments during Working Group Last Call.
ケビン・スミス、マシュー・ワイルド、デイブ・クリッドランド、フィリップ・ハンクケ、ワカス・フセイン、フロリアン・ジッツ、ベン・キャンベル、ジェハン・ペイジ、ポール・オーリッヒ、ジャスティン・カルネージュ、カート・ゼイレンガ、サイモン・ジョセフソン、ラルフ・メイヤー、カーティス・キング、その他ワーキンググループの最後のコール中の彼らのコメント。
Thanks also to Yaron Sheffer and Elwyn Davies for their reviews on behalf of the Security Directorate and the General Area Review Team, respectively.
また、セキュリティ局と一般的なレビューチームに代わってレビューをしてくれたヤロンシェファーとエルウィンデイビスにも感謝します。
The Working Group chairs were Ben Campbell and Joe Hildebrand. The responsible Area Director was Gonzalo Camarillo.
ワーキンググループの椅子は、ベンキャンベルとジョーヒルデブランドでした。責任あるエリアディレクターはゴンザロカマリロでした。
Author's Address
著者の連絡先
Peter Saint-Andre Cisco 1899 Wyknoop Street, Suite 600 Denver, CO 80202 USA
ピーターセントアンドレシスコ1899 Wyknoop Street、Suite 600 Denver、Co 80202 USA
Phone: +1-303-308-3282 EMail: psaintan@cisco.com