[要約] RFC 7628は、OAuthのための簡単な認証およびセキュリティレイヤ(SASL)メカニズムのセットに関するものです。このRFCの目的は、OAuthのセキュリティを向上させ、認証プロセスを簡素化することです。

Internet Engineering Task Force (IETF)                          W. Mills
Request for Comments: 7628                                     Microsoft
Category: Standards Track                                   T. Showalter
ISSN: 2070-1721
                                                           H. Tschofenig
                                                                ARM Ltd.
                                                             August 2015
        

A Set of Simple Authentication and Security Layer (SASL) Mechanisms for OAuth

OAuthのシンプルな認証およびセキュリティ層(SASL)メカニズムのセット

Abstract

概要

OAuth enables a third-party application to obtain limited access to a protected resource, either on behalf of a resource owner by orchestrating an approval interaction or by allowing the third-party application to obtain access on its own behalf.

OAuthを使用すると、承認インタラクションを調整することにより、またはサードパーティアプリケーションが自身に代わってアクセス権を取得できるようにすることにより、リソース所有者に代わって、サードパーティアプリケーションが保護されたリソースへの制限付きアクセスを取得できます。

This document defines how an application client uses credentials obtained via OAuth over the Simple Authentication and Security Layer (SASL) to access a protected resource at a resource server. Thereby, it enables schemes defined within the OAuth framework for non-HTTP-based application protocols.

このドキュメントでは、アプリケーションクライアントがOAuthを介して取得した資格情報をSASL(Simple Authentication and Security Layer)経由で使用して、リソースサーバーの保護されたリソースにアクセスする方法を定義します。これにより、非HTTPベースのアプリケーションプロトコルのOAuthフレームワーク内で定義されたスキームが可能になります。

Clients typically store the user's long-term credential. This does, however, lead to significant security vulnerabilities, for example, when such a credential leaks. A significant benefit of OAuth for usage in those clients is that the password is replaced by a shared secret with higher entropy, i.e., the token. Tokens typically provide limited access rights and can be managed and revoked separately from the user's long-term password.

クライアントは通常、ユーザーの長期資格情報を保存します。ただし、これにより、たとえば、このような資格情報が漏洩した場合に、セキュリティ上の重大な脆弱性が発生します。これらのクライアントで使用するOAuthの大きな利点は、パスワードがエントロピーの高い共有シークレット、つまりトークンに置き換えられることです。トークンは通常、制限されたアクセス権を提供し、ユーザーの長期パスワードとは別に管理および取り消しできます。

Status of This Memo

本文書の状態

This is an Internet Standards Track document.

これはInternet Standards Trackドキュメントです。

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(Internet Engineering Task Force)の製品です。これは、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/rfc7628.

このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、http://www.rfc-editor.org/info/rfc7628で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2015 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文書に関するIETFトラストの法的規定(http://trustee.ietf.org/license-info)の対象であり、この文書の発行日に有効です。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、Trust Legal Provisionsのセクション4.eに記載されているSimplified BSD Licenseのテキストが含まれている必要があり、Simplified BSD Licenseに記載されているように保証なしで提供されます。

Table of Contents

目次

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   5
   3.  OAuth SASL Mechanism Specifications . . . . . . . . . . . . .   6
     3.1.  Initial Client Response . . . . . . . . . . . . . . . . .   7
       3.1.1.  Reserved Key/Values . . . . . . . . . . . . . . . . .   8
     3.2.  Server's Response . . . . . . . . . . . . . . . . . . . .   8
       3.2.1.  OAuth Identifiers in the SASL Context . . . . . . . .   9
       3.2.2.  Server Response to Failed Authentication  . . . . . .   9
       3.2.3.  Completing an Error Message Sequence  . . . . . . . .  10
     3.3.  OAuth Access Token Types using Keyed Message Digests  . .  11
   4.  Examples  . . . . . . . . . . . . . . . . . . . . . . . . . .  12
     4.1.  Successful Bearer Token Exchange  . . . . . . . . . . . .  12
     4.2.  Successful OAuth 1.0a Token Exchange  . . . . . . . . . .  13
     4.3.  Failed Exchange . . . . . . . . . . . . . . . . . . . . .  14
     4.4.  SMTP Example of a Failed Negotiation  . . . . . . . . . .  15
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .  16
   6.  Internationalization Considerations . . . . . . . . . . . . .  17
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  18
     7.1.  SASL Registration . . . . . . . . . . . . . . . . . . . .  18
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  19
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .  19
     8.2.  Informative References  . . . . . . . . . . . . . . . . .  20
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  21
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  21
        
1. Introduction
1. はじめに

OAuth 1.0a [RFC5849] and OAuth 2.0 [RFC6749] are protocol frameworks that enable a third-party application to obtain limited access to a protected resource, either by orchestrating an approval interaction on behalf of a resource owner or by allowing the third-party application to obtain access on its own behalf.

OAuth 1.0a [RFC5849]およびOAuth 2.0 [RFC6749]は、リソースオーナーに代わって承認インタラクションを調整するか、サードパーティを許可することにより、サードパーティアプリケーションが保護されたリソースへの制限付きアクセスを取得できるようにするプロトコルフレームワークです。自分のためにアクセス権を取得するアプリケーション。

The core OAuth 2.0 specification [RFC6749] specifies the interaction between the OAuth client and the authorization server; it does not define the interaction between the OAuth client and the resource server for the access to a protected resource using an access token. Instead, the OAuth client to resource server interaction is described in separate specifications, such as the bearer token specification [RFC6750]. OAuth 1.0a includes the protocol specification for the communication between the OAuth client and the resource server in [RFC5849].

コアOAuth 2.0仕様[RFC6749]は、OAuthクライアントと認証サーバー間の相互作用を指定しています。アクセストークンを使用して保護されたリソースにアクセスするためのOAuthクライアントとリソースサーバー間の相互作用は定義しません。代わりに、OAuthクライアントとリソースサーバーの相互作用は、ベアラートークン仕様[RFC6750]などの個別の仕様で説明されています。 OAuth 1.0aには、[RFC5849]のOAuthクライアントとリソースサーバー間の通信に関するプロトコル仕様が含まれています。

The main use cases for OAuth 1.0a and OAuth 2.0 have so far focused on an HTTP-based [RFC7230] environment only. This document integrates OAuth 1.0a and OAuth 2.0 into non-HTTP-based applications using the integration into the Simple Authentication and Security Layer (SASL) [RFC4422]. Hence, this document takes advantage of the OAuth protocol and its deployment base to provide a way to use SASL to gain access to resources when using non-HTTP-based protocols, such as the Internet Message Access Protocol (IMAP) [RFC3501] and the Simple Mail Transfer Protocol (SMTP) [RFC5321]. This document gives examples of use in IMAP and SMTP.

OAuth 1.0aおよびOAuth 2.0の主な使用例は、これまでHTTPベースの[RFC7230]環境のみに焦点を当ててきました。このドキュメントは、Simple Authentication and Security Layer(SASL)[RFC4422]への統合を使用して、OAuth 1.0aおよびOAuth 2.0を非HTTPベースのアプリケーションに統合します。したがって、このドキュメントはOAuthプロトコルとそのデプロイメントベースを利用して、インターネットメッセージアクセスプロトコル(IMAP)[RFC3501]などの非HTTPベースのプロトコルを使用するときにSASLを使用してリソースにアクセスする方法を提供します。 Simple Mail Transfer Protocol(SMTP)[RFC5321]。このドキュメントでは、IMAPおよびSMTPでの使用例を示します。

To illustrate the impact of integrating this specification into an OAuth-enabled application environment, Figure 1 shows the abstract message flow of OAuth 2.0 [RFC6749]. As indicated in the figure, this document impacts the exchange of messages (E) and (F) since SASL is used for interaction between the client and the resource server instead of HTTP.

この仕様をOAuth対応のアプリケーション環境に統合することの影響を説明するために、図1はOAuth 2.0 [RFC6749]の抽象的なメッセージフローを示しています。図に示すように、SASLはHTTPの代わりにクライアントとリソースサーバー間の対話に使用されるため、このドキュメントはメッセージ(E)と(F)の交換に影響します。

                                                              ----+
   +--------+                                  +---------------+  |
   |        |--(A)-- Authorization Request --->|   Resource    |  |
   |        |                                  |    Owner      |  |Plain
   |        |<-(B)------ Access Grant ---------|               |  |OAuth
   |        |                                  +---------------+  |2.0
   |        |                                                     |
   |        |         Client Credentials &     +---------------+  |
   |        |--(C)------ Access Grant -------->| Authorization |  |
   | Client |                                  |    Server     |  |
   |        |<-(D)------ Access Token ---------|               |  |
   |        |      (w/ Optional Refresh Token) +---------------+  |
   |        |                                                 ----+
   |        |                                                 ----+
   |        |                                  +---------------+  |
   |        |                                  |               |  |OAuth
   |        |--(E)------ Access Token -------->|   Resource    |  |over
   |        |                                  |    Server     |  |SASL
   |        |<-(F)---- Protected Resource -----|               |  |
   |        |                                  |               |  |
   +--------+                                  +---------------+  |
                                                              ----+
        

Figure 1: OAuth 2.0 Protocol Flow

図1:OAuth 2.0プロトコルフロー

SASL is a framework for providing authentication and data security services in connection-oriented protocols via replaceable authentication mechanisms. It provides a structured interface between protocols and mechanisms. The resulting framework allows new protocols to reuse existing authentication mechanisms and allows old protocols to make use of new authentication mechanisms. The framework also provides a protocol for securing subsequent exchanges within a data security layer.

SASLは、交換可能な認証メカニズムを介して、コネクション型プロトコルで認証およびデータセキュリティサービスを提供するためのフレームワークです。プロトコルとメカニズム間の構造化インターフェースを提供します。結果のフレームワークにより、新しいプロトコルは既存の認証メカニズムを再利用でき、古いプロトコルは新しい認証メカニズムを利用できます。フレームワークは、データセキュリティレイヤー内の後続の交換を保護するためのプロトコルも提供します。

When OAuth is integrated into SASL, the high-level steps are as follows:

OAuthがSASLに統合されている場合、大まかな手順は次のとおりです。

(A) The client requests authorization from the resource owner. The authorization request can be made directly to the resource owner (as shown) or indirectly via the authorization server as an intermediary.

(A)クライアントはリソース所有者に承認を要求します。承認リクエストは、リソース所有者に直接(図に示すように)、または仲介として承認サーバーを介して間接的に行うことができます。

(B) The client receives an authorization grant, which is a credential representing the resource owner's authorization, expressed using one of the grant types defined in [RFC6749] or [RFC5849] or using an extension grant type. The authorization grant type depends on the method used by the client to request authorization and the types supported by the authorization server.

(B)クライアントは、[RFC6749]または[RFC5849]で定義された許可タイプの1つを使用して、または拡張許可タイプを使用して表される、リソース所有者の許可を表す資格情報である許可許可を受け取ります。許可付与タイプは、クライアントが許可を要求するために使用する方法と、許可サーバーがサポートするタイプによって異なります。

(C) The client requests an access token by authenticating with the authorization server and presenting the authorization grant.

(C)クライアントは、許可サーバーで認証し、許可付与を提示することにより、アクセストークンを要求します。

(D) The authorization server authenticates the client and validates the authorization grant, and if valid, it issues an access token.

(D)許可サーバーはクライアントを認証し、許可付与を検証し、有効な場合はアクセストークンを発行します。

(E) The client requests the protected resource from the resource server and authenticates it by presenting the access token.

(E)クライアントはリソースサーバーに保護されたリソースを要求し、アクセストークンを提示してリソースを認証します。

(F) The resource server validates the access token, and if valid, it indicates a successful authentication.

(F)リソースサーバーはアクセストークンを検証し、有効な場合、認証が成功したことを示します。

Again, steps (E) and (F) are not defined in [RFC6749] (but are described in, for example, [RFC6750] for the OAuth bearer token instead) and are the main functionality specified within this document. Consequently, the message exchange shown in Figure 1 is the result of this specification. The client will generally need to determine the authentication endpoints (and perhaps the service endpoints) before the OAuth 2.0 protocol exchange messages in steps (A)-(D) are executed. The discovery of the resource owner, authorization server endpoints, and client registration are outside the scope of this specification. The client must discover the authorization endpoints using a discovery mechanism such as OpenID Connect Discovery (OIDCD) [OpenID.Discovery] or WebFinger using host-meta [RFC7033]. Once credentials are obtained, the client proceeds to steps (E) and (F) defined in this specification. Authorization endpoints MAY require client registration, and generic clients SHOULD support the Dynamic Client Registration protocol [RFC7591].

繰り返しますが、ステップ(E)と(F)は[RFC6749]で定義されていません(たとえば、OAuthベアラートークンの[RFC6750]で説明されています)が、このドキュメントで指定されている主要な機能です。したがって、図1に示すメッセージ交換は、この仕様の結果です。クライアントは通常、ステップ(A)から(D)でOAuth 2.0プロトコルがメッセージを交換する前に、認証エンドポイント(およびおそらくサービスエンドポイント)を決定する必要があります。リソース所有者の検出、許可サーバーのエンドポイント、およびクライアントの登録は、この仕様の範囲外です。クライアントは、OpenID Connect Discovery(OIDCD)[OpenID.Discovery]やhost-meta [RFC7033]を使用したWebFingerなどの検出メカニズムを使用して、承認エンドポイントを検出する必要があります。資格情報が取得されると、クライアントはこの仕様で定義されている手順(E)および(F)に進みます。認可エンドポイントはクライアント登録を必要とする場合があり、汎用クライアントは動的クライアント登録プロトコル[RFC7591]をサポートする必要があります(SHOULD)。

OAuth 1.0a follows a similar model but uses a different terminology and does not separate the resource server from the authorization server.

OAuth 1.0aは同様のモデルに従いますが、異なる用語を使用し、リソースサーバーを承認サーバーから分離しません。

2. Terminology
2. 用語

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 [RFC2119].

キーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、「OPTIONALこの文書の "は、[RFC2119]で説明されているように解釈されます。

The reader is assumed to be familiar with the terms used in the OAuth 2.0 specification [RFC6749] and SASL [RFC4422].

読者は、OAuth 2.0仕様[RFC6749]およびSASL [RFC4422]で使用されている用語に精通していることを前提としています。

In examples, "C:" and "S:" indicate lines sent by the client and server, respectively. Line breaks have been inserted for readability.

例では、「C:」と「S:」はそれぞれクライアントとサーバーによって送信された行を示します。読みやすくするために改行が挿入されています。

Note that the IMAP SASL specification requires base64 encoding, as specified in Section 4 of [RFC4648].

[RFC4648]のセクション4で指定されているように、IMAP SASL仕様ではbase64エンコードが必要です。

3. OAuth SASL Mechanism Specifications
3. OAuth SASLメカニズムの仕様

SASL is used as an authentication framework in a variety of application-layer protocols. This document defines the following SASL mechanisms for usage with OAuth:

SASLは、さまざまなアプリケーション層プロトコルで認証フレームワークとして使用されます。このドキュメントでは、OAuthで使用する次のSASLメカニズムを定義しています。

OAUTHBEARER: OAuth 2.0 bearer tokens, as described in [RFC6750]. RFC 6750 uses Transport Layer Security (TLS) [RFC5246] to secure the protocol interaction between the client and the resource server.

OAUTHBEARER:[RFC6750]で説明されているOAuth 2.0ベアラートークン。 RFC 6750は、トランスポート層セキュリティ(TLS)[RFC5246]を使用して、クライアントとリソースサーバー間のプロトコル対話を保護します。

OAUTH10A: OAuth 1.0a Message Authentication Code (MAC) tokens (using the HMAC-SHA1 keyed message digest), as described in Section 3.4.2 of [RFC5849].

OAUTH10A:OAuth 1.0aメッセージ認証コード(MAC)トークン(HMAC-SHA1キー付きメッセージダイジェストを使用)。[RFC5849]のセクション3.4.2で説明されています。

New extensions may be defined to add additional OAuth Access Token Types. Such a new SASL OAuth mechanism can be added by registering the new name(s) with IANA in the SASL Mechanisms registry and citing this specification for the further definition.

新しい拡張を定義して、追加のOAuthアクセストークンタイプを追加できます。そのような新しいSASL OAuthメカニズムを追加するには、新しい名前をSASLメカニズムレジストリのIANAに登録し、この仕様を詳細な定義に引用します。

SASL mechanisms using this document as their definition do not provide a data security layer; that is, they cannot provide integrity or confidentiality protection for application messages after the initial authentication. If such protection is needed, TLS or some similar solution should be used. Additionally, for the two mechanisms specified in this document, TLS MUST be used for OAUTHBEARER to protect the bearer token; for OAUTH10A, the use of TLS is RECOMMENDED.

このドキュメントを定義として使用するSASLメカニズムは、データセキュリティ層を提供しません。つまり、初期認証後のアプリケーションメッセージに整合性または機密性の保護を提供することはできません。このような保護が必要な場合は、TLSまたは同様のソリューションを使用する必要があります。さらに、このドキュメントで指定されている2つのメカニズムでは、ベアラートークンを保護するために、TLSをOAUTHBEARERに使用する必要があります。 OAUTH10Aの場合、TLSの使用が推奨されます。

These mechanisms are client initiated and in lockstep, with the server always replying to a client message. In the case where the client has and correctly uses a valid token, the flow is:

これらのメカニズムはクライアントによって開始され、ロックステップにあり、サーバーは常にクライアントメッセージに応答します。クライアントに有効なトークンがあり、正しく使用されている場合、フローは次のとおりです。

1. Client sends a valid and correct initial client response.

1. クライアントは有効で正しい初期クライアント応答を送信します。

2. Server responds with a successful authentication.

2. サーバーは認証の成功で応答します。

In the case where authentication fails, the server sends an error result; the client MUST then send an additional message to the server in order to allow the server to finish the exchange. Some protocols and common SASL implementations do not support both sending a SASL message and finalizing a SASL negotiation. The additional client message in the error case deals with this problem. This exchange is:

認証が失敗した場合、サーバーはエラー結果を送信します。その後、クライアントは、サーバーが交換を完了できるようにするために、サーバーに追加のメッセージを送信する必要があります。一部のプロトコルおよび一般的なSASL実装は、SASLメッセージの送信とSASLネゴシエーションの完了の両方をサポートしていません。エラーの場合の追加のクライアントメッセージは、この問題を扱います。この交換は次のとおりです。

1. Client sends an invalid initial client response.

1. クライアントが無効な初期クライアント応答を送信します。

2. Server responds with an error message.

2. サーバーがエラーメッセージで応答します。

3. Client sends a dummy client response.

3. クライアントはダミーのクライアント応答を送信します。

4. Server fails the authentication.

4. サーバーは認証に失敗します。

3.1. Initial Client Response
3.1. 最初のクライアント応答

Client responses are a GS2 [RFC5801] header followed by zero or more key/value pairs, or it may be empty. The gs2-header rule is defined here as a placeholder for compatibility with GS2 if a GS2 mechanism is formally defined, but this document does not define one. The key/ value pairs take the place of the corresponding HTTP headers and values to convey the information necessary to complete an OAuth-style HTTP authorization. Unknown key/value pairs MUST be ignored by the server. The ABNF [RFC5234] syntax is:

クライアントの応答は、GS2 [RFC5801]ヘッダーの後に0個以上のキーと値のペアが続くか、空の場合があります。ここでgs2-headerルールは、GS2メカニズムが正式に定義されている場合、GS2との互換性のためのプレースホルダーとして定義されていますが、このドキュメントでは定義されていません。キーと値のペアは、対応するHTTPヘッダーと値の代わりに、OAuthスタイルのHTTP認証を完了するために必要な情報を伝えます。不明なキー/値のペアはサーバーによって無視される必要があります。 ABNF [RFC5234]の構文は次のとおりです。

     kvsep          = %x01
     key            = 1*(ALPHA)
     value          = *(VCHAR / SP / HTAB / CR / LF )
     kvpair         = key "=" value kvsep
   ;;gs2-header     = See RFC 5801
     client-resp    = (gs2-header kvsep *kvpair kvsep) / kvsep
        

The GS2 header MAY include the username associated with the resource being accessed, the "authzid". It is worth noting that application protocols are allowed to require an authzid, as are specific server implementations.

GS2ヘッダーには、アクセスされているリソースに関連付けられているユーザー名「authzid」が含まれる場合があります。特定のサーバー実装と同様に、アプリケーションプロトコルはauthzidを要求することが許可されていることに注意してください。

The client response consisting of only a single kvsep is used only when authentication fails and is only valid in that context. If sent as the first message from the client, the server MAY simply fail the authentication without returning discovery information since there is no user or server name indication.

単一のkvsepのみで構成されるクライアント応答は、認証が失敗し、そのコンテキストでのみ有効な場合にのみ使用されます。クライアントからの最初のメッセージとして送信された場合、サーバーはユーザーまたはサーバー名の表示がないため、ディスカバリー情報を返さずに認証に失敗する場合があります。

The following keys and corresponding values are defined in the client response:

次のキーと対応する値がクライアント応答で定義されています。

auth (REQUIRED): The payload that would be in the HTTP Authorization header if this OAuth exchange was being carried out over HTTP.

auth(必須):このOAuth交換がHTTP経由で実行された場合にHTTP Authorizationヘッダーに含まれるペイロード。

host: Contains the hostname to which the client connected. In an HTTP context, this is the value of the HTTP Host header.

host:クライアントが接続したホスト名が含まれます。 HTTPコンテキストでは、これはHTTPホストヘッダーの値です。

port: Contains the destination port that the client connected to, represented as a decimal positive integer string without leading zeros.

port:クライアントが接続した宛先ポートが含まれ、先行ゼロなしの10進正整数ストリングとして表されます。

For OAuth token types such as OAuth 1.0a that use keyed message digests, the client MUST send host and port number key/values, and the server MUST fail an authorization request requiring keyed message digests that are not accompanied by host and port values. In OAuth 1.0a, for example, the so-called "signature base string calculation" includes the reconstructed HTTP URL.

キー付きメッセージダイジェストを使用するOAuth 1.0aなどのOAuthトークンタイプの場合、クライアントはホストとポート番号のキー/値を送信する必要があり、サーバーはホストとポートの値を伴わないキー付きメッセージダイジェストを必要とする認証リクエストに失敗する必要があります。たとえば、OAuth 1.0aでは、いわゆる「署名ベース文字列の計算」に、再構築されたHTTP URLが含まれます。

3.1.1. Reserved Key/Values
3.1.1. 予約済みのキー/値

In these mechanisms, values for path, query string and post body are assigned default values. OAuth authorization schemes MAY define usage of these in the SASL context and extend this specification. For OAuth Access Token Types that include a keyed message digest of the request, the default values MUST be used unless explicit values are provided in the client response. The following key values are reserved for future use:

これらのメカニズムでは、パス、クエリ文字列、投稿本文の値にデフォルト値が割り当てられます。 OAuth認可スキームは、SASLコンテキストでのこれらの使用法を定義し、この仕様を拡張する場合があります。リクエストのキー付きメッセージダイジェストを含むOAuthアクセストークンタイプの場合、クライアントの応答で明示的な値が提供されない限り、デフォルト値を使用する必要があります。次のキー値は、将来の使用のために予約されています。

mthd (RESERVED): HTTP method; the default value is "POST".

mthd(予約済み):HTTPメソッド。デフォルト値は「POST」です。

path (RESERVED): HTTP path data; the default value is "/".

パス(予約済み):HTTPパスデータ。デフォルト値は「/」です。

post (RESERVED): HTTP post data; the default value is the empty string ("").

post(予約済み):HTTP投稿データ。デフォルト値は空の文字列( "")です。

qs (RESERVED): The HTTP query string; the default value is the empty string ("").

qs(予約済み):HTTPクエリ文字列。デフォルト値は空の文字列( "")です。

3.2. Server's Response
3.2. サーバーの応答

The server validates the response according to the specification for the OAuth Access Token Types used. If the OAuth Access Token Type utilizes a keyed message digest of the request parameters, then the client must provide a client response that satisfies the data requirements for the scheme in use.

サーバーは、使用されるOAuthアクセストークンタイプの仕様に従って応答を検証します。 OAuthアクセストークンタイプがリクエストパラメータのキー付きメッセージダイジェストを利用する場合、クライアントは使用中のスキームのデータ要件を満たすクライアント応答を提供する必要があります。

The server fully validates the client response before generating a server response; this will necessarily include the validation steps listed in the specification for the OAuth Access Token Type used. However, additional validation steps may be needed, depending on the particular application protocol making use of SASL. In particular, values included as kvpairs in the client response (such as host and port) that correspond to values known to the application server by some other mechanism (such as an application protocol data unit or preconfigured values) MUST be validated to match between the initial client response and the other source(s) of such information. As a concrete example, when SASL is used over IMAP to an IMAP server for a single domain, the hostname can be available via configuration; this hostname must be validated to match the value sent in the 'host' kvpair.

サーバーは、サーバー応答を生成する前にクライアント応答を完全に検証します。これには、使用されるOAuthアクセストークンタイプの仕様に記載されている検証手順が必ず含まれます。ただし、SASLを使用する特定のアプリケーションプロトコルによっては、追加の検証手順が必要になる場合があります。特に、クライアント応答にkvpairとして含まれている値(ホストやポートなど)は、他のメカニズム(アプリケーションプロトコルデータユニットや事前構成された値など)によってアプリケーションサーバーに認識されている値に対応し、最初のクライアント応答およびそのような情報の他のソース。具体的な例として、SASLがIMAPを介して単一ドメインのIMAPサーバーに使用される場合、ホスト名は構成を介して利用できます。このホスト名は、「ホスト」kvpairで送信された値と一致するように検証する必要があります。

The server responds to a successfully verified client message by completing the SASL negotiation. The authenticated identity reported by the SASL mechanism is the identity securely established for the client with the OAuth credential. The application, not the SASL mechanism, based on local access policy determines whether the identity reported by the mechanism is allowed access to the requested resource. Note that the semantics of the authzid are specified by the SASL framework [RFC4422].

サーバーは、SASLネゴシエーションを完了することにより、正常に検証されたクライアントメッセージに応答します。 SASLメカニズムによって報告される認証済みのIDは、OAuth資格情報を使用してクライアントに対して安全に確立されたIDです。ローカルアクセスポリシーに基づくSASLメカニズムではなく、アプリケーションが、メカニズムによって報告されたIDが要求されたリソースへのアクセスを許可されるかどうかを決定します。 authzidのセマンティクスはSASLフレームワーク[RFC4422]によって指定されることに注意してください。

3.2.1. OAuth Identifiers in the SASL Context
3.2.1. SASLコンテキストのOAuth識別子

In the OAuth framework, the client may be authenticated by the authorization server, and the resource owner is authenticated to the authorization server. OAuth access tokens may contain information about the authentication of the resource owner and about the client and may therefore make this information accessible to the resource server.

OAuthフレームワークでは、クライアントは許可サーバーによって認証され、リソース所有者は許可サーバーに対して認証されます。 OAuthアクセストークンには、リソース所有者の認証とクライアントに関する情報が含まれている可能性があるため、リソースサーバーがこの情報にアクセスできるようにする場合があります。

If both identifiers are needed by an application the developer will need to provide a way to communicate that from the SASL mechanism back to the application.

アプリケーションで両方の識別子が必要な場合、開発者はそれをSASLメカニズムからアプリケーションに伝達する方法を提供する必要があります。

3.2.2. Server Response to Failed Authentication
3.2.2. 失敗した認証に対するサーバーの応答

For a failed authentication, the server returns an error result in JSON [RFC7159] format and fails the authentication. The error result consists of the following values:

認証が失敗した場合、サーバーはJSON [RFC7159]形式でエラー結果を返し、認証に失敗します。エラー結果は次の値で構成されています。

status (REQUIRED): The authorization error code. Valid error codes are defined in the IANA "OAuth Extensions Error Registry" as specified in the OAuth 2.0 core specification.

ステータス(必須):認証エラーコード。有効なエラーコードは、OAuth 2.0コア仕様で指定されているIANAの「OAuth拡張エラーレジストリ」で定義されています。

scope (OPTIONAL): An OAuth scope that is valid to access the service. This may be omitted, which implies that unscoped tokens are required. If a scope is specified, then a single scope is preferred. At the time this document was written, there are several implementations that do not properly support space-separated lists of scopes, so the use of a space-separated list of scopes is NOT RECOMMENDED.

スコープ(オプション):サービスへのアクセスに有効なOAuthスコープ。これは省略できます。これは、対象範囲外のトークンが必要であることを意味します。スコープが指定されている場合、単一のスコープが優先されます。このドキュメントが作成された時点では、スペースで区切られたスコープのリストを適切にサポートしていない実装がいくつかあるため、スペースで区切られたスコープのリストの使用は推奨されません。

openid-configuration (OPTIONAL): The URL for a document following the OpenID Provider Configuration Information schema as described in OIDCD [OpenID.Discovery], Section 3 that is appropriate for the user. As specified in OIDCD, this will have the "https" URL scheme. This document MUST have all OAuth-related data elements populated. The server MAY return different URLs for users in different domains, and the client SHOULD NOT cache a single returned value and assume it applies for all users/domains that the server supports. The returned discovery document SHOULD have all data elements required by the OpenID Connect Discovery specification populated. In addition, the discovery document SHOULD contain the 'registration_endpoint' element to identify the endpoint to be used with the Dynamic Client Registration protocol [RFC7591] to obtain the minimum number of parameters necessary for the OAuth protocol exchange to function. Another comparable discovery or client registration mechanism MAY be used if available.

openid-configuration(オプション):OIDCD [OpenID.Discovery]のセクション3で説明されている、ユーザーに適したOpenIDプロバイダー構成情報スキーマに従うドキュメントのURL。 OIDCDで指定されているように、これには「https」URLスキームがあります。このドキュメントには、OAuth関連のすべてのデータ要素が入力されている必要があります。サーバーは異なるドメインのユーザーに対して異なるURLを返す場合があり、クライアントは単一の戻り値をキャッシュしてはならず、サーバーがサポートするすべてのユーザー/ドメインに適用されると想定する必要があります(SHOULD NOT)。返されたディスカバリドキュメントには、OpenID Connect Discovery仕様で必要なすべてのデータ要素が入力されている必要があります(SHOULD)。さらに、ディスカバリドキュメントには、動的クライアント登録プロトコル[RFC7591]で使用されるエンドポイントを識別して、OAuthプロトコル交換が機能するために必要な最小数のパラメーターを取得するための 'registration_endpoint'要素を含める必要があります(SHOULD)。可能であれば、別の同等の検出またはクライアント登録メカニズムを使用できます。

The use of the 'offline_access' scope, as defined in [OpenID.Core], is RECOMMENDED to give clients the capability to explicitly request a refresh token.

[OpenID.Core]で定義されている 'offline_access'スコープの使用は、クライアントに更新トークンを明示的に要求する機能を提供するために推奨されます。

If the resource server provides a scope, then the client MUST always request scoped tokens from the token endpoint. If the resource server does not return a scope, the client SHOULD presume an unscoped token is required to access the resource.

リソースサーバーがスコープを提供する場合、クライアントは常にトークンエンドポイントからスコープトークンを要求する必要があります。リソースサーバーがスコープを返さない場合、クライアントはリソースにアクセスするためにスコープ外のトークンが必要であると想定する必要があります(SHOULD)。

Since clients may interact with a number of application servers, such as email servers and Extensible Messaging and Presence Protocol (XMPP) [RFC6120] servers, they need to have a way to determine whether dynamic client registration has been performed already and whether an already available refresh token can be reused to obtain an access token for the desired resource server. This specification RECOMMENDS that a client uses the information in the 'iss' element defined in OpenID Connect Core [OpenID.Core] to make this determination.

クライアントは、電子メールサーバーやExtensible Messaging and Presence Protocol(XMPP)[RFC6120]サーバーなど、多数のアプリケーションサーバーとやり取りする可能性があるため、動的クライアント登録がすでに実行されているかどうか、およびすでに利用可能かどうかを判断する方法が必要です。リフレッシュトークンを再利用して、目的のリソースサーバーのアクセストークンを取得できます。この仕様は、クライアントがOpenID Connect Core [OpenID.Core]で定義された「iss」要素の情報を使用してこの決定を行うことを推奨します。

3.2.3. Completing an Error Message Sequence
3.2.3. エラーメッセージシーケンスの完了

Section 3.6 of SASL [RFC4422] explicitly prohibits additional information in an unsuccessful authentication outcome. Therefore, the error message is sent in a normal message. The client MUST then send either an additional client response consisting of a single %x01 (control A) character to the server in order to allow the server to finish the exchange or a SASL abort message as generally defined in Section 3.5 of SASL [RFC4422]. A specific example of an abort message is the "BAD" response to an AUTHENTICATE in IMAP [RFC3501], Section 6.2.2.

SASL [RFC4422]のセクション3.6では、認証結果が失敗した場合の追加情報を明示的に禁止しています。したがって、エラーメッセージは通常のメッセージで送信されます。次に、クライアントは、サーバーが交換を完了できるようにするために、単一の%x01(コントロールA)文字で構成される追加のクライアント応答を送信するか、SASLのセクション3.5で一般的に定義されているSASL中止メッセージを送信する必要があります[RFC4422] 。中止メッセージの具体例は、IMAP [RFC3501]のセクション6.2.2のAUTHENTICATEに対する「BAD」応答です。

3.3. OAuth Access Token Types using Keyed Message Digests
3.3. キー付きメッセージダイジェストを使用したOAuthアクセストークンタイプ

OAuth Access Token Types may use keyed message digests, and the client and the resource server may need to perform a cryptographic computation for integrity protection and data origin authentication.

OAuthアクセストークンタイプはキー付きメッセージダイジェストを使用する場合があり、クライアントとリソースサーバーは、整合性保護とデータ送信元認証のために暗号計算を実行する必要がある場合があります。

OAuth is designed for access to resources identified by URIs. SASL is designed for user authentication and has no facility for more fine-grained access control. In this specification, we require or define default values for the data elements from an HTTP request that allows the signature base string to be constructed properly. The default HTTP path is "/", and the default post body is empty. These atoms are defined as extension points so that no changes are needed if there is a revision of SASL that supports more specific resource authorization, e.g., IMAP access to a specific folder or FTP access limited to a specific directory.

OAuthは、URIで識別されるリソースへのアクセス用に設計されています。 SASLはユーザー認証用に設計されており、よりきめ細かいアクセス制御を行う機能はありません。この仕様では、署名ベース文字列を適切に構築できるようにするHTTPリクエストからのデータ要素のデフォルト値を要求または定義します。デフォルトのHTTPパスは「/」で、デフォルトの投稿本文は空です。これらのアトムは拡張ポイントとして定義されるため、特定のフォルダーへのIMAPアクセスや特定のディレクトリに制限されたFTPアクセスなど、より具体的なリソース承認をサポートするSASLのリビジョンがある場合、変更は必要ありません。

Using the example in the OAuth 1.0a specification as a starting point, below is the authorization request in OAuth 1.0a style (with %x01 shown as ^A and line breaks added for readability), assuming it is on an IMAP server running on port 143:

開始点としてOAuth 1.0a仕様の例を使用すると、ポートで実行されているIMAPサーバー上にあると想定して、OAuth 1.0aスタイルの承認リクエスト(%x01は^ Aとして示され、改行が追加されています) 143:

   n,a=user@example.com,^A
   host=example.com^A
   port=143^A
   auth=OAuth realm="Example",
              oauth_consumer_key="9djdj82h48djs9d2",
              oauth_token="kkk9d7dh3k39sjv7",
              oauth_signature_method="HMAC-SHA1",
              oauth_timestamp="137131201",
              oauth_nonce="7d8f3e4a",
              oauth_signature="Tm90IGEgcmVhbCBzaWduYXR1cmU"^A^A
        

The signature base string would be constructed per the OAuth 1.0a specification [RFC5849] with the following things noted:

署名ベース文字列は、OAuth 1.0a仕様[RFC5849]に従って構成され、以下の点に注意してください。

o The method value is defaulted to POST.

o メソッド値のデフォルトはPOSTです。

o The scheme defaults to be "http", and any port number other than 80 is included.

o スキームはデフォルトで「http」になり、80以外のポート番号が含まれます。

o The path defaults to "/".

o パスのデフォルトは「/」です。

o The query string defaults to "".

o クエリ文字列のデフォルトは ""です。

In this example, the signature base string with line breaks added for readability would be:

この例では、読みやすくするために改行が追加された署名ベース文字列は次のようになります。

POST&http%3A%2F%2Fexample.com:143%2F&oauth_consumer_key%3D9djdj82h4 8djs9d2%26oauth_nonce%3D7d8f3e4a%26oauth_signature_method%3DHMAC-SH A1%26oauth_timestamp%3D137131201%26oauth_token%3Dkkk9d7dh3k39sjv7

POST&http%3A%2F%2Fexample.com:143%2F&oauth_consumer_key%3D9djdj82h4 8djs9d2%26oauth_nonce%3D7d8f3e4a%26oauth_signature_method%3DHMAC-SH A1%26oauth_timestamp%3D137k39dh3dauthk3dh3auth3dauthk3dh3dauthk3dh3dauthk3dh3dauthk3dauthk3dh3dauthk3dauthk3dh3dauth3d3dauth3d7d3k3dauthk3d3dauth3d7d3k9d3d7d9k9d9

4. Examples
4. 例

These examples illustrate exchanges between IMAP and SMTP clients and servers. All IMAP examples use SASL-IR [RFC4959] and send payload in the initial client response. The bearer token examples assume encrypted transport; if the underlying connection is not already TLS, then STARTTLS MUST be used as TLS is required in the bearer token specification.

これらの例は、IMAPとSMTPクライアントおよびサーバー間の交換を示しています。すべてのIMAPの例はSASL-IR [RFC4959]を使用し、初期クライアント応答でペイロードを送信します。ベアラートークンの例では、暗号化されたトランスポートを想定しています。基になる接続がまだTLSでない場合は、ベアラートークンの仕様でTLSが必要であるため、STARTTLSを使用する必要があります。

Note to implementers: The SASL OAuth method names are case insensitive. One example uses "Bearer" but that could as easily be "bearer", "BEARER", or "BeArEr".

実装者への注意:SASL OAuthメソッド名は大文字と小文字を区別しません。 1つの例では「Bearer」を使用していますが、「bearer」、「BEARER」、または「BeArEr」のように簡単にできます。

4.1. Successful Bearer Token Exchange
4.1. 成功したベアラートークン交換

This example shows a successful OAuth 2.0 bearer token exchange in IMAP. Note that line breaks are inserted for readability.

この例は、IMAPで成功したOAuth 2.0ベアラートークン交換を示しています。読みやすくするために改行が挿入されていることに注意してください。

   [Initial connection and TLS establishment...]
   S: * OK IMAP4rev1 Server Ready
   C: t0 CAPABILITY
   S: * CAPABILITY IMAP4rev1 AUTH=OAUTHBEARER SASL-IR
   S: t0 OK Completed
   C: t1 AUTHENTICATE OAUTHBEARER bixhPXVzZXJAZXhhbXBsZS5jb20sAWhv
         c3Q9c2VydmVyLmV4YW1wbGUuY29tAXBvcnQ9MTQzAWF1dGg9QmVhcmVyI
         HZGOWRmdDRxbVRjMk52YjNSbGNrQmhiSFJoZG1semRHRXVZMjl0Q2c9PQ
         EB
   S: t1 OK SASL authentication succeeded
        

As required by IMAP [RFC3501], the payloads are base64 encoded. The decoded initial client response (with %x01 represented as ^A and long lines wrapped for readability) is:

IMAP [RFC3501]で要求されるように、ペイロードはbase64でエンコードされています。デコードされた初期クライアント応答(%x01は^ Aとして表され、長い行は読みやすくするために折り返されています):

n,a=user@example.com,^Ahost=server.example.com^Aport=143^A auth=Bearer vF9dft4qmTc2Nvb3RlckBhbHRhdmlzdGEuY29tCg==^A^A The same credential used in an SMTP exchange is shown below. Again, this example assumes that TLS is already established per the bearer token specification requirements.

n、a = user @ example.com、^ Ahost = server.example.com ^ Aport = 143 ^ A auth = Bearer vF9dft4qmTc2Nvb3RlckBhbHRhdmlzdGEuY29tCg == ^ A ^ A SMTP交換で使用される同じ資格情報を以下に示します。ここでも、この例では、ベアラトークンの仕様要件に従ってTLSがすでに確立されていると想定しています。

   [connection begins]
   S: 220 mx.example.com ESMTP 12sm2095603fks.9
   C: EHLO sender.example.com
   S: 250-mx.example.com at your service,[172.31.135.47]
   S: 250-SIZE 35651584
   S: 250-8BITMIME
   S: 250-AUTH LOGIN PLAIN OAUTHBEARER
   S: 250-ENHANCEDSTATUSCODES
   S: 250-STARTTLS
   S: 250 PIPELINING
   [Negotiate TLS...]
   C: t1 AUTH OAUTHBEARER bixhPXVzZXJAZXhhbXBsZS5jb20sAWhvc3Q9c2Vy
         dmVyLmV4YW1wbGUuY29tAXBvcnQ9NTg3AWF1dGg9QmVhcmVyIHZGOWRmd
         DRxbVRjMk52YjNSbGNrQmhiSFJoZG1semRHRXVZMjl0Q2c9PQEB
   S: 235 Authentication successful.
   [connection continues...]
        

The decoded initial client response is:

デコードされた初期クライアント応答は次のとおりです。

   n,a=user@example.com,^Ahost=server.example.com^Aport=587^A
   auth=Bearer vF9dft4qmTc2Nvb3RlckBhbHRhdmlzdGEuY29tCg==^A^A
        
4.2. Successful OAuth 1.0a Token Exchange
4.2. 成功したOAuth 1.0aトークン交換

This IMAP example shows a successful OAuth 1.0a token exchange. Note that line breaks are inserted for readability. This example assumes that TLS is already established. Signature computation is discussed in Section 3.3.

このIMAPの例は、成功したOAuth 1.0aトークン交換を示しています。読みやすくするために改行が挿入されていることに注意してください。この例では、TLSがすでに確立されていると想定しています。署名の計算については、セクション3.3で説明します。

   S: * OK IMAP4rev1 Server Ready
   C: t0 CAPABILITY
   S: * CAPABILITY IMAP4rev1 AUTH=OAUTHBEARER AUTH=OAUTH10A SASL-IR
   S: t0 OK Completed
   C: t1 AUTHENTICATE OAUTH10A bixhPXVzZXJAZXhhbXBsZS5jb20sAWhvc3Q9ZXhhb
         XBsZS5jb20BcG9ydD0xNDMBYXV0aD1PQXV0aCByZWFsbT0iRXhhbXBsZSIsb2F1
         dGhfY29uc3VtZXJfa2V5PSI5ZGpkajgyaDQ4ZGpzOWQyIixvYXV0aF90b2tlbj0
         ia2trOWQ3ZGgzazM5c2p2NyIsb2F1dGhfc2lnbmF0dXJlX21ldGhvZD0iSE1BQy
         1TSEExIixvYXV0aF90aW1lc3RhbXA9IjEzNzEzMTIwMSIsb2F1dGhfbm9uY2U9I
         jdkOGYzZTRhIixvYXV0aF9zaWduYXR1cmU9IlRtOTBJR0VnY21WaGJDQnphV2R1
         WVhSMWNtVSUzRCIBAQ==
   S: t1 OK SASL authentication succeeded
   As required by IMAP [RFC3501], the payloads are base64 encoded.  The
   decoded initial client response (with %x01 represented as ^A and
   lines wrapped for readability) is:
        
   n,a=user@example.com,^A
   host=example.com^A
   port=143^A
   auth=OAuth realm="Example",
              oauth_consumer_key="9djdj82h48djs9d2",
              oauth_token="kkk9d7dh3k39sjv7",
              oauth_signature_method="HMAC-SHA1",
              oauth_timestamp="137131201",
              oauth_nonce="7d8f3e4a",
              oauth_signature="SSdtIGEgbGl0dGxlIHRlYSBwb3Qu"^A^A
        
4.3. Failed Exchange
4.3. 失敗した交換

This IMAP example shows a failed exchange because of the empty Authorization header, which is how a client can query for the needed scope. Note that line breaks are inserted for readability.

このIMAPの例は、空のAuthorizationヘッダーのために失敗した交換を示しています。これは、クライアントが必要なスコープを照会できる方法です。読みやすくするために改行が挿入されていることに注意してください。

   S: * OK IMAP4rev1 Server Ready
   C: t0 CAPABILITY
   S: * CAPABILITY IMAP4rev1 AUTH=OAUTHBEARER SASL-IR
   S: t0 OK Completed
   C: t1 AUTHENTICATE OAUTHBEARER bixhPXVzZXJAZXhhbXBsZS5jb20sAW
         hvc3Q9c2VydmVyLmV4YW1wbGUuY29tAXBvcnQ9MTQzAWF1dGg9AQE=
   S: + eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxl
        X3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4
        YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9u
        In0=
   C: AQ==
   S: t1 NO SASL authentication failed
        

The decoded initial client response is:

デコードされた初期クライアント応答は次のとおりです。

   n,a=user@example.com,^Ahost=server.example.com^A
   port=143^Aauth=^A^A
        

The decoded server error response is:

デコードされたサーバーエラー応答は次のとおりです。

  {
  "status":"invalid_token",
  "scope":"example_scope",
  "openid-configuration":"https://example.com/.well-known/openid-config"
  }
        

The client responds with the required dummy response; "AQ==" is the base64 encoding of the ASCII value 0x01. The same exchange using the IMAP-specific method of canceling an AUTHENTICATE command sends "*" and is shown below.

クライアントは必要なダミー応答で応答します。 「AQ ==」は、ASCII値0x01のbase64エンコーディングです。 AUTHENTICATEコマンドをキャンセルするIMAP固有の方法を使用した同じ交換は、「*」を送信し、以下に示します。

   S: * OK IMAP4rev1 Server Ready
   C: t0 CAPABILITY
   S: * CAPABILITY IMAP4rev1 AUTH=OAUTHBEARER SASL-IR IMAP4rev1
   S: t0 OK Completed
   C: t1 AUTHENTICATE OAUTHBEARER bixhPXVzZXJAZXhhbXBsZS5jb20sAW
        hvc3Q9c2VydmVyLmV4YW1wbGUuY29tAXBvcnQ9MTQzAWF1dGg9AQE=
   S: + eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxl
        X3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4
        YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9u
        In0=
   C: *
   S: t1 NO SASL authentication failed
        
4.4. SMTP Example of a Failed Negotiation
4.4. 失敗したネゴシエーションのSMTPの例

This example shows an authorization failure in an SMTP exchange. TLS negotiation is not shown, but as noted above, it is required for the use of bearer tokens.

この例は、SMTP交換での認証の失敗を示しています。 TLSネゴシエーションは示されていませんが、上記のように、ベアラートークンの使用には必要です。

[connection begins]
S: 220 mx.example.com ESMTP 12sm2095603fks.9
C: EHLO sender.example.com
S: 250-mx.example.com at your service,[172.31.135.47]
S: 250-SIZE 35651584
S: 250-8BITMIME
S: 250-AUTH LOGIN PLAIN OAUTHBEARER
S: 250-ENHANCEDSTATUSCODES
S: 250 PIPELINING
[Negotiate TLS...]
C: AUTH OAUTHBEARER bix1c2VyPXNvbWV1c2VyQGV4YW1wbGUuY29tLAFhdXRoPUJlYXJl
       ciB2RjlkZnQ0cW1UYzJOdmIzUmxja0JoZEhSaGRtbHpkR0V1WTI5dENnPT0BAQ==
S: 334 eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NoZW1lcyI6ImJlYXJlciBtYWMiL
       CJzY29wZSI6Imh0dHBzOi8vbWFpbC5leGFtcGxlLmNvbS8ifQ==
C: AQ==
S: 535-5.7.1 Username and Password not accepted. Learn more at
S: 535 5.7.1 http://support.example.com/mail/oauth
[connection continues...]
        

The initial client response is:

最初のクライアント応答は次のとおりです。

n,user=someuser@example.com,^A auth=Bearer vF9dft4qmTc2Nvb3RlckBhdHRhdmlzdGEuY29tCg==^A^A The server returned an error message in the 334 SASL message; the client responds with the required dummy response, and the server finalizes the negotiation.

n、user = someuser @ example.com、^ A auth = Bearer vF9dft4qmTc2Nvb3RlckBhdHRhdmlzdGEuY29tCg == ^ A ^ Aサーバーが334 SASLメッセージでエラーメッセージを返しました。クライアントは必要なダミー応答で応答し、サーバーはネゴシエーションを完了します。

   {
       "status":"invalid_token",
       "schemes":"bearer mac",
       "scope":"https://mail.example.com/"
   }
        
5. Security Considerations
5. セキュリティに関する考慮事項

OAuth 1.0a and OAuth 2.0 allow for a variety of deployment scenarios, and the security properties of these profiles vary. As shown in Figure 1, this specification is aimed to be integrated into a larger OAuth deployment. Application developers therefore need to understand their security requirements based on a threat assessment before selecting a specific SASL OAuth mechanism. For OAuth 2.0, a detailed security document [RFC6819] provides guidance to select those OAuth 2.0 components that help to mitigate threats for a given deployment. For OAuth 1.0a, Section 4 of [RFC5849] provides guidance specific to OAuth 1.0a.

OAuth 1.0aおよびOAuth 2.0では、さまざまな展開シナリオが可能で、これらのプロファイルのセキュリティプロパティはさまざまです。図1に示すように、この仕様は、より大規模なOAuthデプロイメントに統合することを目的としています。したがって、アプリケーション開発者は、特定のSASL OAuthメカニズムを選択する前に、脅威評価に基づいてセキュリティ要件を理解する必要があります。 OAuth 2.0の場合、詳細なセキュリティドキュメント[RFC6819]は、特定のデプロイメントの脅威を軽減するのに役立つOAuth 2.0コンポーネントを選択するためのガイダンスを提供します。 OAuth 1.0aの場合、[RFC5849]のセクション4に、OAuth 1.0aに固有のガイダンスが記載されています。

This document specifies two SASL Mechanisms for OAuth and each comes with different security properties.

このドキュメントでは、OAuthの2つのSASLメカニズムを指定し、それぞれに異なるセキュリティプロパティが付属しています。

OAUTHBEARER: This mechanism borrows from OAuth 2.0 bearer tokens [RFC6750]. It relies on the application using TLS to protect the OAuth 2.0 bearer token exchange; without TLS usage at the application layer, this method is completely insecure. Consequently, TLS MUST be provided by the application when choosing this authentication mechanism.

OAUTHBEARER:このメカニズムは、OAuth 2.0ベアラートークン[RFC6750]から借用したものです。 TLSを使用するアプリケーションに依存してOAuth 2.0ベアラートークン交換を保護します。アプリケーション層でTLSを使用しない場合、この方法は完全に安全ではありません。したがって、この認証メカニズムを選択するときは、TLSをアプリケーションで提供する必要があります。

OAUTH10A: This mechanism reuses OAuth 1.0a MAC tokens (using the HMAC-SHA1 keyed message digest), as described in Section 3.4.2 of [RFC5849]. To compute the keyed message digest in the same way as in RFC 5839, this specification conveys additional parameters between the client and the server. This SASL mechanism only supports client authentication. If server-side authentication is desirable, then it must be provided by the application underneath the SASL layer. The use of TLS is strongly RECOMMENDED.

OAUTH10A:このメカニズムは、[RFC5849]のセクション3.4.2で説明されているように、(HMAC-SHA1キー付きメッセージダイジェストを使用して)OAuth 1.0a MACトークンを再利用します。 RFC 5839と同じ方法でキー付きメッセージダイジェストを計算するために、この仕様はクライアントとサーバー間で追加のパラメーターを伝達します。このSASLメカニズムは、クライアント認証のみをサポートします。サーバー側の認証が必要な場合は、SASLレイヤーの下のアプリケーションによって提供される必要があります。 TLSの使用は強く推奨されます。

Additionally, the following aspects are worth pointing out:

さらに、次の点に注意する価値があります。

An access token is not equivalent to the user's long term password.

アクセストークンは、ユーザーの長期パスワードとは異なります。

Care has to be taken when these OAuth credentials are used for actions like changing passwords (as it is possible with some protocols, e.g., XMPP [RFC6120]). The resource server should ensure that actions taken in the authenticated channel are appropriate to the strength of the presented credential.

これらのOAuth資格情報がパスワードの変更などのアクションに使用される場合は注意が必要です(XMPP [RFC6120]などの一部のプロトコルでは可能です)。リソースサーバーは、認証されたチャネルで実行されるアクションが、提示された資格情報の強度に適切であることを確認する必要があります。

Lifetime of the application sessions.

アプリケーションセッションの存続期間。

It is possible that SASL will be used to authenticate a connection, and the life of that connection may outlast the life of the access token used to establish it. This is a common problem in application protocols where connections are long lived and not a problem with this mechanism, per se. Resource servers may unilaterally disconnect clients in accordance with the application protocol.

SASLが接続の認証に使用される可能性があり、その接続の存続期間は、接続の確立に使用されたアクセストークンの存続期間よりも長く続く場合があります。これは、接続が長持ちするアプリケーションプロトコルでは一般的な問題であり、このメカニズム自体の問題ではありません。リソースサーバーは、アプリケーションプロトコルに従ってクライアントを一方的に切断する場合があります。

Access tokens have a lifetime.

アクセストークンには有効期間があります。

Reducing the lifetime of an access token provides security benefits, and OAuth 2.0 introduces refresh tokens to obtain new access tokens on the fly without any need for human interaction. Additionally, a previously obtained access token might be revoked or rendered invalid at any time. The client MAY request a new access token for each connection to a resource server, but it SHOULD cache and reuse valid credentials.

アクセストークンの有効期間を短くすると、セキュリティ上の利点が得られます。OAuth2.0には更新トークンが導入されており、人の介入を必要とせずに新しいアクセストークンを即座に取得できます。さらに、以前に取得したアクセストークンはいつでも取り消されるか、無効になる可能性があります。クライアントは、リソースサーバーへの接続ごとに新しいアクセストークンを要求できますが、有効な資格情報をキャッシュして再利用する必要があります(SHOULD)。

6. Internationalization Considerations
6. 国際化に関する考慮事項

The identifier asserted by the OAuth authorization server about the resource owner inside the access token may be displayed to a human. For example, when SASL is used in the context of IMAP, the client may assert the resource owner's email address to the IMAP server for usage in an email-based application. The identifier may therefore contain internationalized characters, and an application needs to ensure that the mapping between the identifier provided by OAuth is suitable for use with the application-layer protocol SASL is incorporated into. An example of a SASL-compatible container is the JSON Web Token (JWT) [RFC7519], which provides a standardized format for exchanging authorization and identity information that supports internationalized characters.

アクセストークン内のリソース所有者についてOAuth承認サーバーによってアサートされた識別子は、人間に表示される場合があります。たとえば、SASLがIMAPのコンテキストで使用されている場合、クライアントは、電子メールベースのアプリケーションで使用するために、リソース所有者の電子メールアドレスをIMAPサーバーにアサートできます。したがって、識別子には国際化された文字が含まれる可能性があり、アプリケーションは、OAuthによって提供される識別子間のマッピングが、SASLが組み込まれているアプリケーション層プロトコルでの使用に適していることを確認する必要があります。 SASL互換のコンテナの例は、JSON Web Token(JWT)[RFC7519]です。これは、国際化された文字をサポートする認証および識別情報を交換するための標準化された形式を提供します。

7. IANA Considerations
7. IANAに関する考慮事項
7.1. SASL Registration
7.1. SASL登録

The IANA has registered the following entry in the SASL Mechanisms registry:

IANAは、SASLメカニズムのレジストリに次のエントリを登録しました。

SASL mechanism name: OAUTHBEARER

SASLメカニズム名:OAUTHBEARER

Security Considerations: See this document

セキュリティに関する考慮事項:このドキュメントを参照してください

Published Specification: See this document

公開された仕様:このドキュメントを参照

For further information: Contact the authors of this document.

詳細については、このドキュメントの作成者にお問い合わせください。

Intended usage: COMMON

使用目的:COMMON

Owner/Change controller: the IESG

所有者/変更コントローラー:IESG

Note: None

注:なし

The IANA has registered the following entry in the SASL Mechanisms registry:

IANAは、SASLメカニズムのレジストリに次のエントリを登録しました。

SASL mechanism name: OAUTH10A

SASLメカニズム名:OAUTH10A

Security Considerations: See this document

セキュリティに関する考慮事項:このドキュメントを参照してください

Published Specification: See this document

公開された仕様:このドキュメントを参照

For further information: Contact the authors of this document.

詳細については、このドキュメントの作成者にお問い合わせください。

Intended usage: COMMON

使用目的:COMMON

Owner/Change controller: the IESG

所有者/変更コントローラー:IESG

Note: None

注:なし

8. References
8. 参考文献
8.1. Normative References
8.1. 引用文献

[OpenID.Core] Sakimura, N., Bradley, J., Jones, M., de Medeiros, B., and C. Mortimore, "OpenID Connect Core 1.0", November 2014, <http://openid.net/specs/openid-connect-core-1_0.html>.

[OpenID.Core] Sakimura N.、Bradley、J.、Jones、M.、de Medeiros、B。、およびC. Mortimore、「OpenID Connect Core 1.0」、2014年11月、<http://openid.net/ specs / openid-connect-core-1_0.html>。

[OpenID.Discovery] Sakimura, N., Bradley, J., Jones, M., and E. Jay, "OpenID Connect Discovery 1.0", November 2014, <http://openid.net/specs/ openid-connect-discovery-1_0.html>.

[OpenID.Discovery] Sakimura N.、Bradley、J.、Jones、M。、およびE. Jay、「OpenID Connect Discovery 1.0」、2014年11月、<http://openid.net/specs/ openid-connect- discovery-1_0.html>。

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、DOI 10.17487 / RFC2119、1997年3月、<http://www.rfc-editor.org/info/ rfc2119>。

[RFC4422] Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple Authentication and Security Layer (SASL)", RFC 4422, DOI 10.17487/RFC4422, June 2006, <http://www.rfc-editor.org/info/rfc4422>.

[RFC4422]メルニコフ、A。、エド。 K. Zeilenga編、「Simple Authentication and Security Layer(SASL)」、RFC 4422、DOI 10.17487 / RFC4422、2006年6月、<http://www.rfc-editor.org/info/rfc4422>。

[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, <http://www.rfc-editor.org/info/rfc4648>.

[RFC4648] Josefsson、S。、「The Base16、Base32、およびBase64データエンコーディング」、RFC 4648、DOI 10.17487 / RFC4648、2006年10月、<http://www.rfc-editor.org/info/rfc4648>。

[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, DOI 10.17487/RFC5234, January 2008, <http://www.rfc-editor.org/info/rfc5234>.

[RFC5234]クロッカー、D。、エド。およびP. Overell、「構文仕様の拡張BNF:ABNF」、STD 68、RFC 5234、DOI 10.17487 / RFC5234、2008年1月、<http://www.rfc-editor.org/info/rfc5234>。

[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC5246, August 2008, <http://www.rfc-editor.org/info/rfc5246>.

[RFC5246] Dierks、T。およびE. Rescorla、「The Transport Layer Security(TLS)Protocol Version 1.2」、RFC 5246、DOI 10.17487 / RFC5246、2008年8月、<http://www.rfc-editor.org/info / rfc5246>。

[RFC5801] Josefsson, S. and N. Williams, "Using Generic Security Service Application Program Interface (GSS-API) Mechanisms in Simple Authentication and Security Layer (SASL): The GS2 Mechanism Family", RFC 5801, DOI 10.17487/RFC5801, July 2010, <http://www.rfc-editor.org/info/rfc5801>.

[RFC5801] Josefsson、S。およびN. Williams、「Simple Authentication and Security Layer(SASL):Generic Security Service Application Program Interface(GSS-API)Mechanisms in Simple Authentication and Security Layer(SASL):The GS2 Mechanism Family」、RFC 5801、DOI 10.17487 / RFC5801 2010年7月、<http://www.rfc-editor.org/info/rfc5801>。

[RFC5849] Hammer-Lahav, E., Ed., "The OAuth 1.0 Protocol", RFC 5849, DOI 10.17487/RFC5849, April 2010, <http://www.rfc-editor.org/info/rfc5849>.

[RFC5849] Hammer-Lahav、E.、Ed。、 "The OAuth 1.0 Protocol"、RFC 5849、DOI 10.17487 / RFC5849、April 2010、<http://www.rfc-editor.org/info/rfc5849>。

[RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", RFC 6749, DOI 10.17487/RFC6749, October 2012, <http://www.rfc-editor.org/info/rfc6749>.

[RFC6749] Hardt、D。、編、「The OAuth 2.0 Authorization Framework」、RFC 6749、DOI 10.17487 / RFC6749、2012年10月、<http://www.rfc-editor.org/info/rfc6749>。

[RFC6750] Jones, M. and D. Hardt, "The OAuth 2.0 Authorization Framework: Bearer Token Usage", RFC 6750, DOI 10.17487/RFC6750, October 2012, <http://www.rfc-editor.org/info/rfc6750>.

[RFC6750]ジョーンズ、M。およびD.ハート、「OAuth 2.0 Authorization Framework:Bearer Token Usage」、RFC 6750、DOI 10.17487 / RFC6750、2012年10月、<http://www.rfc-editor.org/info/ rfc6750>。

[RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March 2014, <http://www.rfc-editor.org/info/rfc7159>.

[RFC7159]ブレイ、T。、編、「JavaScriptオブジェクト表記(JSON)データ交換フォーマット」、RFC 7159、DOI 10.17487 / RFC7159、2014年3月、<http://www.rfc-editor.org/info/ rfc7159>。

[RFC7591] Richer, J., Ed., Jones, M., Bradley, J., Machulak, M., and P. Hunt, "OAuth 2.0 Dynamic Client Registration Protocol", RFC 7591, DOI 10.17487/RFC7591, July 2015, <http://www.rfc-editor.org/info/rfc7591>.

[RFC7591] Richer、J.、Ed。、Jones、M.、Bradley、J.、Machulak、M。、およびP. Hunt、「OAuth 2.0 Dynamic Client Registration Protocol」、RFC 7591、DOI 10.17487 / RFC7591、2015年7月、<http://www.rfc-editor.org/info/rfc7591>。

8.2. Informative References
8.2. 参考引用

[RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, <http://www.rfc-editor.org/info/rfc3501>.

[RFC3501] Crispin、M。、「インターネットメッセージアクセスプロトコル-バージョン4rev1」、RFC 3501、DOI 10.17487 / RFC3501、2003年3月、<http://www.rfc-editor.org/info/rfc3501>。

[RFC4959] Siemborski, R. and A. Gulbrandsen, "IMAP Extension for Simple Authentication and Security Layer (SASL) Initial Client Response", RFC 4959, DOI 10.17487/RFC4959, September 2007, <http://www.rfc-editor.org/info/rfc4959>.

[RFC4959] Siemborski、R。およびA. Gulbrandsen、「IMAP Extension for Simple Authentication and Security Layer(SASL)Initial Client Response」、RFC 4959、DOI 10.17487 / RFC4959、2007年9月、<http://www.rfc-editor .org / info / rfc4959>。

[RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, DOI 10.17487/RFC5321, October 2008, <http://www.rfc-editor.org/info/rfc5321>.

[RFC5321] Klensin、J。、「Simple Mail Transfer Protocol」、RFC 5321、DOI 10.17487 / RFC5321、2008年10月、<http://www.rfc-editor.org/info/rfc5321>。

[RFC6120] Saint-Andre, P., "Extensible Messaging and Presence Protocol (XMPP): Core", RFC 6120, DOI 10.17487/RFC6120, March 2011, <http://www.rfc-editor.org/info/rfc6120>.

[RFC6120] Saint-Andre、P。、「Extensible Messaging and Presence Protocol(XMPP):Core」、RFC 6120、DOI 10.17487 / RFC6120、2011年3月、<http://www.rfc-editor.org/info/rfc6120 >。

[RFC6819] Lodderstedt, T., Ed., McGloin, M., and P. Hunt, "OAuth 2.0 Threat Model and Security Considerations", RFC 6819, DOI 10.17487/RFC6819, January 2013, <http://www.rfc-editor.org/info/rfc6819>.

[RFC6819] Lodderstedt、T.、Ed。、McGloin、M。、およびP. Hunt、「OAuth 2.0脅威モデルとセキュリティの考慮事項」、RFC 6819、DOI 10.17487 / RFC6819、2013年1月、<http://www.rfc -editor.org/info/rfc6819>。

[RFC7033] Jones, P., Salgueiro, G., Jones, M., and J. Smarr, "WebFinger", RFC 7033, DOI 10.17487/RFC7033, September 2013, <http://www.rfc-editor.org/info/rfc7033>.

[RFC7033]ジョーンズ、P。、サルゲイロ、G。、ジョーンズ、M。、およびJ.スマール、「WebFinger」、RFC 7033、DOI 10.17487 / RFC7033、2013年9月、<http://www.rfc-editor.org / info / rfc7033>。

[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing", RFC 7230, DOI 10.17487/RFC7230, June 2014, <http://www.rfc-editor.org/info/rfc7230>.

[RFC7230]フィールディング、R。、エド。およびJ. Reschke編、「Hypertext Transfer Protocol(HTTP / 1.1):Message Syntax and Routing」、RFC 7230、DOI 10.17487 / RFC7230、2014年6月、<http://www.rfc-editor.org/info/ rfc7230>。

[RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, <http://www.rfc-editor.org/info/rfc7519>.

[RFC7519]ジョーンズ、M。、ブラッドリー、J.、N。崎村、「JSON Web Token(JWT)」、RFC 7519、DOI 10.17487 / RFC7519、2015年5月、<http://www.rfc-editor.org / info / rfc7519>。

Acknowledgements

謝辞

The authors would like to thank the members of the KITTEN working group and in addition and specifically: Simon Josefson, Torsten Lodderstadt, Ryan Troll, Alexey Melnikov, Jeffrey Hutzelman, Nico Williams, Matt Miller, and Benjamin Kaduk.

著者はKITTENワーキンググループのメンバー、さらに具体的には以下のことに感謝します。SimonJosefson、Torsten Lodderstadt、Ryan Troll、Alexey Melnikov、Jeffrey Hutzelman、Nico Williams、Matt Miller、Benjamin Kaduk。

This document was produced under the chairmanship of Alexey Melnikov, Tom Yu, Shawn Emery, Josh Howlett, Sam Hartman, Matthew Miller, and Benjamin Kaduk. The supervising Area Director was Stephen Farrell.

このドキュメントは、Alexey Melnikov、Tom Yu、Shawn Emery、Josh Howlett、Sam Hartman、Matthew Miller、およびBenjamin Kadukの議長の下で作成されました。監督エリアディレクターはスティーブンファレルでした。

Authors' Addresses

著者のアドレス

William Mills Microsoft

ウィリアムミルズマイクロソフト

   Email: wmills_92105@yahoo.com
        

Tim Showalter

ティム・ショーワルター

   Email: tjs@psaux.com
        

Hannes Tschofenig ARM Ltd. 110 Fulbourn Rd Cambridge CB1 9NJ United Kingdom

Hannes Tschofenig ARM Ltd. 110 Fulbourn Rd Cambridge CB1 9NJイギリス

   Email: Hannes.tschofenig@gmx.net
   URI:   http://www.tschofenig.priv.at