Proof Key for Code Exchange by OAuth Public Clients
draft-ietf-oauth-spop-15
Revision differences
Document history
Date | Rev. | By | Action |
---|---|---|---|
2015-09-15
|
15 | (System) | RFC Editor state changed to AUTH48-DONE from AUTH48 |
2015-08-24
|
15 | (System) | RFC Editor state changed to AUTH48 from RFC-EDITOR |
2015-08-12
|
15 | (System) | RFC Editor state changed to RFC-EDITOR from EDIT |
2015-07-23
|
15 | (System) | IANA Action state changed to RFC-Ed-Ack from Waiting on RFC Editor |
2015-07-21
|
15 | (System) | IANA Action state changed to Waiting on RFC Editor from Waiting on Authors |
2015-07-21
|
15 | (System) | IANA Action state changed to Waiting on Authors from In Progress |
2015-07-15
|
15 | (System) | IANA Action state changed to In Progress |
2015-07-13
|
15 | Cindy Morgan | IESG state changed to RFC Ed Queue from Approved-announcement sent |
2015-07-13
|
15 | (System) | RFC Editor state changed to EDIT |
2015-07-13
|
15 | (System) | Announcement was received by RFC Editor |
2015-07-10
|
15 | Amy Vezza | IESG state changed to Approved-announcement sent from Approved-announcement to be sent |
2015-07-10
|
15 | Amy Vezza | IESG has approved the document |
2015-07-10
|
15 | Amy Vezza | Closed "Approve" ballot |
2015-07-10
|
15 | Amy Vezza | Ballot approval text was generated |
2015-07-10
|
15 | Amy Vezza | IESG state changed to Approved-announcement to be sent from IESG Evaluation::AD Followup |
2015-07-10
|
15 | Cindy Morgan | New revision available |
2015-07-06
|
14 | Barry Leiba | [Ballot comment] Version -14 resolves my DISCUSS (and also some of my non-blocking comments). Thanks very much for considering these and working with me on … [Ballot comment] Version -14 resolves my DISCUSS (and also some of my non-blocking comments). Thanks very much for considering these and working with me on them! ========================================= My comment about the IANA Considerations remains. While it's non-blocking, I still hope you will accept the change I suggest: -- Section 6.2 -- I have the same comment here as in the other OAuth document: please shift the focus away from telling IANA how to handle tracking of the expert review, and make the mailing list something that the designated expert(s) keep track of. Also, please give more instructions to the DEs about what they should consider when they're evaluating a request (for example, should they approve all requests, or are there criteria they should apply?). For the first, here's a text change that I suggest we move toward for this sort of thing: OLD NEW Additional code_challenge_method types for use with the authorization endpoint are registered using the Specification Required policy [RFC5226], which includes review of the request by one or more Designated Experts. The DEs will ensure there is at least a two-week review of the request on the oauth-ext-review@ietf.org mailing list, and that any discussion on that list converges before they respond to the request. To allow for the allocation of values prior to publication, the Designated Expert(s) may approve registration once they are satisfied that an acceptable specification will be published. Discussion on the oauth-ext-review@ietf.org mailing list should use an appropriate subject, such as "Request for PKCE code_challenge_method: example"). The Designated Expert(s) should consider the discussion on the mailing list, as well as <> when evaluating registration requests. Denials should include an explanation and, if applicable, suggestions as to how to make the request successful. END ========================================= -- Section 7.2 -- I find the first first paragraph confusingly worded, and after discussion with the author I suggest this: NEW Clients MUST NOT downgrade to "plain" after trying the S256 method. Because servers are required to support S256, an error when S256 is presented can only mean that the server does not support PKCE at all. Otherwise, such an error could be indicative of a MITM attacker trying a downgrade attack. END ========================================= Finally, there is this comment, which is not a big deal and you should proceed as you think best: -- Section 2 -- There is no real distinction between STRING and ASCII(STRING), because STRING is already defined to be ASCII. Using "ASCII(xxx)" only adds clutter, and a suggest removing it. So, for example, that would result in changes such as this: OLD BASE64URL-ENCODE(SHA256(ASCII(code_verifier))) == code_challenge NEW BASE64URL-ENCODE(SHA256(code_verifier)) == code_challenge END |
2015-07-06
|
14 | Barry Leiba | [Ballot Position Update] Position for Barry Leiba has been changed to No Objection from Discuss |
2015-07-06
|
14 | Nat Sakimura | New version available: draft-ietf-oauth-spop-14.txt |
2015-07-05
|
13 | (System) | Sub state has been changed to AD Followup from Revised ID Needed |
2015-07-05
|
13 | John Bradley | IANA Review state changed to Version Changed - Review Needed from IANA - Not OK |
2015-07-05
|
13 | John Bradley | New version available: draft-ietf-oauth-spop-13.txt |
2015-06-23
|
12 | (System) | IANA Review state changed to IANA - Not OK from Version Changed - Review Needed |
2015-06-11
|
12 | Gunter Van de Velde | Request for Last Call review by OPSDIR Completed: Ready. Reviewer: Melinda Shore. |
2015-06-11
|
12 | Barry Leiba | [Ballot discuss] After getting John's explanation of the background and details of the attack (and the different communications paths involved, I still would prefer that … [Ballot discuss] After getting John's explanation of the background and details of the attack (and the different communications paths involved, I still would prefer that we build this protocol as a more robust one (with only S256 and not "plain"), but I understand the reasons to have it this way, and I think it will be acceptable with some changes to the text to make the situation clearer. To that end, I suggest this: In the introduction, I think the explanation of Figure 1 (the fourth paragraph) should be changed to make it clear what communication paths are used in each step, and where the vulnerable piece is. Something like this: OLD In step (1) the native app running on the end device, such as a smart phone, issues an authorization request via the browser/operating system, which then gets forwarded to the OAuth 2.0 authorization server in step (2). The authorization server returns the authorization code in step (3). The malicious app is able to observe the authorization code in step (4) since it is registered to the custom URI scheme used by the legitimate app. This allows the attacker to reguest and obtain an access token in step (5) and step (6), respectively. NEW In step (1) the native app running on the end device, such as a smart phone, issues an authorization request via the browser/operating system. The request includes a URI by which the response will be returned, and that uses a custom URI scheme. Step (1) happens through a secure API that cannot be intercepted. The request then gets forwarded to the OAuth 2.0 authorization server in step (2). Because OAuth requires the use of TLS, this communication is protected by TLS, and also cannot be intercepted. The authorization server returns the authorization code over the same TLS connection in step (3). In step (4), the Authorization Code is returned to the requester via the URI that was provided in step (1). A malicious app that has been designed to attack this native app has previously registered itself as a handler for the custom URI scheme, and is now able to observe the Authorization Code in step (4). This allows the attacker to request and obtain an access token in steps (5) and (6). END That (or something like it) makes it clear that only one step is vulnerable, and explicitly tells us that the other communication paths are already protected. In the list of pre-conditions, I suggest changing (1) to make "another application" be "a legitimate application that uses OAuth". *** IMPORTANT *** I am still puzzled by this, in pre-condition (4), which seems to contradict what John said and what I proposed above: 4) The attacker (via the installed app) is able to observe responses from the authorization endpoint. As a more sophisticated attack scenario the attacker is also able to observe requests (in addition to responses) to the authorization endpoint. Can you please explain the "more sophisticated attack", and how the attacker can observe the request? Because "plain" will NOT work in such a situation. I suggest changing the last paragraph in the Introduction like this: OLD To mitigate this attack, this extension utilizes a dynamically created cryptographically random key called 'code verifier'. A unique code verifier is created for every authorization request and its transformed value, called 'code challenge', is sent to the authorization server to obtain the authorization code. NEW To mitigate this attack, this extension utilizes a dynamically created cryptographically random key called 'code verifier'. A unique code verifier is created for every authorization request and its transformed value, called 'code challenge', is sent to the authorization server to obtain the authorization code. This transmission is sent through a secure API, and cannot be intercepted. END I know it repeats what was said in the explanation above, but it's an important enough point to merit repetition. I suggest changing Section 4.4.1 like this (because of a misuse of "MAY" that I missed before): OLD If the client is capable of using "S256", it MUST use "S256", as "S256" is Mandatory To Implement (MTI) on the server. Clients MAY use "plain" only if they cannot support "S256" for some technical reason and knows that the server supports "plain". NEW If the client is capable of using "S256", it MUST use "S256", as "S256" is Mandatory To Implement (MTI) on the server. Clients are permitted to use "plain" only if they cannot support "S256" for some technical reason and know that the server supports "plain". END Finally, I suggest changing this in Section 7.2: OLD "S256" method protects against eavesdroppers observing or intercepting the "code_challenge". If the "plain" method is used, there is a chance that it will be observed by the attacker on the device. The use of "S256" protects against it. NEW The "S256" method protects against eavesdroppers observing or intercepting the "code_challenge", because the challenge cannot be used without the verifier. With the "plain" method, the challenge can be directly used during the verification step, so "plain" does not protect against interception of the initial request. Because of this, "plain" SHOULD NOT be used, and exists only for compatibility with deployed implementations where the request path is already protected. The "plain" method MUST NOT be used in new implementations. END With that set of changes, or something like them (feel free to re-write, and certainly correct anything I got wrong!), I will clear this DISCUSS and we can move ahead. If you find anything fundamentally messed up in any of that, please do discuss it with me, and let's sort it out. And, again, thanks for the explanation that made this all clear. |
2015-06-11
|
12 | Barry Leiba | [Ballot comment] Putting quotation marks around "code_verifier" and "code_challenge" in the formulas is confusing: it makes it look as if you're putting in those strings … [Ballot comment] Putting quotation marks around "code_verifier" and "code_challenge" in the formulas is confusing: it makes it look as if you're putting in those strings themselves, rather than the values of the variables. It's probably unlikely that anyone would make that mistake, but I nevertheless suggest removing the quotation marks when you mean to refer to the values. -- Section 2 -- There is no real distinction between STRING and ASCII(STRING), because STRING is already defined to be ASCII. Using "ASCII(xxx)" only adds clutter, and a suggest removing it. So, for example, these last two comments would make changes such as this one: OLD BASE64URL-ENCODE(SHA256(ASCII("code_verifier" ))) == "code_challenge" NEW BASE64URL-ENCODE(SHA256(code_verifier)) == code_challenge END -- Section 4.3 -- I would very strongly prefer that S256 be the default, not "plain"... or that the method be required, with no default. I understand that this makes existing implementations break. -- Section 4.4 -- The word "code" is used for too many things, and "Authorization Code" is already the right name for what we're talking about here. I suggest that in both the section title and body you use that term, to make it clear what you mean by the "code". Similarly, in Section 4.5 please say "code_verifier" rather than "secret". (Nat plans to make these changes.) -- Section 4.4.1 -- Please expand "PKCE", which is, at the moment, only expanded in the document title. (Nat plans to make a change for this.) -- Section 5 -- The SHOULD in the first paragraph is wrong. You already have a MAY covering the general behavior. You should just take out the "SHOULD", and just say that severs supporting backwards compatibility revert to the normal OAuth protocol. (Nat plans to make a change for this.) -- Section 6.2 -- I have the same comment here as in the other OAuth document: please shift the focus away from telling IANA how to handle tracking of the expert review, and make the mailing list something that the designated expert(s) keep track of. Also, please give more instructions to the DEs about what they should consider when they're evaluating a request (for example, should they approve all requests, or are there criteria they should apply?). For the first, here's a text change that I suggest we move toward for this sort of thing: OLD NEW Additional code_challenge_method types for use with the authorization endpoint are registered using the Specification Required policy [RFC5226], which includes review of the request by one or more Designated Experts. The DEs will ensure there is at least a two-week review of the request on the oauth-ext-review@ietf.org mailing list, and that any discussion on that list converges before they respond to the request. To allow for the allocation of values prior to publication, the Designated Expert(s) may approve registration once they are satisfied that an acceptable specification will be published. Discussion on the oauth-ext-review@ietf.org mailing list should use an appropriate subject, such as "Request for PKCE code_challenge_method: example"). The Designated Expert(s) should consider the discussion on the mailing list, as well as <> when evaluating registration requests. Denials should include an explanation and, if applicable, suggestions as to how to make the request successful. END (Nat plans to make a change for this.) -- Section 7.2 -- For the first paragraph, after discussion with the author I suggest this: NEW Clients MUST NOT downgrade to "plain" after trying the S256 method. Because servers are required to support S256, an error when S256 is presented can only mean that the server does not support PKCE at all. Otherwise, such an error could be indicative of a MITM attacker trying a downgrade attack. END |
2015-06-11
|
12 | Barry Leiba | Ballot comment and discuss text updated for Barry Leiba |
2015-06-11
|
12 | Cindy Morgan | IESG state changed to IESG Evaluation::Revised I-D Needed from IESG Evaluation |
2015-06-11
|
12 | Jari Arkko | [Ballot Position Update] New position, No Objection, has been recorded for Jari Arkko |
2015-06-10
|
12 | Terry Manderson | [Ballot Position Update] New position, No Objection, has been recorded for Terry Manderson |
2015-06-10
|
12 | Tero Kivinen | Request for Last Call review by SECDIR Completed: Has Issues. Reviewer: Ben Laurie. |
2015-06-10
|
12 | Benoît Claise | [Ballot Position Update] New position, No Objection, has been recorded for Benoit Claise |
2015-06-10
|
12 | Alia Atlas | [Ballot Position Update] New position, No Objection, has been recorded for Alia Atlas |
2015-06-10
|
12 | Martin Stiemerling | [Ballot Position Update] New position, No Objection, has been recorded for Martin Stiemerling |
2015-06-10
|
12 | Alissa Cooper | [Ballot comment] I support Barry's DISCUSS. |
2015-06-10
|
12 | Alissa Cooper | [Ballot Position Update] New position, No Objection, has been recorded for Alissa Cooper |
2015-06-10
|
12 | Deborah Brungard | [Ballot Position Update] New position, No Objection, has been recorded for Deborah Brungard |
2015-06-10
|
12 | Brian Haberman | [Ballot comment] I agree with Barry's DISCUSS about "plain". Using "plain" makes no sense to me. |
2015-06-10
|
12 | Brian Haberman | Ballot comment text updated for Brian Haberman |
2015-06-10
|
12 | Brian Haberman | [Ballot Position Update] New position, No Objection, has been recorded for Brian Haberman |
2015-06-09
|
12 | Joel Jaeggli | [Ballot comment] From Melinda Shore's OPSdir review: I have reviewed this document as part of the Operational directorate's ongoing effort to review all IETF documents … [Ballot comment] From Melinda Shore's OPSdir review: I have reviewed this document as part of the Operational directorate's ongoing effort to review all IETF documents being processed by the IESG. These comments were written with the intent of improving the operational aspects of the IETF drafts. Comments that are not addressed in last call may be included in AD reviews during the IESG review. Document editors and WG chairs should treat these comments just like any other last call comments. Summary: This document is ready, with very minor issues. It does not appear to introduce new management/manageability considerations. This document describes a challenge-response mechanism to protect against an OAuth authorization code being intercepted by an attacker, when that authorization code is sent in the clear. The authorization code is used to acquire an access token and must be protected. This attack (an attacker using an intercepted authz code to acquire an access token) has been observed in the wild. We are astonished to learn that OAuth is being run over an unencrypted channel. However, given that it is, this is a reasonable defense mechanism. Questions: Why is S256 RECOMMENDED and not a MUST? Nits: ASCII(STRING) does not appear to be used in the protocol grammar? Melinda |
2015-06-09
|
12 | Joel Jaeggli | [Ballot Position Update] New position, No Objection, has been recorded for Joel Jaeggli |
2015-06-09
|
12 | Alexey Melnikov | Request for Last Call review by GENART Completed: Almost Ready. Reviewer: Alexey Melnikov. |
2015-06-09
|
12 | Ben Campbell | [Ballot comment] I share Barry's and Alexey's concerns about both allowing "plain" and defaulting to it. I have some other comments, which may overlap with … [Ballot comment] I share Barry's and Alexey's concerns about both allowing "plain" and defaulting to it. I have some other comments, which may overlap with the comments from others: Substantive: -- section 1, pre-condition 3: "All OAuth 2.0 native app client-instances use the same client_id. Secrets provisioned in client binary applications cannot be considered confidential." Is that part of the pre-condition per-se, or a general statement? If the former, wouldn't a potential mitigation for this attack be to ensure the precondition doesn't occur? -- section 1, paragraph after precondition list: "not applicable since they rely on a per-client instance secret or aper client instance redirect URI." I infer that these are not realistic? If so, it might be useful to say why. For instance, would one way to mitigate this attack be to make sure you have per-client secrets and redirect URIs? -- 4.4.1, last sentence: Does this advice change if people register new challenge methods? That is, what if the client supports "plain", and "foo" but not S256, where foo is more secure than plain. Can it still use "plain"? -- 6.2: Does the ability to register new challenge methods introduce bid-down attacks? (Assuming that any such method is more secure than "plain", and that the server might not support it.) Also, I share Barry's concern that the registration procedures require quite a bit of special treatment from IANA. -- 7.4: This seems to need a normative reference to 6819. -- 7.5: How does the guidance in section 10.8 of 6479 apply to the code_verifier? Also, I think the last sentence requires this draft (or some other) to update 6749. Editorial: -- 4.4, 2nd to last paragraph: "The server MUST NOT include the "code_challenge" value in client requests in a form that other entities can extract." should "client requests" be "responses to clients"? (I assume the server does not send client requests--or do I have the terminology wrong?) -- 4.4.1, first paragraph: Please expand PKCE on first mention. (It might help to declare PKCE in the introduction.) |
2015-06-09
|
12 | Ben Campbell | [Ballot Position Update] New position, No Objection, has been recorded for Ben Campbell |
2015-06-08
|
12 | Alvaro Retana | [Ballot Position Update] New position, No Objection, has been recorded for Alvaro Retana |
2015-06-08
|
12 | Barry Leiba | [Ballot discuss] How does "plain" do anything at all to mitigate this attack? Wouldn't anyone who could snag the grant also be able to snag … [Ballot discuss] How does "plain" do anything at all to mitigate this attack? Wouldn't anyone who could snag the grant also be able to snag the code verifier as well? Why is "plain" even here? |
2015-06-08
|
12 | Barry Leiba | [Ballot comment] General: I would think that this mechanism should never be a substitute for using TLS, and that this document should be explicit about … [Ballot comment] General: I would think that this mechanism should never be a substitute for using TLS, and that this document should be explicit about that, and should say that the proper mitigation for situations where TLS can be used... is to use TLS. Is there a reason we should NOT say that? Putting quotation marks around "code_verifier" and "code_challenge" in the formulas is confusing: it makes it look as if you're putting in those strings themselves, rather than the values of the variables. It's probably unlikely that anyone would make that mistake, but I nevertheless suggest removing the quotation marks when you mean to refer to the values. -- Section 2 -- I don't understand the distinction between STRING and ASCII(STRING). Can you please explain it? -- Section 4.3 -- If "plain" does stay, why on Earth is it the default? Even if just for form's sake, shouldn't S256 be the default? -- Section 4.4 -- The word "code" is used for too many things, and "Authorization Grant" is already the right name for what we're talking about here. I suggest that in both the section title and body you use that term, to make it clear what you mean by the "code". Similarly, in Section 4.5 please say "code_verifier" rather than "secret". -- Section 4.4.1 -- Please expand "PKCE", which is, at the moment, only expanded in the document title. -- Section 5 -- The SHOULD in the first paragraph is wrong. You already have a MAY covering the general behavior. You should just take out the "SHOULD", and just say that severs supporting backwards compatibility revert to the normal OAuth protocol. -- Section 6.2 -- I have the same comment here as in the other OAuth document: please shift the focus away from telling IANA how to handle tracking of the expert review, and make the mailing list something that the designated expert(s) keep track of. Also, please give more instructions to the DEs about what they should consider when they're evaluating a request (for example, should they approve all requests, or are there criteria they should apply?). For the first, here's a text change that I suggest we move toward for this sort of thing: OLD NEW Additional code_challenge_method types for use with the authorization endpoint are registered using the Specification Required policy [RFC5226], which includes review of the request by one or more Designated Experts. The DEs will ensure there is at least a two-week review of the request on the oauth-ext-review@ietf.org mailing list, and that any discussion on that list converges before they respond to the request. To allow for the allocation of values prior to publication, the Designated Expert(s) may approve registration once they are satisfied that an acceptable specification will be published. Discussion on the oauth-ext-review@ietf.org mailing list should use an appropriate subject, such as "Request for PKCE code_challenge_method: example"). The Designated Expert(s) should consider the discussion on the mailing list, as well as <> when evaluating registration requests. Denials should include an explanation and, if applicable, suggestions as to how to make the request successful. END -- Section 7.2 -- Please rewrite the first paragraph. Please do not leave it for the RFC Editor, as they may inadvertently get it technically wrong when they try. |
2015-06-08
|
12 | Barry Leiba | [Ballot Position Update] New position, Discuss, has been recorded for Barry Leiba |
2015-06-06
|
12 | John Bradley | IANA Review state changed to Version Changed - Review Needed from IANA - Not OK |
2015-06-06
|
12 | John Bradley | New version available: draft-ietf-oauth-spop-12.txt |
2015-06-04
|
11 | Kathleen Moriarty | IESG state changed to IESG Evaluation from Waiting for Writeup |
2015-06-04
|
11 | Kathleen Moriarty | Ballot has been issued |
2015-06-04
|
11 | Kathleen Moriarty | [Ballot Position Update] New position, Yes, has been recorded for Kathleen Moriarty |
2015-06-04
|
11 | Kathleen Moriarty | Created "Approve" ballot |
2015-06-04
|
11 | Kathleen Moriarty | Ballot writeup was changed |
2015-06-02
|
11 | Kathleen Moriarty | Placed on agenda for telechat - 2015-06-11 |
2015-06-02
|
11 | Kathleen Moriarty | Changed consensus to Yes from Unknown |
2015-06-01
|
11 | (System) | IESG state changed to Waiting for Writeup from In Last Call |
2015-05-29
|
11 | Pearl Liang | (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: [Revised IANA Last Call Comments: added one missing new OAuth Parameter.] IANA has reviewed draft-ietf-oauth-spop-11. Authors should review the comments … (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: [Revised IANA Last Call Comments: added one missing new OAuth Parameter.] IANA has reviewed draft-ietf-oauth-spop-11. Authors should review the comments and/or questions below. Please report any inaccuracies and respond to any questions as soon as possible. We received the following comments/questions from the IANA's reviewer: IANA has a question about one of the actions requested in the IANA Considerations section of this document. IANA understands that, upon approval of [ RFC-to-be ], there is are two actions which must be completed. First, in the OAuth Parameters subregistry of the OAuth Parameters registry located at: http://www.iana.org/assignments/oauth-parameters/ 'three' new OAuth Parameters will be registered as follows: Parameter name: code_verifier Parameter usage location: Access Token Request Change controller: IESG Specification document(s): [ RFC-to-be ] Parameter name: code_challenge Parameter usage location: Authorization Request Change controller: IESG Specification document(s): [ RFC-to-be ] Parameter name: code_challenge_method Parameter usage location: Authorization Request Change controller: IESG Specification document(s): [ RFC-to-be ] As this document requests registrations in a Specification Required (see RFC 5226) registry, we will initiate the required Expert Review via a separate request. Expert review will need to be completed before your document can be approved for publication as an RFC. Second, a new registry is to be created called the PKCE Code Challenge Method Registry. This registry will be maintained via Specification Required as defined in RFC 5226. IANA QUESTION -> Where should this new registry be located? Is it a néw registry on the IANA Matrix (http://www.iana.org/protocols) or is it a subregistry of an existing registry? If it is a subregistry of an existing registry, in which registry will it be contained? Is the new registry under this existing heading OAuth Parameters located at http://www.iana.org/protocols? In a location to be determined (see question above), there will be initial registrations in the new registry as follows: Code Challenge Method Parameter Name: plain Change Controller: IESG Specification Document(s): Section 4.2 of [ RFC-to-be ] Code Challenge Method Parameter Name: S256 Change Controller: IESG Specification Document(s): Section 4.2 of [ RFC-to-be ] IANA understands taht these two actions are the only ones that need to be completed upon approval of this document. Note: The actions requested in this document will not be completed until the document has been approved for publication as an RFC. This message is only to confirm what actions will be performed. |
2015-05-29
|
11 | (System) | IANA Review state changed to IANA - Not OK from IANA - Review Needed |
2015-05-29
|
11 | Pearl Liang | (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: IANA has reviewed draft-ietf-oauth-spop-11. Authors should review the comments and/or questions below. Please report any inaccuracies and respond to any … (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: IANA has reviewed draft-ietf-oauth-spop-11. Authors should review the comments and/or questions below. Please report any inaccuracies and respond to any questions as soon as possible. We received the following comments/questions from the IANA's reviewer: IANA has a question about one of the actions requested in the IANA Considerations section of this document. IANA understands that, upon approval of [ RFC-to-be ], there is are two actions which must be completed. First, in the OAuth Parameters subregistry of the OAuth Parameters registry located at: http://www.iana.org/assignments/oauth-parameters/ two new OAuth Parameters will be registered as follows: Parameter name: code_verifier Parameter usage location: Access Token Request Change controller: IESG Specification document(s): [ RFC-to-be ] Parameter name: code_challenge Parameter usage location: Authorization Request Change controller: IESG Specification document(s): [ RFC-to-be ] As this document requests registrations in a Specification Required (see RFC 5226) registry, we will initiate the required Expert Review via a separate request. Expert review will need to be completed before your document can be approved for publication as an RFC. Second, a new registry is to be created called the PKCE Code Challenge Method Registry. This registry will be maintained via Specification Required as defined in RFC 5226. IANA QUESTION -> Where should this new registry be located? Is it a néw registry on the IANA Matrix (http://www.iana.org/protocols) or is it a subregistry of an existing registry? If it is a subregistry of an existing registry, in which registry will it be contained? Is the new registry under this existing heading OAuth Parameters located at http://www.iana.org/protocols? In a location to be determined (see question above), there will be initial registrations in the new registry as follows: Code Challenge Method Parameter Name: plain Change Controller: IESG Specification Document(s): Section 4.2 of [ RFC-to-be ] Code Challenge Method Parameter Name: S256 Change Controller: IESG Specification Document(s): Section 4.2 of [ RFC-to-be ] IANA understands taht these two actions are the only ones that need to be completed upon approval of this document. Note: The actions requested in this document will not be completed until the document has been approved for publication as an RFC. This message is only to confirm what actions will be performed. |
2015-05-24
|
11 | Gunter Van de Velde | Request for Last Call review by OPSDIR is assigned to Melinda Shore |
2015-05-24
|
11 | Gunter Van de Velde | Request for Last Call review by OPSDIR is assigned to Melinda Shore |
2015-05-21
|
11 | Tero Kivinen | Request for Last Call review by SECDIR is assigned to Ben Laurie |
2015-05-21
|
11 | Tero Kivinen | Request for Last Call review by SECDIR is assigned to Ben Laurie |
2015-05-21
|
11 | Jean Mahoney | Request for Last Call review by GENART is assigned to Alexey Melnikov |
2015-05-21
|
11 | Jean Mahoney | Request for Last Call review by GENART is assigned to Alexey Melnikov |
2015-05-18
|
11 | Amy Vezza | IANA Review state changed to IANA - Review Needed |
2015-05-18
|
11 | Amy Vezza | The following Last Call announcement was sent out: From: The IESG To: IETF-Announce CC: Reply-To: ietf@ietf.org Sender: Subject: Last Call: (Proof Key for Code Exchange … The following Last Call announcement was sent out: From: The IESG To: IETF-Announce CC: Reply-To: ietf@ietf.org Sender: Subject: Last Call: (Proof Key for Code Exchange by OAuth Public Clients) to Proposed Standard The IESG has received a request from the Web Authorization Protocol WG (oauth) to consider the following document: - 'Proof Key for Code Exchange by OAuth Public Clients' as Proposed Standard The IESG plans to make a decision in the next few weeks, and solicits final comments on this action. Please send substantive comments to the ietf@ietf.org mailing lists by 2015-06-01. Exceptionally, comments may be sent to iesg@ietf.org instead. In either case, please retain the beginning of the Subject line to allow automated sorting. Abstract OAuth 2.0 public clients utilizing the Authorization Code Grant are susceptible to the authorization code interception attack. This specification describes the attack as well as a technique to mitigate against the threat. The file can be obtained via https://datatracker.ietf.org/doc/draft-ietf-oauth-spop/ IESG discussion can be tracked via https://datatracker.ietf.org/doc/draft-ietf-oauth-spop/ballot/ No IPR declarations have been submitted directly on this I-D. |
2015-05-18
|
11 | Amy Vezza | IESG state changed to In Last Call from Last Call Requested |
2015-05-18
|
11 | Amy Vezza | Last call announcement was generated |
2015-05-17
|
11 | Kathleen Moriarty | Last call was requested |
2015-05-17
|
11 | Kathleen Moriarty | Ballot approval text was generated |
2015-05-17
|
11 | Kathleen Moriarty | IESG state changed to Last Call Requested from AD Evaluation |
2015-05-17
|
11 | Kathleen Moriarty | Last call announcement was generated |
2015-05-16
|
11 | John Bradley | New version available: draft-ietf-oauth-spop-11.txt |
2015-04-18
|
10 | Kathleen Moriarty | IESG state changed to AD Evaluation from Publication Requested |
2015-04-15
|
10 | Kathleen Moriarty | Ballot writeup was generated |
2015-04-15
|
10 | Kathleen Moriarty | Last call announcement was generated |
2015-04-15
|
10 | Kathleen Moriarty | Last call announcement was generated |
2015-03-26
|
10 | Hannes Tschofenig | Shepherd Write-Up for "Proof Key for Code Exchange by OAuth Public Clients" (1) What type of RFC is being requested (BCP, Proposed Standard, Internet Standard, … Shepherd Write-Up for "Proof Key for Code Exchange by OAuth Public Clients" (1) What type of RFC is being requested (BCP, Proposed Standard, Internet Standard, Informational, Experimental, or Historic)? Why is this the proper type of RFC? Is this type of RFC indicated in the title page header? This specification is proposed as a 'Standards Track' document. The type of RFC is indicated and the specification defines new OAuth protocol parameters. (2) The IESG approval announcement includes a Document Announcement Write-Up. Please provide such a Document Announcement Write-Up. Recent examples can be found in the "Action" announcements for approved documents. The approval announcement contains the following sections: Technical Summary OAuth 2.0 public clients utilizing the Authorization Code Grant are susceptible to the authorization code interception attack. This specification describes the attack as well as a technique to mitigate against the threat. Working Group Summary The working group last call for this document was started soon after the document was adopted as a WG item. A substantial number of comments were received and the subsequent document versions addressed those comments. No difficult decisions had to be made by the chairs or the group. Document Quality Are there existing implementations of the protocol? Have a significant number of vendors indicated their plan to implement the specification? Are there any reviewers that merit special mention as having done a thorough review, e.g., one that resulted in important changes or a conclusion that the document had no substantive issues? If there was a MIB Doctor, Media Type or other expert review, what was its course (briefly)? In the case of a Media Type review, on what date was the request posted? PingIdentity, Google, and Deutsche Telekom have implementations of the plain code challenge method. The documentation of the PingIdentity implementation can be found at http://documentation.pingidentity.com/pages/viewpage.action?pageId=26706844 The open source phpOIDC implementation contains code for the S256 and the plain code challenge methods. Personnel Who is the Document Shepherd? Who is the Responsible Area Director? Hannes Tschofenig is the document shepherd and the responsible area director is Kathleen Moriarty. (3) Briefly describe the review of this document that was performed by the Document Shepherd. If this version of the document is not ready for publication, please explain why the document is being forwarded to the IESG. The document shepherd was involved in the working group review process and verified the document for correctness. (4) Does the document Shepherd have any concerns about the depth or breadth of the reviews that have been performed? There are no concerns regarding the document reviews. (5) Do portions of the document need review from a particular or from broader perspective, e.g., security, operational complexity, AAA, DNS, DHCP, XML, or internationalization? If so, describe the review that took place. The document contains ABNF. As noted at the end of this shepherd write-up there might be an issue with the ABNF syntax in the document. During the review an issue surfaced regarding the incorrect use of ABNF in various OAuth specifications. This issue was raised on the OAuth mailing list: https://www.ietf.org/mail-archive/web/oauth/current/msg14099.html Review from an ABNF expert would be desirable. (6) Describe any specific concerns or issues that the Document Shepherd has with this document that the Responsible Area Director and/or the IESG should be aware of? For example, perhaps he or she is uncomfortable with certain parts of the document, or has concerns whether there really is a need for it. In any event, if the WG has discussed those issues and has indicated that it still wishes to advance the document, detail those concerns here. The document shepherd has no concerns with the document. (7) Has each author confirmed that any and all appropriate IPR disclosures required for full conformance with the provisions of BCP 78 and BCP 79 have already been filed. If not, explain why. The authors have confirmed full conformance with the provisions of BCP 78 and BCP 79: Nat Sakimura: http://www.ietf.org/mail-archive/web/oauth/current/msg14206.html John Bradley: http://www.ietf.org/mail-archive/web/oauth/current/msg14207.html Naveen Agarwal: http://www.ietf.org/mail-archive/web/oauth/current/msg14337.html (8) Has an IPR disclosure been filed that references this document? If so, summarize any WG discussion and conclusion regarding the IPR disclosures. No IPR disclosures have been filed for this document. (9) How solid is the WG consensus behind this document? Does it represent the strong concurrence of a few individuals, with others being silent, or does the WG as a whole understand and agree with it? There is solid consensus in the working group for publishing this document. This specification addresses a security vulnerability found in the wild. (10) Has anyone threatened an appeal or otherwise indicated extreme discontent? If so, please summarise the areas of conflict in separate email messages to the Responsible Area Director. (It should be in a separate email because this questionnaire is publicly available.) Nobody threatened an appeal or expressed extreme discontent. (11) Identify any ID nits the Document Shepherd has found in this document. (See http://www.ietf.org/tools/idnits/ and the Internet-Drafts Checklist). Boilerplate checks are not enough; this check needs to be thorough. The shepherd checked the document. (12) Describe how the document meets any required formal review criteria, such as the MIB Doctor, media type, and URI type reviews. No formal review is needed. (13) Have all references within this document been identified as either normative or informative? Yes. The references are split into normative and informative references. (14) Are there normative references to documents that are not ready for advancement or are otherwise in an unclear state? If such normative references exist, what is the plan for their completion? All normative references are published RFCs. (15) Are there downward normative references references (see RFC 3967)? If so, list these downward references to support the Area Director in the Last Call procedure. The specification has a normative dependency on an informational RFC, namely "US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)" (RFC 6234). This is a downward reference. We reference RFC 20 for the ASCII syntax and that RFC does not have a status. Maybe there is another reference that could be used instead. (16) Will publication of this document change the status of any existing RFCs? Are those RFCs listed on the title page header, listed in the abstract, and discussed in the introduction? If the RFCs are not listed in the Abstract and Introduction, explain why, and point to the part of the document where the relationship of this document to the other RFCs is discussed. If this information is not in the document, explain why the WG considers it unnecessary. This document does not change the status of an existing RFC. (17) Describe the Document Shepherd's review of the IANA considerations section, especially with regard to its consistency with the body of the document. Confirm that all protocol extensions that the document makes are associated with the appropriate reservations in IANA registries. Confirm that any referenced IANA registries have been clearly identified. Confirm that newly created IANA registries include a detailed specification of the initial contents for the registry, that allocations procedures for future registrations are defined, and a reasonable name for the new registry has been suggested (see RFC 5226). This document allocates three new parameters to the existing OAuth parameter registry (see Section 6.1) and creates a new registry called 'PKCE Code Challenge Method' registry. This document adds two values to the PKCE Code Challenge Method registry, as defined in Section 6.2.2. The IANA consideration section correspond to the body of the document. (18) List any new IANA registries that require Expert Review for future allocations. Provide any public guidance that the IESG would find useful in selecting the IANA Experts for these new registries. The 'PKCE Code Challenge Method' registry requires expert review. Selecting experts from the OAuth working group might be useful. (19) Describe reviews and automated checks performed by the Document Shepherd to validate sections of the document written in a formal language, such as XML code, BNF rules, MIB definitions, etc. The document shepherd used 'Bill's ABNF Parser' to verify the included ABNF code. I get an error from 'Bill's ABNF Parser'. The tool complains about the use of the "_" in the code_verifier label. It turns out that this is not an allowed token in ABNF as defined in RFC 5234 (at least that's my current understanding). Since we have been using the "_" character in labels in various parameters in OAuth there is nothing that can be done at this point in time. The shepherd suggests to ask ABNF experts whether this observation is actually correct. If incorrect, then there is no problem. The specification also contains C# code in the appendix. The shepherd has verified the code against the provided example. |
2015-03-26
|
10 | Hannes Tschofenig | State Change Notice email list changed to draft-ietf-oauth-spop@ietf.org, oauth@ietf.org, draft-ietf-oauth-spop.shepherd@ietf.org, Hannes.Tschofenig@gmx.net, oauth-chairs@ietf.org, draft-ietf-oauth-spop.ad@ietf.org |
2015-03-26
|
10 | Hannes Tschofenig | Responsible AD changed to Kathleen Moriarty |
2015-03-26
|
10 | Hannes Tschofenig | IETF WG state changed to Submitted to IESG for Publication from WG Document |
2015-03-26
|
10 | Hannes Tschofenig | IESG state changed to Publication Requested |
2015-03-26
|
10 | Hannes Tschofenig | IESG process started in state Publication Requested |
2015-03-26
|
10 | Hannes Tschofenig | Changed document writeup |
2015-02-05
|
10 | John Bradley | New version available: draft-ietf-oauth-spop-10.txt |
2015-02-04
|
09 | John Bradley | New version available: draft-ietf-oauth-spop-09.txt |
2015-02-03
|
08 | John Bradley | New version available: draft-ietf-oauth-spop-08.txt |
2015-01-30
|
07 | John Bradley | New version available: draft-ietf-oauth-spop-07.txt |
2015-01-21
|
06 | John Bradley | New version available: draft-ietf-oauth-spop-06.txt |
2014-12-07
|
05 | John Bradley | New version available: draft-ietf-oauth-spop-05.txt |
2014-11-12
|
04 | Nat Sakimura | New version available: draft-ietf-oauth-spop-04.txt |
2014-11-12
|
03 | John Bradley | New version available: draft-ietf-oauth-spop-03.txt |
2014-10-27
|
02 | John Bradley | New version available: draft-ietf-oauth-spop-02.txt |
2014-10-26
|
01 | Nat Sakimura | New version available: draft-ietf-oauth-spop-01.txt |
2014-08-27
|
00 | Hannes Tschofenig | Intended Status changed to Proposed Standard from None |
2014-08-26
|
00 | Hannes Tschofenig | Document shepherd changed to Hannes Tschofenig |
2014-08-26
|
00 | Hannes Tschofenig | This document now replaces draft-sakimura-oauth-tcse instead of None |
2014-08-26
|
00 | Nat Sakimura | New version available: draft-ietf-oauth-spop-00.txt |