Return-Path: <donald.coffin@reminetworks.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix)
 with ESMTP id 18DA821F88A1 for <oauth@ietfa.amsl.com>;
 Sun,  3 Feb 2013 13:59:46 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.459
X-Spam-Level: 
X-Spam-Status: No, score=-0.459 tagged_above=-999 required=5 tests=[AWL=0.410,
 BAYES_05=-1.11, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1, SARE_LWSHORTT=1.24]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com
 [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TYMQW1MKIPee for
 <oauth@ietfa.amsl.com>; Sun,  3 Feb 2013 13:59:43 -0800 (PST)
Received: from oproxy12-pub.bluehost.com (oproxy12-pub.bluehost.com
 [50.87.16.10]) by ietfa.amsl.com (Postfix) with SMTP id 83F5121F889D for
 <oauth@ietf.org>; Sun,  3 Feb 2013 13:59:41 -0800 (PST)
Received: (qmail 28736 invoked by uid 0); 3 Feb 2013 21:59:17 -0000
Received: from unknown (HELO host125.hostmonster.com) (74.220.207.125) by
 oproxy12.bluehost.com with SMTP; 3 Feb 2013 21:59:17 -0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
 d=reminetworks.com; s=default;
 h=Content-Type:MIME-Version:Message-ID:Date:Subject:In-Reply-To:References:Cc:To:From;
 bh=0vQAepDVMtG26XTKF85kQKGveB6KO24cVrGwp/fyIU0=;
 b=nZzXILmTCNlsof7sPvITeL5cdZxzM9Q4rPKkUM9PcgaOaijItY39flYCzBzc0JcesOoHmiIV1tAQc3N/GI7qBY9yXLFs1SubrmiwDVX59lp3EhtxdQvnzZYbKJDQwYuz;
Received: from [68.4.207.246] (port=2098 helo=HPPavilionElite) by
 host125.hostmonster.com with esmtpa (Exim 4.80) (envelope-from
 <donald.coffin@reminetworks.com>) id 1U27an-0007OF-2A;
 Sun, 03 Feb 2013 14:59:17 -0700
From: "Donald F Coffin" <donald.coffin@reminetworks.com>
To: "'Torsten Lodderstedt'" <torsten@lodderstedt.net>
References: <006401cdfe5f$2555f170$7001d450$@reminetworks.com>
 <51085B43.3080103@aol.com> <00c901cdfe80$e7d0eb30$b772c190$@reminetworks.com>
 <9DFD603A-1170-41D8-A22F-8654D55546B3@lodderstedt.net>
 <00a301ce0205$b6b1ca00$24155e00$@reminetworks.com>
 <510E560A.4090107@lodderstedt.net>
 <003e01ce024f$6894feb0$39befc10$@reminetworks.com>
 <446E24A6-1E3A-4596-AAEA-8B6F1AD7D1A0@lodderstedt.net>
In-Reply-To: <446E24A6-1E3A-4596-AAEA-8B6F1AD7D1A0@lodderstedt.net>
Date: Sun, 3 Feb 2013 13:59:06 -0800
Message-ID: <006601ce0259$b05db840$111928c0$@reminetworks.com>
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="----=_NextPart_000_0067_01CE0216.A2406BB0"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQGqJs1aP2O8OPoDFE4j2TX8/D0+WgJbNiMKAkqArjkBxPa5mwH8o5RMAdFqZ0cBjwcubAIIPbhsmEHfmFA=
Content-Language: en-us
X-Identified-User: {1395:host125.hostmonster.com:reminetw:reminetworks.com}
 {sentby:smtp auth 68.4.207.246 authed with donald.coffin@reminetworks.com}
Cc: 'John Adkins' <jva2@pge.com>, 'Marty Burns' <marty@hypertek.us>,
 'Scott Crowder' <scott.crowder@qadoenergy.com>,
 'Dave Robin' <drobin@automatedlogic.com>,
 'John Teeter' <john.teeter@peoplepowerco.com>, pmadsen@pingidentity.com,
 'Edward Denson' <ewd7@pge.com>, oauth@ietf.org,
 'Ray Perlner' <ray.perlner@nist.gov>, 'Anne Hendry' <ahendry2@gmail.com>,
 'Lynne Rodoni' <mrodoni@semprautilities.com>,
 'Uday Verma' <uday.verma@ilinknet.com>
Subject: Re: [OAUTH-WG] draft-ietf-oauth-revocation-04
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>,
 <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/oauth>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>,
 <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 03 Feb 2013 21:59:46 -0000

This is a multipart message in MIME format.

------=_NextPart_000_0067_01CE0216.A2406BB0
Content-Type: text/plain;
	charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Torsten,

=20

The Third Party will utilize an access_token they obtain utilizing the =
client_credentials to obtain data from the RS for all Retail Customers =
who have granted them access to their data.  Therefore, the Third Party =
will also have an access_token they obtain utilizing the =
authentication_code response_type (i.e. grant_type of code for the =
access_token) for each of the Retail Customers who have authorized them =
access to their data.

=20

Although an access_token will exist for the Third Party, Retail =
Customer, and RS relationship its usage will be infrequent compared to =
the access_token the Third Party obtains using the client_credentials =
grant_type.  This is another reason why I believe in the ESPI Standard =
implementation it will be necessary to revoke the access_token and =
refresh_token simultaneously.  The RS should not include in the data =
stream (covered by the client_credentials access_token) data that is =
based on the authorization_code access_token when the Retail Customer =
has indicated  (either by alteration of the authorization scope or an =
outright revocation) the Third Party no longer is authorized to access =
the data.  Only revoking the refresh_token possess a privacy.  Only =
revoking the access_token, as you pointed out, poses a potential =
security issue allowing for the possibility of a denial of service =
attack.

=20

I hope this makes sense and clarifies my situation..

=20

Best regards,

Don

Donald F. Coffin

Founder/CTO

=20

REMI Networks

22751 El Prado Suite 6216

Rancho Santa Margarita, CA  92688-3836

=20

Phone:      (949) 636-8571

Email:        <mailto:donald.coffin@reminetworks.com> =
donald.coffin@reminetworks.com

=20

From: Torsten Lodderstedt [mailto:torsten@lodderstedt.net]=20
Sent: Sunday, February 03, 2013 1:14 PM
To: Donald F Coffin
Cc: George Fletcher; John Adkins; Scott Crowder; Dave Robin; John =
Teeter; <pmadsen@pingidentity.com>; Edward Denson; Marty Burns; Uday =
Verma; Ray Perlner; Anne Hendry; Lynne Rodoni; <oauth@ietf.org>
Subject: Re: [OAUTH-WG] draft-ietf-oauth-revocation-04

=20

Hi Donald,

=20

Thanks for the clarification. Let me see whether I got you right. =
Although the retail customer has to authorize the access by the 3rd =
party application, there is no external representation of this =
authorization grant (e.g a refresh token). Instead, the actual access =
token is issued based on client credentials. Is there any correlation =
between the access token and the particular customer?

=20

Please note: we highly appreciate your feedback as an implementer.

=20

Best regards,

Torsten.


Am 03.02.2013 um 21:45 schrieb "Donald F Coffin" =
<donald.coffin@reminetworks.com>:

Hi Torsten,

=20

Best regards,

Don

Donald F. Coffin

Founder/CTO

=20

REMI Networks

22751 El Prado Suite 6216

Rancho Santa Margarita, CA  92688-3836

=20

Phone:      (949) 636-8571

Email:       donald.coffin@reminetworks.com

=20

From: Torsten Lodderstedt [mailto:torsten@lodderstedt.net]=20
Sent: Sunday, February 03, 2013 4:20 AM
To: Donald F Coffin
Cc: 'George Fletcher'; 'John Adkins'; 'Scott Crowder'; 'Dave Robin'; =
'John Teeter'; pmadsen@pingidentity.com; 'Edward Denson'; 'Marty Burns'; =
'Uday Verma'; 'Ray Perlner'; 'Anne Hendry'; 'Lynne Rodoni'; =
oauth@ietf.org
Subject: Re: [OAUTH-WG] draft-ietf-oauth-revocation-04

=20

Hi Donald,

Am 03.02.2013 12:57, schrieb Donald F Coffin:

<snip>=20

=20

[Don] A typical Third Party application built to use the ESPI Standard =
will interact with a Retail Customer and their energy provider.  The =
nature of interaction with the Retail Customer will utilize short =
interactive sessions.  However, the interaction with their energy =
provider will require the application obtain new energy information for =
the previous 24-hours once a day.  Therefore, I anticipate access_tokens =
will be granted for long periods of time as well as any supporting =
refresh_tokens.  Because of the amount of data being exchanged between =
the Third Party application and the energy provider, both in number of =
retail customers and the amount of energy meter data, it will be =
necessary to minimize the amount of =E2=80=9Cadministrative=E2=80=9D =
traffic required in the exchange.  Therefore, although I understand the =
use case you described, I anticipate such an implementation would be =
rare. =20

=20

The need to perform an audience style check to prevent exposure of the =
AS to a denial of service attack, appears primarily due to the fact the =
Revocation RFC requires an access_token and refresh_token to be revoked =
independently.  Should a client need to revoke both Tokens the sequence =
of the revocation request is extremely significant.  A simple solution =
to this problem would be to provide a method that allows a request to =
revoke both tokens simultaneously, as stated in one of the responses you =
referenced in the archives. =20

=20

The example you gave in your response demonstrating how a denial of =
service attack might occur is incorrect.  You said =E2=80=9Cif the AS =
revokes the refresh_token when an access_token is revoked, I can steal =
an access_token and send it to the revocation endpoint causing the real =
client=E2=80=99s refresh_token to be revoked=E2=80=9D.  I fail to see =
how that could occur, since the AS revoked both the access_token and the =
refresh_token when it received the request to revoke the access_token.  =
Rather than explaining why a refresh_token shouldn=E2=80=99t be revoked =
concurrently when an access_token is revoked, your example does the =
exact opposite.  It shows why a refresh_token should be revoked =
concurrently when an access_token is revoked.

=20

[Don] The focus of the ESPI Standard is to provide Retail =
Customer=E2=80=99s with access to a single UsagePoint (i.e. their Smart =
Meter).  Therefore an access and refresh token will be tightly =
correlated with the type and frequency of data the Smart Meter provides. =
 There are only a few reasons defined within the ESPI Standard list of =
use cases that will require the Token Revocation request to be issued.  =
The following summarizes the situations that require a Token Revocation =
request:

=C2=B7         A Third Party application wishes to terminate their =
relationship with a Retail Customer.

=C2=B7         A Third Party application wishes to terminate their =
relationship with a Data Custodian.

=C2=B7         A Retail Customer wishes to terminate their relationship =
with a Third Party application.

=C2=B7         A Retail Customer wishes to change the data (i.e. scope) =
a Third Party application has permission to access.

In none of the above situations will it be valid to retain a refresh =
token, which I realize is implementation dependent, due to the nature of =
the ESPI Standard.

Perhaps the section on the Server=E2=80=99s Revocation Policy should =
address a few of the reasons why a client may want or need to revoke a =
token.  The current description provides no consideration for the =
relationship between tokens and scope, although there clearly is a =
relationship.

I'm confident client or resource owner would revoke refresh (and not =
access) tokens in all use cases you listed above. In my opinion, access =
tokens are revoked only if the authorization server does not support =
refresh tokens and therefore uses long term access tokens or in =
high-security applications.

=20

[Don] Based on the above statement it would appear you assume an access =
token is only valid for a short period of time.  However, as I explained =
in my last response, due to the nature of the access required by the =
client and the manner in which the RS provides that data, access token =
durations will typically be in days not minutes.   Therefore, merely =
revoking a refresh_token will expose the data to access that the =
resource owner meant to prevent unless the access_token is also revoked.


I don't understand why access tokens need such a long duration in your =
scenario, even if the client needs to obtain energy data once a day. Any =
client can (potentially) obtain a new access token at any time if the =
access token expires if the authorization server issues corresponding =
refresh tokens. So even in your scenario, access tokens could have a =
short duration. If you want to issue long-living access tokens in order =
to minimize load on the authorization servers, then you have to consider =
the extra complexitity and load required to notify resource servers of =
access token revocation. It's a tradeoff decision, which we tried to =
describe in =
http://tools.ietf.org/html/draft-ietf-oauth-revocation-04#section-3.=20




=20

[Don] A critical fact I omitted in my last response is the data obtained =
on a daily basis by a Third Party application will utilize an =
access_token obtained using the client_credentials grant_type.  =
Therefore no refresh_token will be issued with the access_token.  The =
ESPI Standard requires the Retail Customer (resource owner) and the RS =
to be notified whenever an authorization is modified or revoked by =
either the Third Party (client) or Retail Customer (resource owner).  =
Therefore, the tradeoff decision has already been made.

=20

I personally feel that short lived access_tokens provide greater =
security, but in discussions with several utilities who have the =
responsibility of supporting the AS and RS functionality, they currently =
are planning on implementing long duration access_tokens.  This view may =
change once the begin to implement =E2=80=9CConnect My Data=E2=80=9D =
solutions, but that again is an implementation feature, which is beyond =
the scope of my groups current work product.




=20

I would also like to hear the opinion of other WG members on this topic.

=20

3. If the standard OAuth spec does not provide enough control, your =
profile of OAuth2 for the ESPI can tighten it to provide the protections =
desired.

[Don] I am aware we can provide additional parameters required to =
integrate OAuth 2.0 with the ESPI Standard by submitting those parameter =
values to the OAuth Parameters registry. I would prefer not to do that, =
given the large amount of work being done on RFC-drafts to resolve many =
of the issues we are facing to integrate OAuth 2.0 with the ESPI =
Standard, since the need to use those extensions will most likely be =
short lived.

=20

Hmmm, if the need is only short lived, why do you want to make it part =
of the long living revocation RFC?

=20

[Don] My response was to the suggestion that if the OAuth specification =
does not provide enough control then the ESPI profile of OAuth 2.0 could =
tighten it to provide the protections desired.  I assumed George meant =
we could add additional =E2=80=9Ccompany=E2=80=9D based parameters, =
which requires us to register them with the =E2=80=9COAuth Parameter =
Registry=E2=80=9D.  I meant the usage of such =E2=80=9Ccompany=E2=80=9D =
parameters would be short termed.


Understood.





I do not view the need to identify the type of token being revoked as =
=E2=80=9Cshort term=E2=80=9D.  Even the previous exchanges on the topic =
within the WG indicates it feels there may be a need to add an =
additional parameter to the request.  However, because the draft is too =
far along, the WG seems to prefer releasing an RFC they =
=E2=80=9Csuspect=E2=80=9D will need to be adjusted and let the =
implementers confirm their suspicions.   This seems to be a very selfish =
and rather foolish attitude given we are discussing a security protocol. =
 Not to mention it would seem easier and faster to add an additional =
=E2=80=9Coptional=E2=80=9D parameter now, rather than requiring another =
RFC cycle.  A parameter I sensed in reading the archives the WG feels =
will very likely need to be added in the future.


Since this is a WG item, it is up to the WG to decide.

=20

[Don] I fully understand it is the WG=E2=80=99s decision.  I am only =
providing my opinion as an implementer, who the WG desires to obtain =
feedback from before making the final decision.



regards,
Torsten.











Thanks,
George

On 1/29/13 3:28 PM, Donald F Coffin wrote:

Hi Thorsten,

=20

I am working with the OpenADE Task Force to document how the =
=E2=80=9CEnergy Service Provider Interface (ESPI) Standard =E2=80=9D =
published by the North American Energy Standards Board (NAESB) in =
October of 2011 should be implemented.  The ESPI Standard defines how =
Retail Customers, Third Party applications, and Data Custodians (i.e. =
electrical, gas, or water utility) must interface to each other and the =
data format used to exchange energy information.   The interface between =
the Retail Customer and the Data Custodian is known as =E2=80=9CDownload =
My Data=E2=80=9D, which defines how a Retail Customer receives their =
energy information in an XML file downloaded to them by the Data =
Custodian.  The interface between the Third Party application and the =
Data Custodian is known as =E2=80=9CConnect My Data=E2=80=9D, which =
defines the message exchanges between the Third Party application and =
the Data Custodian to allow the Third Party to access data at the Data =
Custodian after a Retail Customer has granted the Third Party =
application access.

=20

It is my responsibility within the OpenADE Task Force to document the =
integration of the OAuth 2.0 protocol with the ESPI Standard.  Since the =
ESPI Standard requires Retail Customers, Third Party applications, and =
Data Custodians to revoke Tokens (i.e. Access and Refresh Tokens) I am =
very interested in the =E2=80=9CToken Revocation =
(draft-ietf-oath-revocation-xx)=E2=80=9D work being done by you and your =
working group.=20

=20

Token Revocation Request

=20

The Token Revocation request has only the =E2=80=9Ctoken=E2=80=9D =
parameter with the description that the authorization server is supposed =
to detect the token type automatically.  I would like to request that an =
addition parameter =E2=80=9Ctoken_type=E2=80=9D be added to the request. =
 The =E2=80=9Ctoken_type=E2=80=9D parameter could be optional and would =
define the type of token being revoked (i.e. =E2=80=9Caccess=E2=80=9D, =
=E2=80=9Crefresh=E2=80=9D, =E2=80=9Cregistration access=E2=80=9D, etc.).

=20

The ESPI Standard was developed to support the Advanced Meter Interface =
(AMI) which is the interface used by =E2=80=9CSmart Meters=E2=80=9D to =
provide automated energy usage collection and other operational =
information about a Retail Customer=E2=80=99s residence to their Data =
Custodian.  Third Party applications will be required to obtain the =
approval if each Retail Customer that has had a =E2=80=9CSmart =
Meter=E2=80=9D installed before they will be able to access the data =
provided by their =E2=80=9CSmart Meter=E2=80=9D.  The number of =
=E2=80=9CSmart Meters=E2=80=9D currently installed at the three largest =
California utilities (Pacific Gas & Electric, Southern California =
Edison, and San Diego Gas & Electric) is in excess of 10.0 M and =
growing.  The following table indicates the number of =E2=80=9CSmart =
Meters=E2=80=9D each of the three utilities had installed as of May =
2012:

=20


Utility

=E2=80=9CSmart Meters=E2=80=9D Installed


Pacific Gas & Electric (PG&E)

4,696,000


San Diego Gas & Electric (SDG&E)

1,364,000


Southern California Edison (SCE)

3,900,000

=20

The numbers in the chart were taken from the =E2=80=9CUtility-Scale =
Smart Meter Deployments, Plans, & Proposals -- IEE Report=E2=80=9D =
published May 2012 by The Edison Foundation Institute for Electric =
Efficiency=E2=80=9D which I have attached.  The number of =E2=80=9CSmart =
Meters=E2=80=9D currently installed are even larger than shown in the =
report as I compose this email.  Assuming 10% of Pacific Gas & =
Electric=E2=80=99s Retail Customers decide to utilize a Third Party =
application (3 Third Party applications are currently supported and are =
3 more Third Party applications are preparing to be supported) in order =
to support the ability to revoke a token they would be required to track =
500,000 access tokens and 500,000 refresh tokens.  Requiring =
PG&E=E2=80=99s authorization server to =E2=80=9Cautomatically=E2=80=9D =
determine the type of Token being revoked begins to negatively impact =
their processing capability.  If the Token Revocation request was =
capable of indicating the type of Token to be revoked, the amount of =
time it will take PG&E=E2=80=99s authorization server would show a =
significant time savings to process the request.

=20

Authorization Server Revocation Policy

=20

=20

      6.       Does the revocation of the access token also revoke the =
refresh token (if it was provided) ? Or is this a revocation policy =
decision ?

=20

- if the token passed to the request is a refresh token and the server =
supports access token revocation, the server SHOULD also revoke them.
- if the token passed to the request is an access token, the server may =
decide to revoke the respective refresh token as well.

=20

I believe that if the token passed in the request is an access token, =
the server MUST revoke any respective refresh token.  Otherwise, their =
exist a potential security risk of the respective refresh token being =
used to gain access to the resources for which the access token was =
issued.  It also means the authorization server will have potential =
=E2=80=9Cjunk=E2=80=9D in the refresh token file to search through for =
any additional Token Revocation request.

=20

I look forward to receiving your response.

=20

Best regards,

Don

Donald F. Coffin

Founder/CTO

=20

REMI Networks

22751 El Prado Suite 6216

Rancho Santa Margarita, CA  92688-3836

=20

Phone:      (949) 636-8571

Email:       donald.coffin@reminetworks.com

=20









_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

=20

=20


------=_NextPart_000_0067_01CE0216.A2406BB0
Content-Type: text/html;
	charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta =
http-equiv=3DContent-Type content=3D"text/html; charset=3Dutf-8"><meta =
name=3DGenerator content=3D"Microsoft Word 14 (filtered =
medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:Helvetica;
	panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Cambria;
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:"Brush Script MT";
	panose-1:3 6 8 2 4 4 6 7 3 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
	{font-family:"Times New Roman \, serif";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	color:black;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	color:black;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:Consolas;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-priority:99;
	mso-style-link:"Balloon Text";
	font-family:"Tahoma","sans-serif";
	color:black;}
span.EmailStyle22
	{mso-style-type:personal;
	font-family:"Cambria","serif";
	color:windowtext;}
span.EmailStyle23
	{mso-style-type:personal;
	font-family:"Cambria","serif";
	color:windowtext;
	font-weight:normal;
	font-style:normal;}
span.EmailStyle24
	{mso-style-type:personal;
	font-family:"Cambria","serif";
	color:windowtext;
	font-weight:normal;
	font-style:normal;}
span.EmailStyle25
	{mso-style-type:personal;
	font-family:"Cambria","serif";
	color:windowtext;
	font-weight:normal;
	font-style:normal;}
span.EmailStyle26
	{mso-style-type:personal-reply;
	font-family:"Cambria","serif";
	color:windowtext;
	font-weight:normal;
	font-style:normal;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
/* List Definitions */
@list l0
	{mso-list-id:217783835;
	mso-list-type:hybrid;
	mso-list-template-ids:1090914056 67698689 67698691 67698693 67698689 =
67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:.75in;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:1.25in;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level3
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:1.75in;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level4
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:2.25in;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:2.75in;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level6
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:3.25in;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level7
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:3.75in;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:4.25in;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level9
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:4.75in;
	text-indent:-.25in;
	font-family:Wingdings;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue =
vlink=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>Hi Torsten,<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
><o:p>&nbsp;</o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>The Third Party will utilize an access_token they obtain utilizing the =
client_credentials to obtain data from the RS for all Retail Customers =
who have granted them access to their data.=C2=A0 Therefore, the Third =
Party will also have an access_token they obtain utilizing the =
authentication_code response_type (i.e. grant_type of code for the =
access_token) for each of the Retail Customers who have authorized them =
access to their data.<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
><o:p>&nbsp;</o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>Although an access_token will exist for the Third Party, Retail =
Customer, and RS relationship its usage will be infrequent compared to =
the access_token the Third Party obtains using the client_credentials =
grant_type.=C2=A0 This is another reason why I believe in the ESPI =
Standard implementation it will be necessary to revoke the access_token =
and refresh_token simultaneously.=C2=A0 The RS should not include in the =
data stream (covered by the client_credentials access_token) data that =
is based on the authorization_code access_token when the Retail Customer =
has indicated =C2=A0(either by alteration of the authorization scope or =
an outright revocation) the Third Party no longer is authorized to =
access the data.=C2=A0 Only revoking the refresh_token possess a =
privacy.=C2=A0 Only revoking the access_token, as you pointed out, poses =
a potential security issue allowing for the possibility of a denial of =
service attack.<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
><o:p>&nbsp;</o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>I hope this makes sense and clarifies my =
situation..<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
><o:p>&nbsp;</o:p></span></p><div><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Best =
regards,<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:24.0pt;font-family:"Brush Script =
MT","serif";color:windowtext'>Don<o:p></o:p></span></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Donald F. =
Coffin<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Founder/CTO<o:p></o:p></span>=
</p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'><o:p>&nbsp;</o:p></span></p><=
p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>REMI =
Networks<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>22751 El Prado Suite =
6216<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Rancho Santa Margarita, =
CA=C2=A0 92688-3836<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'><o:p>&nbsp;</o:p></span></p><=
p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Phone:=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 (949) 636-8571<o:p></o:p></span></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Email:=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 <a href=3D"mailto:donald.coffin@reminetworks.com"><span =
style=3D'color:blue'>donald.coffin@reminetworks.com</span></a><o:p></o:p>=
</span></p></div><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
><o:p>&nbsp;</o:p></span></p><div><div =
style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in'><p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowt=
ext'>From:</span></b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowt=
ext'> Torsten Lodderstedt [mailto:torsten@lodderstedt.net] =
<br><b>Sent:</b> Sunday, February 03, 2013 1:14 PM<br><b>To:</b> Donald =
F Coffin<br><b>Cc:</b> George Fletcher; John Adkins; Scott Crowder; Dave =
Robin; John Teeter; &lt;pmadsen@pingidentity.com&gt;; Edward Denson; =
Marty Burns; Uday Verma; Ray Perlner; Anne Hendry; Lynne Rodoni; =
&lt;oauth@ietf.org&gt;<br><b>Subject:</b> Re: [OAUTH-WG] =
draft-ietf-oauth-revocation-04<o:p></o:p></span></p></div></div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p><div><p class=3DMsoNormal>Hi =
Donald,<o:p></o:p></p></div><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><div><p =
class=3DMsoNormal>Thanks for the clarification. Let me see whether I got =
you right. Although the retail customer has to authorize the access by =
the 3rd party application, there is no external representation of this =
authorization grant (e.g a refresh token). Instead, the actual access =
token is issued based on client credentials. Is there any correlation =
between the access token and the particular =
customer?<o:p></o:p></p></div><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><div><p =
class=3DMsoNormal>Please note: we highly appreciate your feedback as an =
implementer.<o:p></o:p></p></div><div><p =
class=3DMsoNormal><o:p>&nbsp;</o:p></p></div><div><p =
class=3DMsoNormal>Best regards,<o:p></o:p></p></div><div><p =
class=3DMsoNormal>Torsten.<o:p></o:p></p></div><div><p class=3DMsoNormal =
style=3D'margin-bottom:12.0pt'><br>Am 03.02.2013 um 21:45 schrieb =
&quot;Donald F Coffin&quot; &lt;<a =
href=3D"mailto:donald.coffin@reminetworks.com">donald.coffin@reminetworks=
.com</a>&gt;:<o:p></o:p></p></div><blockquote =
style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><div><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>Hi Torsten,</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>&nbsp;</span><o:p></o:p></p><div><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Best =
regards,</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:24.0pt;font-family:"Brush Script =
MT","serif";color:windowtext'>Don</span><o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Donald F. =
Coffin</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Founder/CTO</span><o:p></o:p>=
</p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>&nbsp;</span><o:p></o:p></p><=
p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>REMI =
Networks</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>22751 El Prado Suite =
6216</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Rancho Santa Margarita, =
CA&nbsp; 92688-3836</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>&nbsp;</span><o:p></o:p></p><=
p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Phone:&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; (949) 636-8571</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;color:windowtext'>Email:&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; <a =
href=3D"mailto:donald.coffin@reminetworks.com">donald.coffin@reminetworks=
.com</a></span><o:p></o:p></p></div><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>&nbsp;</span><o:p></o:p></p><div><div =
style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in'><p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowt=
ext'>From:</span></b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowt=
ext'> Torsten Lodderstedt [<a =
href=3D"mailto:torsten@lodderstedt.net">mailto:torsten@lodderstedt.net</a=
>] <br><b>Sent:</b> Sunday, February 03, 2013 4:20 AM<br><b>To:</b> =
Donald F Coffin<br><b>Cc:</b> 'George Fletcher'; 'John Adkins'; 'Scott =
Crowder'; 'Dave Robin'; 'John Teeter'; <a =
href=3D"mailto:pmadsen@pingidentity.com">pmadsen@pingidentity.com</a>; =
'Edward Denson'; 'Marty Burns'; 'Uday Verma'; 'Ray Perlner'; 'Anne =
Hendry'; 'Lynne Rodoni'; <a =
href=3D"mailto:oauth@ietf.org">oauth@ietf.org</a><br><b>Subject:</b> Re: =
[OAUTH-WG] =
draft-ietf-oauth-revocation-04</span><o:p></o:p></p></div></div><p =
class=3DMsoNormal>&nbsp;<o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-bottom:12.0pt'>Hi Donald,<o:p></o:p></p><div><p =
class=3DMsoNormal>Am 03.02.2013 12:57, schrieb Donald F =
Coffin:<o:p></o:p></p></div><blockquote =
style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><p =
class=3DMsoNormal><span style=3D'font-size:12.0pt;font-family:"Times New =
Roman","serif"'>&lt;snip&gt; </span><o:p></o:p></p><div><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>&nbsp;</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in;text-indent:-.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>[Don] A typical Third Party application built to use the ESPI Standard =
will interact with a Retail Customer and their energy provider.&nbsp; =
The nature of interaction with the Retail Customer will utilize short =
interactive sessions.&nbsp; However, the interaction with their energy =
provider will require the application obtain new energy information for =
the previous 24-hours once a day.&nbsp; Therefore, I anticipate =
access_tokens will be granted for long periods of time as well as any =
supporting refresh_tokens.&nbsp; Because of the amount of data being =
exchanged between the Third Party application and the energy provider, =
both in number of retail customers and the amount of energy meter data, =
it will be necessary to minimize the amount of =
=E2=80=9Cadministrative=E2=80=9D traffic required in the exchange.&nbsp; =
Therefore, although I understand the use case you described, I =
anticipate such an implementation would be rare.&nbsp; =
</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in;text-indent:-.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>&nbsp;</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>The need to perform an audience style check to prevent exposure of the =
AS to a denial of service attack, appears primarily due to the fact the =
Revocation RFC requires an access_token and refresh_token to be revoked =
independently.&nbsp; Should a client need to revoke both Tokens the =
sequence of the revocation request is extremely significant.&nbsp; A =
simple solution to this problem would be to provide a method that allows =
a request to revoke both tokens simultaneously, as stated in one of the =
responses you referenced in the archives.&nbsp; </span><o:p></o:p></p><p =
class=3DMsoNormal style=3D'margin-left:.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>&nbsp;</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>The example you gave in your response demonstrating how a denial of =
service attack might occur is incorrect.&nbsp; You said =E2=80=9Cif the =
AS revokes the refresh_token when an access_token is revoked, I can =
steal an access_token and send it to the revocation endpoint causing the =
real client=E2=80=99s refresh_token to be revoked=E2=80=9D.&nbsp; I fail =
to see how that could occur, since the AS revoked both the access_token =
and the refresh_token when it received the request to revoke the =
access_token.&nbsp; Rather than explaining why a refresh_token =
shouldn=E2=80=99t be revoked concurrently when an access_token is =
revoked, your example does the exact opposite.&nbsp; It shows why a =
refresh_token should be revoked concurrently when an access_token is =
revoked.</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>&nbsp;</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;mar=
gin-left:.5in;text-indent:-.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:#0070C0'>[D=
on] The focus of the <b>ESPI Standard</b> is to provide Retail =
Customer=E2=80=99s with access to a single UsagePoint (i.e. their Smart =
Meter).&nbsp; Therefore an access and refresh token will be tightly =
correlated with the type and frequency of data the Smart Meter =
provides.&nbsp; There are only a few reasons defined within the <b>ESPI =
Standard</b> list of use cases that will require the <b>Token =
Revocation</b> request to be issued.&nbsp; The following summarizes the =
situations that require a <b>Token Revocation =
</b>request:</span><o:p></o:p></p><p class=3DMsoListParagraph =
style=3D'mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;mar=
gin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo2'><![if =
!supportLists]><span style=3D'font-family:Symbol'><span =
style=3D'mso-list:Ignore'>=C2=B7<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:#0070C0'>A =
Third Party application wishes to terminate their relationship with a =
Retail Customer.</span><o:p></o:p></p><p class=3DMsoListParagraph =
style=3D'mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;mar=
gin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo2'><![if =
!supportLists]><span style=3D'font-family:Symbol'><span =
style=3D'mso-list:Ignore'>=C2=B7<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:#0070C0'>A =
Third Party application wishes to terminate their relationship with a =
Data Custodian.</span><o:p></o:p></p><p class=3DMsoListParagraph =
style=3D'mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;mar=
gin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo2'><![if =
!supportLists]><span style=3D'font-family:Symbol'><span =
style=3D'mso-list:Ignore'>=C2=B7<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:#0070C0'>A =
Retail Customer wishes to terminate their relationship with a Third =
Party application.</span><o:p></o:p></p><p class=3DMsoListParagraph =
style=3D'mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;mar=
gin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo2'><![if =
!supportLists]><span style=3D'font-family:Symbol'><span =
style=3D'mso-list:Ignore'>=C2=B7<span style=3D'font:7.0pt "Times New =
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></span></span><![endif]><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:#0070C0'>A =
Retail Customer wishes to change the data (i.e. scope) a Third Party =
application has permission to access.</span><o:p></o:p></p><p =
class=3DMsoNormal =
style=3D'mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;mar=
gin-left:.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:#0070C0'>In=
 none of the above situations will it be valid to retain a refresh =
token, which I realize is implementation dependent, due to the nature of =
the <b>ESPI Standard.</b></span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;mar=
gin-left:.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:#0070C0'>Pe=
rhaps the section on the <b>Server=E2=80=99s Revocation Policy</b> =
should address a few of the reasons why a client may want or need to =
revoke a token.&nbsp; The current description provides no consideration =
for the relationship between tokens and scope, although there clearly is =
a relationship.</span><o:p></o:p></p></div><div><p =
class=3DMsoNormal><span style=3D'font-size:12.0pt'>I'm confident client =
or resource owner would revoke refresh (and not access) tokens in all =
use cases you listed above. In my opinion, access tokens are revoked =
only if the authorization server does not support refresh tokens and =
therefore uses long term access tokens or in high-security =
applications.</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>&nbsp;</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in;text-indent:-.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>[Don] Based on the above statement it would appear you assume an access =
token is only valid for a short period of time.&nbsp; However, as I =
explained in my last response, due to the nature of the access required =
by the client and the manner in which the RS provides that data, access =
token durations will typically be in days not minutes. =
&nbsp;&nbsp;Therefore, merely revoking a refresh_token will expose the =
data to access that the resource owner meant to prevent unless the =
access_token is also revoked.</span><o:p></o:p></p></div></blockquote><p =
class=3DMsoNormal style=3D'margin-left:.5in;text-indent:-.5in'><span =
style=3D'font-size:12.0pt;font-family:"Times New Roman","serif"'><br>I =
don't understand why access tokens need such a long duration in your =
scenario, even if the client needs to obtain energy data once a day. Any =
client can (potentially) obtain a new access token at any time if the =
access token expires if the authorization server issues corresponding =
refresh tokens. So even in your scenario, access tokens could have a =
short duration. If you want to issue long-living access tokens in order =
to minimize load on the authorization servers, then you have to consider =
the extra complexitity and load required to notify resource servers of =
access token revocation. It's a tradeoff decision, which we tried to =
describe in <a =
href=3D"http://tools.ietf.org/html/draft-ietf-oauth-revocation-04#section=
-3">http://tools.ietf.org/html/draft-ietf-oauth-revocation-04#section-3</=
a>. <br><br><br></span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>&nbsp;</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in;text-indent:-.5in'><span =
style=3D'font-size:12.0pt;font-family:"Times New =
Roman","serif";color:windowtext'>[Don] A critical fact I omitted in my =
last response is the data obtained on a daily basis by a Third Party =
application will utilize an access_token obtained using the =
client_credentials grant_type.&nbsp; Therefore no refresh_token will be =
issued with the access_token.&nbsp; The ESPI Standard requires the =
Retail Customer (resource owner) and the RS to be notified whenever an =
authorization is modified or revoked by either the Third Party (client) =
or Retail Customer (resource owner).&nbsp; Therefore, the tradeoff =
decision has already been made.</span><o:p></o:p></p><p =
class=3DMsoNormal style=3D'margin-left:.5in;text-indent:-.5in'><span =
style=3D'font-size:12.0pt;font-family:"Times New =
Roman","serif";color:windowtext'>&nbsp;</span><o:p></o:p></p><p =
class=3DMsoNormal style=3D'margin-left:.5in'><span =
style=3D'font-size:12.0pt;font-family:"Times New =
Roman","serif";color:windowtext'>I personally feel that short lived =
access_tokens provide greater security, but in discussions with several =
utilities who have the responsibility of supporting the AS and RS =
functionality, they currently are planning on implementing long duration =
access_tokens.&nbsp; This view may change once the begin to implement =
=E2=80=9CConnect My Data=E2=80=9D solutions, but that again is an =
implementation feature, which is beyond the scope of my groups current =
work product.</span><span style=3D'font-size:12.0pt;font-family:"Times =
New Roman","serif"'><br><br><br></span><o:p></o:p></p><div><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>&nbsp;</span><o:p></o:p></p></div><div><p =
class=3DMsoNormal><span style=3D'font-size:12.0pt'>I would also like to =
hear the opinion of other WG members on this =
topic.</span><o:p></o:p></p></div><div><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>&nbsp;</span><o:p></o:p></p></div><blockquote =
style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=3DMsoNormal =
style=3D'margin-bottom:12.0pt'><span =
style=3D'font-family:"Helvetica","sans-serif"'>3. If the standard OAuth =
spec does not provide enough control, your profile of OAuth2 for the =
ESPI can tighten it to provide the protections =
desired.</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;mar=
gin-left:.5in;text-indent:-.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:#0070C0'>[D=
on] I am aware we can provide additional parameters required to =
integrate <b>OAuth 2.0 </b>with the <b>ESPI Standard</b> by submitting =
those parameter values to the <b>OAuth Parameters</b> registry. I would =
prefer not to do that, given the large amount of work being done on =
RFC-drafts to resolve many of the issues we are facing to integrate =
<b>OAuth 2.0</b> with the <b>ESPI Standard</b>, since the need to use =
those extensions will most likely be short =
lived.</span><o:p></o:p></p></div></blockquote><div><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>&nbsp;</span><o:p></o:p></p></div><p =
class=3DMsoNormal><span style=3D'font-size:12.0pt'>Hmmm, if the need is =
only short lived, why do you want to make it part of the long living =
revocation RFC?</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>&nbsp;</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:.5in;text-indent:-.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>[Don] My response was to the suggestion that if the OAuth specification =
does not provide enough control then the ESPI profile of OAuth 2.0 could =
tighten it to provide the protections desired.&nbsp; I assumed George =
meant we could add additional =E2=80=9Ccompany=E2=80=9D based =
parameters, which requires us to register them with the =E2=80=9COAuth =
Parameter Registry=E2=80=9D.&nbsp; I meant the usage of such =
=E2=80=9Ccompany=E2=80=9D parameters would be short =
termed.</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Times New =
Roman","serif"'><br>Understood.<br><br><br><br></span><o:p></o:p></p><p =
class=3DMsoNormal style=3D'margin-left:.5in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>I do not view the need to identify the type of token being revoked as =
=E2=80=9Cshort term=E2=80=9D.&nbsp; Even the previous exchanges on the =
topic within the WG indicates it feels there may be a need to add an =
additional parameter to the request.&nbsp; However, because the draft is =
too far along, the WG seems to prefer releasing an RFC they =
=E2=80=9Csuspect=E2=80=9D will need to be adjusted and let the =
implementers confirm their suspicions.&nbsp;&nbsp; This seems to be a =
very selfish and rather foolish attitude given we are discussing a =
security protocol.&nbsp; Not to mention it would seem easier and faster =
to add an additional =E2=80=9Coptional=E2=80=9D parameter now, rather =
than requiring another RFC cycle. &nbsp;A parameter I sensed in reading =
the archives the WG feels will very likely need to be added in the =
future.</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Times New =
Roman","serif"'><br>Since this is a WG item, it is up to the WG to =
decide.</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>&nbsp;</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif";color:windowtext'=
>[Don] I fully understand it is the WG=E2=80=99s decision.&nbsp; I am =
only providing my opinion as an implementer, who the WG desires to =
obtain feedback from before making the final =
decision.</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Times New =
Roman","serif"'><br><br>regards,<br>Torsten.<br><br><br><br></span><o:p><=
/o:p></p><div><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt'><br><br><br><br></span><o:p></o:p></p><div><p =
class=3DMsoNormal style=3D'margin-bottom:12.0pt'><span =
style=3D'font-family:"Helvetica","sans-serif"'>Thanks,<br>George</span><o=
:p></o:p></p><div><p class=3DMsoNormal>On 1/29/13 3:28 PM, Donald F =
Coffin wrote:<o:p></o:p></p></div><blockquote =
style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>Hi =
Thorsten,</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>I am working =
with the OpenADE Task Force to document how the =E2=80=9C<b><i>Energy =
Service Provider Interface (ESPI) Standard</i></b> =E2=80=9D published =
by the <b>North American Energy Standards Board</b> (NAESB) in October =
of 2011 should be implemented.&nbsp; The <b>ESPI Standard</b> defines =
how Retail Customers, Third Party applications, and Data Custodians =
(i.e. electrical, gas, or water utility) must interface to each other =
and the data format used to exchange energy information.&nbsp; &nbsp;The =
interface between the Retail Customer and the Data Custodian is known as =
=E2=80=9C<b>Download My Data</b>=E2=80=9D, which defines how a Retail =
Customer receives their energy information in an XML file downloaded to =
them by the Data Custodian.&nbsp; The interface between the Third Party =
application and the Data Custodian is known as =E2=80=9C<b>Connect My =
Data</b>=E2=80=9D, which defines the message exchanges between the Third =
Party application and the Data Custodian to allow the Third Party to =
access data at the Data Custodian after a Retail Customer has granted =
the Third Party application access.</span><o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>It is my =
responsibility within the OpenADE Task Force to document the integration =
of the <b>OAuth 2.0</b> protocol with the <b>ESPI Standard.</b>&nbsp; =
Since the <b>ESPI Standard</b> requires Retail Customers, Third Party =
applications, and Data Custodians to revoke Tokens (i.e. Access and =
Refresh Tokens) I am very interested in the =E2=80=9C<b><i>Token =
Revocation (draft-ietf-oath-revocation-xx)</i></b>=E2=80=9D work being =
done by you and your working group. </span><o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoNormal><b><u><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>Token =
Revocation Request</span></u></b><o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>The <b>Token =
Revocation</b> request has only the =E2=80=9Ctoken=E2=80=9D parameter =
with the description that the authorization server is supposed to detect =
the token type automatically.&nbsp; I would like to request that an =
addition parameter =E2=80=9Ctoken_type=E2=80=9D be added to the =
request.&nbsp; The =E2=80=9Ctoken_type=E2=80=9D parameter could be =
optional and would define the type of token being revoked (i.e. =
=E2=80=9Caccess=E2=80=9D, =E2=80=9Crefresh=E2=80=9D, =
=E2=80=9Cregistration access=E2=80=9D, etc.).</span><o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>The <b>ESPI =
Standard</b> was developed to support the <b>Advanced Meter =
Interface</b> <b>(AMI) </b>which is the interface used by =E2=80=9CSmart =
Meters=E2=80=9D to provide automated energy usage collection and other =
operational information about a Retail Customer=E2=80=99s residence to =
their Data Custodian.&nbsp; Third Party applications will be required to =
obtain the approval if each Retail Customer that has had a =
=E2=80=9CSmart Meter=E2=80=9D installed before they will be able to =
access the data provided by their =E2=80=9CSmart Meter=E2=80=9D.&nbsp; =
The number of =E2=80=9CSmart Meters=E2=80=9D currently installed at the =
three largest California utilities (Pacific Gas &amp; Electric, Southern =
California Edison, and San Diego Gas &amp; Electric) is in excess of =
10.0 M and growing.&nbsp; The following table indicates the number of =
=E2=80=9CSmart Meters=E2=80=9D each of the three utilities had installed =
as of May 2012:</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><table class=3DMsoNormalTable border=3D0 cellspacing=3D0 =
cellpadding=3D0 =
style=3D'margin-left:66.2pt;border-collapse:collapse'><tr><td =
width=3D319 valign=3Dtop style=3D'width:239.4pt;border:solid windowtext =
1.0pt;background:#A6A6A6;padding:0in 5.4pt 0in 5.4pt'><p =
class=3DMsoNormal align=3Dcenter style=3D'text-align:center'><b><span =
style=3D'font-size:14.0pt;font-family:"Cambria","serif"'>Utility</span></=
b><o:p></o:p></p></td><td width=3D319 valign=3Dtop =
style=3D'width:239.4pt;border:solid windowtext =
1.0pt;border-left:none;background:#A6A6A6;padding:0in 5.4pt 0in =
5.4pt'><p class=3DMsoNormal align=3Dcenter =
style=3D'text-align:center'><b><span =
style=3D'font-size:14.0pt;font-family:"Cambria","serif"'>=E2=80=9CSmart =
Meters=E2=80=9D Installed</span></b><o:p></o:p></p></td></tr><tr><td =
width=3D319 valign=3Dtop style=3D'width:239.4pt;border:solid windowtext =
1.0pt;border-top:none;padding:0in 5.4pt 0in 5.4pt'><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>Pacific Gas =
&amp; Electric (PG&amp;E)</span><o:p></o:p></p></td><td width=3D319 =
valign=3Dtop =
style=3D'width:239.4pt;border-top:none;border-left:none;border-bottom:sol=
id windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in =
5.4pt 0in 5.4pt'><p class=3DMsoNormal align=3Dright =
style=3D'text-align:right'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>4,696,000</span>=
<o:p></o:p></p></td></tr><tr><td width=3D319 valign=3Dtop =
style=3D'width:239.4pt;border:solid windowtext =
1.0pt;border-top:none;padding:0in 5.4pt 0in 5.4pt'><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>San Diego Gas =
&amp; Electric (SDG&amp;E)</span><o:p></o:p></p></td><td width=3D319 =
valign=3Dtop =
style=3D'width:239.4pt;border-top:none;border-left:none;border-bottom:sol=
id windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in =
5.4pt 0in 5.4pt'><p class=3DMsoNormal align=3Dright =
style=3D'text-align:right'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>1,364,000</span>=
<o:p></o:p></p></td></tr><tr><td width=3D319 valign=3Dtop =
style=3D'width:239.4pt;border:solid windowtext =
1.0pt;border-top:none;padding:0in 5.4pt 0in 5.4pt'><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>Southern =
California Edison (SCE)</span><o:p></o:p></p></td><td width=3D319 =
valign=3Dtop =
style=3D'width:239.4pt;border-top:none;border-left:none;border-bottom:sol=
id windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in =
5.4pt 0in 5.4pt'><p class=3DMsoNormal align=3Dright =
style=3D'text-align:right'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>3,900,000</span>=
<o:p></o:p></p></td></tr></table><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>The numbers in =
the chart were taken from the =E2=80=9C<b><i>Utility-Scale Smart Meter =
Deployments, Plans, &amp; Proposals -- IEE Report</i></b>=E2=80=9D =
published May 2012 by <b>The Edison Foundation Institute for Electric =
Efficiency=E2=80=9D </b>which I have attached.&nbsp; The number of =
=E2=80=9CSmart Meters=E2=80=9D currently installed are even larger than =
shown in the report as I compose this email.&nbsp; Assuming 10% of =
Pacific Gas &amp; Electric=E2=80=99s Retail Customers decide to utilize =
a Third Party application (3 Third Party applications are currently =
supported and are 3 more Third Party applications are preparing to be =
supported) in order to support the ability to revoke a token they would =
be required to track 500,000 access tokens and 500,000 refresh =
tokens.&nbsp; Requiring PG&amp;E=E2=80=99s authorization server to =
=E2=80=9Cautomatically=E2=80=9D determine the type of Token being =
revoked begins to negatively impact their processing capability.&nbsp; =
If the <b>Token Revocation</b> request was capable of indicating the =
type of Token to be revoked, the amount of time it will take =
PG&amp;E=E2=80=99s authorization server would show a significant time =
savings to process the request.</span><o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoNormal><b><u><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>Authorization =
Server Revocation Policy</span></u></b><o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoListParagraph =
style=3D'text-indent:-.25in'><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp; </span>6.<span =
style=3D'font-size:7.0pt;font-family:"Times New Roman , =
serif","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Does the =
revocation of the access token also revoke the refresh token (if it was =
provided) ? Or is this a revocation policy decision ?<o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoNormal style=3D'margin-left:1.0in'><span =
style=3D'font-size:12.0pt;font-family:"Times New Roman , =
serif","serif"'>- if the token passed to the request is a refresh token =
and the server supports access token revocation, the server SHOULD also =
revoke them.<br>- if the token passed to the request is an access token, =
the server may decide to revoke the respective refresh token as =
well.</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:1.0in'><span =
style=3D'font-size:12.0pt;font-family:"Times New Roman , =
serif","serif"'>&nbsp;</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:1.0in'><span =
style=3D'font-size:12.0pt;font-family:"Times New Roman , =
serif","serif"'>I believe that if the token passed in the request is an =
access token, the server MUST revoke any respective refresh token.&nbsp; =
Otherwise, their exist a potential security risk of the respective =
refresh token being used to gain access to the resources for which the =
access token was issued.&nbsp; It also means the authorization server =
will have potential =E2=80=9Cjunk=E2=80=9D in the refresh token file to =
search through for any additional Token Revocation =
request.</span><o:p></o:p></p><p class=3DMsoNormal =
style=3D'margin-left:1.0in'><span =
style=3D'font-size:12.0pt;font-family:"Times New Roman , =
serif","serif"'>&nbsp;</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Times New Roman , =
serif","serif"'>I look forward to receiving your =
response.</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Cambria","serif"'>&nbsp;</span><o:=
p></o:p></p><p class=3DMsoNormal><span style=3D'font-size:12.0pt'>Best =
regards,</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:24.0pt;font-family:"Brush Script =
MT","serif"'>Don</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>Donald F. Coffin</span><o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>Founder/CTO</span><o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>&nbsp;</span><o:p></o:p></p><p =
class=3DMsoNormal><span style=3D'font-size:12.0pt'>REMI =
Networks</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>22751 El Prado Suite =
6216</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>Rancho Santa Margarita, CA&nbsp; =
92688-3836</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>&nbsp;</span><o:p></o:p></p><p =
class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>Phone:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (949) =
636-8571</span><o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt'>Email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a =
href=3D"mailto:donald.coffin@reminetworks.com">donald.coffin@reminetworks=
.com</a></span><o:p></o:p></p><p =
class=3DMsoNormal>&nbsp;<o:p></o:p></p><p class=3DMsoNormal><span =
style=3D'font-size:12.0pt;font-family:"Times New Roman , =
serif","serif"'><br><br><br><br><br><br></span><o:p></o:p></p><pre>______=
_________________________________________<o:p></o:p></pre><pre>OAuth =
mailing list<o:p></o:p></pre><pre><a =
href=3D"mailto:OAuth@ietf.org">OAuth@ietf.org</a><o:p></o:p></pre><pre><a=
 =
href=3D"https://www.ietf.org/mailman/listinfo/oauth">https://www.ietf.org=
/mailman/listinfo/oauth</a><o:p></o:p></pre></blockquote><p =
class=3DMsoNormal><span style=3D'font-size:12.0pt;font-family:"Times New =
Roman , serif","serif"'>&nbsp;</span><o:p></o:p></p></div></div><p =
class=3DMsoNormal><span style=3D'font-size:12.0pt;font-family:"Times New =
Roman","serif"'>&nbsp;</span><o:p></o:p></p></div></blockquote></div></bo=
dy></html>
------=_NextPart_000_0067_01CE0216.A2406BB0--

