
From nobody Mon Jul 11 14:31:56 2016
Return-Path: <paulej@packetizer.com>
X-Original-To: webfinger@ietfa.amsl.com
Delivered-To: webfinger@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 39B2812D0C3 for <webfinger@ietfa.amsl.com>; Mon, 11 Jul 2016 14:31:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.288
X-Spam-Level: 
X-Spam-Status: No, score=-3.288 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RP_MATCHES_RCVD=-1.287, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=packetizer.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4Fhs2PrAuBjg for <webfinger@ietfa.amsl.com>; Mon, 11 Jul 2016 14:31:53 -0700 (PDT)
Received: from dublin.packetizer.com (dublin.packetizer.com [75.101.130.125]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4472312D0B7 for <webfinger@ietf.org>; Mon, 11 Jul 2016 14:31:53 -0700 (PDT)
Received: from [192.168.1.20] (cpe-098-122-181-215.nc.res.rr.com [98.122.181.215] (may be forged)) (authenticated bits=0) by dublin.packetizer.com (8.15.2/8.15.2) with ESMTPSA id u6BLVled030567 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 11 Jul 2016 17:31:47 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=packetizer.com; s=dublin; t=1468272708; bh=5c0vPvlhliQpy9Mo8UkDKJpGCFe2kyALXNBQ+UaG2ko=; h=From:To:Subject:Date:In-Reply-To:References:Reply-To; b=SXnVNpWQjUXLUwUMpvbanZxnzmJrzqPnlr5JXoIgW83f+i2lYOicCHjFlnrM9Lfmg cq7CjDX8Vro2l+rZLIX3Abs29C8YxRkuPUGdeOYviFWuPfYzyCt7YO7o/F9yAMNfhy c0yxbq1/jZ+cxEJoxPwul3KrwS1D9+xldViBlmqk=
From: "Paul E. Jones" <paulej@packetizer.com>
To: "Marten Gajda" <marten@dmfs.org>, "webfinger@ietf.org" <webfinger@ietf.org>
Date: Mon, 11 Jul 2016 21:31:52 +0000
Message-Id: <em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney>
In-Reply-To: <57587369.20405@dmfs.org>
References: <em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki> <575197C1.3090102@dmfs.org> <39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com> <575492E1.2000805@dmfs.org> <57587369.20405@dmfs.org>
User-Agent: eM_Client/7.0.26482.0
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="------=_MBA22A7604-4F2C-4CD5-9240-2B950ECCDE72"
X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.6 (dublin.packetizer.com [10.137.60.122]); Mon, 11 Jul 2016 17:31:48 -0400 (EDT)
Archived-At: <https://mailarchive.ietf.org/arch/msg/webfinger/eAKL6UMsTj8Y-SjfjcsPoI3HWe4>
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via WebFinger
X-BeenThere: webfinger@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
Reply-To: "Paul E. Jones" <paulej@packetizer.com>
List-Id: Discussion of the Webfinger protocol proposal in the Applications Area <webfinger.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webfinger>, <mailto:webfinger-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webfinger/>
List-Post: <mailto:webfinger@ietf.org>
List-Help: <mailto:webfinger-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webfinger>, <mailto:webfinger-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 11 Jul 2016 21:31:56 -0000

--------=_MBA22A7604-4F2C-4CD5-9240-2B950ECCDE72
Content-Type: text/plain; format=flowed; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Marten,

Sorry to just be coming back to this after a whole month passed.

What current draft?  Did you write one that I missed?  Or are these=20
requirements for the draft you would like to see?

Paul

------ Original Message ------
From: "Marten Gajda" <marten@dmfs.org>
To: "webfinger@ietf.org" <webfinger@ietf.org>
Sent: 6/8/2016 3:35:05 PM
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via=20
WebFinger

>All,
>
>I've created a GitHub repository to track open issues with the current=20
>draft, see https://github.com/CalConnect/AUTODISCOVERY/issues
>You're welcome to contribute to the discussion, either by creating a=20
>new issue or by commenting on an existing one.
>
>Thanks,
>
>Marten
>
>Am 05.06.2016 um 23:00 schrieb Marten Gajda:
>>I think OpenID Connect already covers the discovery of everything you=20
>>need to do OAuth2. That involves Webfinger, but there is no need to=20
>>protect this request, because it doesn't contain personal information.
>>So we don't need to reinvent the OAuth2 bootstrapping sequence.
>>The only minor issue I see is that you may have to ask the user twice=20
>>to grant access. Once to authorize the client to access the=20
>>configuration document and another time to authorize the client to=20
>>access the individual services. The second step is necessary, because=20
>>the scope tokens of these services are not known when the first=20
>>authorization request is presented to the user. The problem with that=20
>>is, there doesn't seem to be a mechanism to broaden scope, without=20
>>allowing the user to switch to a different account. To get access to=20
>>the individual services, the client needs to start another=20
>>authorization code grant. But the user is always free to log out and=20
>>log in with a different account before granting access.
>>
>>Marten
>>
>>Am 03.06.2016 um 20:13 schrieb George Fletcher:
>>>Did a quick scan of the draft document. Given that more and more=20
>>>systems are trying to remove the need for passwords, it seems like=20
>>>the final solution needs to support 2FA and biometric mechanisms for=20
>>>"HTTP authentication". I definitely would not want the webfinger=20
>>>instance releasing my config data without my "authentication". I=20
>>>suppose OAuth2 could be used to protect the webfinger APIs though=20
>>>there is a bit of a chicken-and-egg here:)
>>>
>>>I kind of like the suggestion around returning a 401 with data in the=
=20
>>>WWW-Authenticate header on where to get a token to use with the API.=20
>>>This would allow the client to start and OAuth2 flow with the=20
>>>Authorization Server specified and that would give the user a clear=20
>>>indication of what password/credentials are being requested. Once the=
=20
>>>client gets the token, it uses it with the webfinger call and now the=
=20
>>>service-configuration data is returned because the token is the=20
>>>authorization for the specified id.
>>>
>>>Thanks,
>>>George
>>>
>>>On 6/3/16 10:44 AM, Marten Gajda wrote:
>>>>Note that the idea behind=20
>>>>https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03=
=20
>>>>is to put the service configuration for all services of a provider=20
>>>>into a single document.
>>>>
>>>>So you would receive something like this:
>>>>
>>>>{
>>>>     "rel " :  "service-configuration",
>>>>     "href " : "https://example.com/service-configuration"
>>>>}
>>>>
>>>>If a user uses the same account identifier at another provider the=20
>>>>Webfinger request could return their configuration too (given there=20
>>>>is some mechanism to add it and the provider actually supports=20
>>>>that).
>>>>
>>>>{
>>>>     "rel " :  "service-configuration",
>>>>     "href " : "https://example.com/service-configuration"
>>>>},
>>>>{
>>>>     "rel " :  "service-configuration",
>>>>     "href " : "https://acme-calendar.com/service-configuration"
>>>>}
>>>>
>>>>Without that it would be more difficult to setup your account at=20
>>>>acme-calendar.com with your login "user@example.com".=20
>>>>acme-calendar.com would have to issue some kind of user-identifier=20
>>>>like user@acme-calendar.com for auto-configuration purposes, even=20
>>>>though you don't use it for authentication (because you use=20
>>>>user@exampe.com for authentication). I think that's the idea behind=20
>>>>the `acct:` URI scheme, but I don't think that you can explain to=20
>>>>users why they need another user identifier and when to use one or=20
>>>>the other.
>>>>But that also raises the privacy concerns I mentioned earlier. If=20
>>>>the request is not authenticated, everyone could see that you have=20
>>>>an account at acme-calendar.com.
>>>>
>>>>Regarding SSO: There is an RFC that extends SASL based=20
>>>>authentication to support the token authentication mechanisms as=20
>>>>used by OAuth1 and OAuth2, see https://tools.ietf.org/html/rfc7628
>>>>So SSO already works with IMAP, POP3 and SMTP.
>>>>
>>>>Cheers
>>>>
>>>>Marten
>>>>
>>>>
>>>>
>>>>Am 03.06.2016 um 15:40 schrieb Paul E. Jones:
>>>>>Marten,
>>>>>
>>>>>
>>>>>>So how would the UI work?
>>>>>>
>>>>>>1) User enters user identifier, most likely an email address, like=
=20
>>>>>>mailto:user@example.com and hits "next"
>>>>>>
>>>>>>2) Client sends a Webfinger request to=20
>>>>>>https://exampe.com/.well-known/webfinger?... to see if there is a=20
>>>>>>configuration document
>>>>>>
>>>>>>   -> response 404 Not Found
>>>>>>    a) Client falls back to "manual setup" or another=20
>>>>>>auto-configuration mechanism
>>>>>>
>>>>>>   -> response 401 Unauthorized
>>>>>
>>>>>One should not get 401 querying the WebFinger information for the=20
>>>>>user.  What should happen is that the server should return a JSON=20
>>>>>object that contains a link relation that might look like this:
>>>>>{
>>>>>     "rel " :  "mail-config",
>>>>>     "href " :=20
>>>>>"https://mailserver.example.com/config?user=3Dpaulej%40packetizer.com"
>>>>>}
>>>>>
>>>>>Or something like that.  The mail client should query that URI it=20
>>>>>is that one that should result in a potential 401.  The JSON format=
=20
>>>>>that would come back here would need to be something we define.  It=
=20
>>>>>could be based on JRD, but would not have to be.
>>>>>
>>>>>Otherwise, I think the flow looks right.
>>>>>
>>>>>
>>>>>>
>>>>>>    b) Client asks for password at "example.com" and goes back to=20
>>>>>>step 2 (this time with authentication)
>>>>>>
>>>>>>   -> response 200 Ok
>>>>>>    c) client moves on to next step
>>>>>>
>>>>>>3) (optional) Client presents found services to the user to let=20
>>>>>>him select the services to set up
>>>>>>
>>>>>>4) Client runs the setup handler for each selected service
>>>>>>
>>>>>>
>>>>>>I think in general that could work but it raises two questions:
>>>>>>
>>>>>>1) How to make sure the user really understands that he's=20
>>>>>>authenticating at example.com in step 2b? If the user tries to=20
>>>>>>configure calendar sync with "acme-calendar.com" where his login=20
>>>>>>happens to be mailto:user@example.com he might not be prepared to=20
>>>>>>being asked for his example.com password. Maybe I'm just paranoid=20
>>>>>>or overcautious, but I think that it might easily happen that the=20
>>>>>>users sends his acme-calendar.com password to example.com in that=20
>>>>>>case (since Basic authentication is still the most common=20
>>>>>>mechanism, the client basically sends the password in plain text).
>>>>>
>>>>>Yeah, that's a valid concern.  The only thing I can suggest is that=
=20
>>>>>the Subject CN from the certificate is presented to the user. =20
>>>>>Alternatively, there could be two passwords: one that is the=20
>>>>>"configuration password" and one that is the email password. =20
>>>>>However, I don't think two passwords will help us.  If I want to=20
>>>>>hack somebody and can gain access to their WF config, I can=20
>>>>>auto-config their email client to point to my own IMAP server and=20
>>>>>just retrieve the password that way.
>>>>>
>>>>>So, I think we have to rely on the certificate presented to the=20
>>>>>mail client and the user will have to know to trust it.  The mail=20
>>>>>provider can tell the user "when configuring email, ensure that the=
=20
>>>>>configuration server is mailconfig.example.com and do not provide a=
=20
>>>>>password if that is not the name of the configuration server=20
>>>>>indicated."
>>>>>
>>>>>If the mail config information is not protected with a password, we=
=20
>>>>>probably would want the customer to verify that the SMTP server=20
>>>>>information is correct before the password is provided.  These=20
>>>>>would be the steps users would take if performing manual=20
>>>>>configuration, but the software presents that information to the=20
>>>>>user without the user having to enter it.
>>>>>
>>>>>
>>>>>>
>>>>>>2) How does the client know which credentials to use to set up the=
=20
>>>>>>individual services in step 4? Should the client ask the user for=20
>>>>>>the credentials for each service or can it assume that some of=20
>>>>>>them share the same credentials? Is that something an=20
>>>>>>auto-configuration document can help with?
>>>>>
>>>>>It would be nice if there is a config indicator that says "SMTP=20
>>>>>server and IMAP server passwords are the same", so the client does=20
>>>>>not have to ask.
>>>>>
>>>>>If we use a "config password" then we could even have the server=20
>>>>>tell the client the password for services, which would=20
>>>>>transparently allow those to be different.  Alternatively, the=20
>>>>>client will have to ask each about each one.
>>>>>
>>>>>For calendaring services, then yes: the client would have to ask=20
>>>>>the user.  It could ask if it's the same or different than the=20
>>>>>email password or the config password.  For some services, the=20
>>>>>authentication mechanisms will be entirely different (like Google=20
>>>>>Calendar).  The mail client will just have to know how to access=20
>>>>>the service.  For that reason, I'm a little hesitant to suggest=20
>>>>>including calendaring service config along with the email config=20
>>>>>data.  We could have each of those services listed in the users'=20
>>>>>WebFinger document.  For example, I might have this entry in my WF=20
>>>>>document:
>>>>>{
>>>>>     "rel" : "calendar"
>>>>>     "href" : "urn:whatever:google"
>>>>>}
>>>>>
>>>>>Note I did not provide a URL.  The reason is that this is an=20
>>>>>entirely different service that has an entirely different access=20
>>>>>method.  Maybe the client can ask the user "is=20
>>>>>paulej@packetizer.com our user ID for your Google calendar?"  In my=
=20
>>>>>case, I don't think it is.  Certainly, it's not my gmail ID.  And,=20
>>>>>I would not want to advertise that to the world, necessarily. =20
>>>>>Anyway, I think we should limit the scope of what we try to do to=20
>>>>>things that are standard OR we define a generic URN that a client=20
>>>>>will just have to know how to deal with.
>>>>>
>>>>>
>>>>>>Ideally the server supports some kind of SSO mechanism like OpenID=
=20
>>>>>>Connect, so you don't need to enter your password multiple times.=20
>>>>>>But a working auto-configuration is really the precondition for=20
>>>>>>this, because an OpenID Connect implementations needs a way to=20
>>>>>>discover the OAuth2 scope tokens to request from the server and=20
>>>>>>auto-configuration is really the way to do that, IMO. For this it=20
>>>>>>would be helpful to have some mechanism to request a broader scope=
=20
>>>>>>from the user (without allowing him to switch to a different=20
>>>>>>account), but that's a different topic I guess.
>>>>>
>>>>>I definitely like the idea of SSO.  But, I struggle to see how we=20
>>>>>would use this in practice with mail autoconfig since SMTP, IMAP,=20
>>>>>and POP servers require a password, anyway.  If we use that as a=20
>>>>>means to have those passwords provided behind the scenes (as I=20
>>>>>indicated above), that might be a good argument for using OpenID=20
>>>>>Connect.  In that way, the ISP can also ensure that passwords are=20
>>>>>REALLY complex and unknown even to the user.  Not a bad practice,=20
>>>>>in that we can view those passwords as complex tokens.
>>>>>
>>>>>Would that kind of use of OpenID Connect to retrieve the password=20
>>>>>be workable?  (I'll admit I don't have so much experience with=20
>>>>>OpenID Connect.  I implemented OpenID 2.0, but that's not ideal for=
=20
>>>>>what we'd want to accomplish here.  I don't have a good feel for=20
>>>>>how Connect might make this better.)
>>>>>
>>>>>Paul
>>>>>
>>>>>
>>>>>
>>>>>_______________________________________________ webfinger mailing=20
>>>>>list=20
>>>>>webfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>>>>
>>>>
>>>>-- Marten Gajda CEO dmfs GmbH Schandauer Stra=C3=9Fe 34 01309 Dresden=
=20
>>>>GERMANY phone: +49 177 4427167 email: marten@dmfs.org Managing=20
>>>>Director: Marten Gajda Registered address: Dresden Registered No.:=20
>>>>AG Dresden HRB 34881 VAT Reg. No.: DE303248743
>>>>
>>>>_______________________________________________ webfinger mailing=20
>>>>list=20
>>>>webfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>>>
>>
>>-- Marten Gajda CEO dmfs GmbH Schandauer Stra=C3=9Fe 34 01309 Dresden=20
>>GERMANY phone: +49 177 4427167 email: marten@dmfs.org Managing=20
>>Director: Marten Gajda Registered address: Dresden Registered No.: AG=20
>>Dresden HRB 34881 VAT Reg. No.: DE303248743
>>
>>_______________________________________________ webfinger mailing list=
=20
>>webfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>
>-- Marten Gajda CEO dmfs GmbH Schandauer Stra=C3=9Fe 34 01309 Dresden=20
>GERMANY phone: +49 177 4427167 email: marten@dmfs.org Managing=20
>Director: Marten Gajda Registered address: Dresden Registered No.: AG=20
>Dresden HRB 34881 VAT Reg. No.: DE303248743
--------=_MBA22A7604-4F2C-4CD5-9240-2B950ECCDE72
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><head>
   =20
  <style>blockquote.cite
{margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:=
 0px; border-left-width: 1px; border-left-style: solid; border-left-color:=
 rgb(204, 204, 204);}
blockquote.cite2
{margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:=
 0px; border-left-width: 1px; border-left-style: solid; border-left-color:=
 rgb(204, 204, 204); margin-top: 3px; padding-top: 0px;}
a img
{border: 0px;}
body
{font-family: Calibri; font-size: 11pt;}
</style></head>
  <body background=3D""><div>Marten,</div><div><br></div><div>Sorry to just=
 be coming back to this after a whole month passed.</div><div><br></div><di=
v>What current draft? &nbsp;Did you write one that I missed? &nbsp;Or are=
 these requirements for the draft you would like to see?</div><div><br></di=
v><div>Paul</div><div><br></div>
<div>------ Original Message ------</div>
<div>From: "Marten Gajda" &lt;<a href=3D"mailto:marten@dmfs.org">marten@dmf=
s.org</a>&gt;</div>
<div>To: "webfinger@ietf.org" &lt;<a href=3D"mailto:webfinger@ietf.org">web=
finger@ietf.org</a>&gt;</div>
<div>Sent: 6/8/2016 3:35:05 PM</div>
<div>Subject: Re: [webfinger] [apps-discuss] Mail client configuration via=
 WebFinger</div><div><br></div>
<div id=3D"x14ca4e8a6f9d44b" style=3D" color: #000000"><blockquote cite=3D=
"57587369.20405@dmfs.org" type=3D"cite" class=3D"cite2">

    All,<br>
    <br>
    I've created a GitHub repository to track open issues with the
    current draft, see
    <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/CalConnec=
t/AUTODISCOVERY/issues">https://github.com/CalConnect/AUTODISCOVERY/issues<=
/a><br>
    You're welcome to contribute to the discussion, either by creating a
    new issue or by commenting on an existing one.<br>
    <br>
    Thanks,<br>
    <br>
    Marten<br>
    <br>
    <div class=3D"moz-cite-prefix">Am 05.06.2016 um 23:00 schrieb Marten
      Gajda:<br>
    </div>
    <blockquote cite=3D"mid:575492E1.2000805@dmfs.org" type=3D"cite" class=
=3D"cite">
     =20
      I think OpenID Connect already covers the discovery of everything
      you need to do OAuth2. That involves Webfinger, but there is no
      need to protect this request, because it doesn't contain personal
      information.<br>
      So we don't need to reinvent the OAuth2 bootstrapping sequence.<br>
      The only minor issue I see is that you may have to ask the user
      twice to grant access. Once to authorize the client to access the
      configuration document and another time to authorize the client to
      access the individual services. The second step is necessary,
      because the scope tokens of these services are not known when the
      first authorization request is presented to the user. The problem
      with that is, there doesn't seem to be a mechanism to broaden
      scope, without allowing the user to switch to a different account.
      To get access to the individual services, the client needs to
      start another authorization code grant. But the user is always
      free to log out and log in with a different account before
      granting access.<br>
      <br>
      Marten<br>
      <br>
      <div class=3D"moz-cite-prefix">Am 03.06.2016 um 20:13 schrieb George
        Fletcher:<br>
      </div>
      <blockquote cite=3D"mid:39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com"=
 type=3D"cite" class=3D"cite">
       =20
        Did a quick scan of the draft document. Given that more and more
        systems are trying to remove the need for passwords, it seems
        like the final solution needs to support 2FA and biometric
        mechanisms for "HTTP authentication". I definitely would not
        want the webfinger instance releasing my config data without my
        "authentication". I suppose OAuth2 could be used to protect the
        webfinger APIs though there is a bit of a chicken-and-egg here:)<br=
>
        <br>
        I kind of like the suggestion around returning a 401 with data
        in the WWW-Authenticate header on where to get a token to use
        with the API. This would allow the client to start and OAuth2
        flow with the Authorization Server specified and that would give
        the user a clear indication of what password/credentials are
        being requested. Once the client gets the token, it uses it with
        the webfinger call and now the service-configuration data is
        returned because the token is the authorization for the
        specified id.<br>
        <br>
        Thanks,<br>
        George<br>
        <br>
        <div class=3D"moz-cite-prefix">On 6/3/16 10:44 AM, Marten Gajda
          wrote:<br>
        </div>
        <blockquote cite=3D"mid:575197C1.3090102@dmfs.org" type=3D"cite"=
 class=3D"cite">
         =20
          <div class=3D"moz-cite-prefix">Note that the idea behind <a moz-d=
o-not-send=3D"true" class=3D"moz-txt-link-freetext" href=3D"https://tools.i=
etf.org/html/draft-daboo-aggregated-service-discovery-03">https://tools.iet=
f.org/html/draft-daboo-aggregated-service-discovery-03</a>
            is to put the service configuration for all services of a
            provider into a single document.<br>
            <br>
            So you would receive something like this:<br>
            <br>
            <div>{</div>
            <div>&nbsp;&nbsp;&nbsp; "rel "&nbsp;: &nbsp;"service-configurat=
ion",</div>
            <div>&nbsp;&nbsp;&nbsp; "href " : <a moz-do-not-send=3D"true"=
 class=3D"moz-txt-link-rfc2396E" href=3D"https://example.com/service-config=
uration">"https://example.com/service-configuration"</a></div>
            <div>}</div>
            <br>
            If a user uses the same account identifier at another
            provider the Webfinger request could return their
            configuration too (given there is some mechanism to add it
            and the provider actually supports that).<br>
            <div><br>
              {</div>
            <div>&nbsp;&nbsp;&nbsp; "rel "&nbsp;: &nbsp;"service-configurat=
ion",</div>
            <div>&nbsp;&nbsp;&nbsp; "href " : <a moz-do-not-send=3D"true"=
 class=3D"moz-txt-link-rfc2396E" href=3D"https://example.com/service-config=
uration">"https://example.com/service-configuration"</a></div>
            <div>},<br>
              {
              <div>&nbsp;&nbsp;&nbsp; "rel "&nbsp;: &nbsp;"service-configur=
ation",</div>
              <div>&nbsp;&nbsp;&nbsp; "href " : <a moz-do-not-send=3D"true"=
 class=3D"moz-txt-link-rfc2396E" href=3D"https://acme-calendar.com/service-=
configuration">"https://acme-calendar.com/service-configuration"</a></div>
              <div>}</div>
              <br>
              Without that it would be more difficult to setup your
              account at acme-calendar.com with your login <a moz-do-not-se=
nd=3D"true" class=3D"moz-txt-link-rfc2396E" href=3D"mailto:user@example.com=
">"user@example.com"</a>.
              acme-calendar.com would have to issue some kind of
              user-identifier like <a moz-do-not-send=3D"true" class=3D"moz=
-txt-link-abbreviated" href=3D"mailto:user@acme-calendar.com">user@acme-cal=
endar.com</a>
              for auto-configuration purposes, even though you don't use
              it for authentication (because you use <a moz-do-not-send=3D=
"true" class=3D"moz-txt-link-abbreviated" href=3D"mailto:user@exampe.com">u=
ser@exampe.com</a> for
              authentication). I think that's the idea behind the
              `acct:` URI scheme, but I don't think that you can explain
              to users why they need another user identifier and when to
              use one or the other.<br>
              But that also raises the privacy concerns I mentioned
              earlier. If the request is not authenticated, everyone
              could see that you have an account at acme-calendar.com.<br>
              <br>
              Regarding SSO: There is an RFC that extends SASL based
              authentication to support the token authentication
              mechanisms as used by OAuth1 and OAuth2, see <a moz-do-not-se=
nd=3D"true" class=3D"moz-txt-link-freetext" href=3D"https://tools.ietf.org/=
html/rfc7628">https://tools.ietf.org/html/rfc7628</a><br>
              So SSO already works with IMAP, POP3 and SMTP.<br>
              <br>
              Cheers<br>
              <br>
              Marten<br>
            </div>
            <br>
            <br>
            <br>
            Am 03.06.2016 um 15:40 schrieb Paul E. Jones:<br>
          </div>
          <blockquote cite=3D"mid:em44c60c65-2d14-46a0-adb3-a52d38d160ed@he=
lsinki" type=3D"cite" class=3D"cite">
            <style>#x14ca4e8a6f9d44b blockquote.cite{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left:1px solid #CCC ;
}
#x14ca4e8a6f9d44b blockquote.cite2{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left:1px solid #CCC;
	margin-top:3px;
	padding-top:0px;
}
#x14ca4e8a6f9d44b .plain pre,#x14ca4e8a6f9d44b .plain tt{
	font-family:monospace;
	font-size:100%;
	font-weight:normal;
	font-style:normal;
}
#x14ca4e8a6f9d44b a img{
	border:0px;
}
#x14ca4e8a6f9d44b{
	font-family:Calibri;
	font-size:11pt;
}
#x14ca4e8a6f9d44b .plain pre,#x14ca4e8a6f9d44b .plain tt{
	font-family:Calibri;
	font-size:11pt;
}</style>
           =20
            <div>Marten,</div>
            <div>&nbsp;</div>
            <div>&nbsp;</div>
            <div id=3D"xb0e07aa6572b4a46adcd7f5ad2d33c48" style=3D"COLOR:
              #000000">
              <blockquote class=3D"cite2" cite=3D"575180B6.9010902@dmfs.org=
" type=3D"cite">
                <div class=3D"moz-cite-prefix">So how would the UI work?<br=
>
                  <br>
                  1) User enters user identifier, most likely an email
                  address, like <a moz-do-not-send=3D"true" class=3D"moz-tx=
t-link-rfc2396E" href=3D"mailto:user@example.com">mailto:user@example.com</=
a>
                  and hits "next"<br>
                  <br>
                  2) Client sends a Webfinger request to <a moz-do-not-send=
=3D"true" class=3D"moz-txt-link-freetext" href=3D"https://exampe.com/.well-=
known/webfinger">https://exampe.com/.well-known/webfinger</a>?...


                  to see if there is a configuration document<br>
                  <br>
                  &nbsp; -&gt; response 404 Not Found<br>
                  &nbsp;&nbsp; a) Client falls back to "manual setup" or=
 another
                  auto-configuration mechanism<br>
                  <br>
                  &nbsp; -&gt; response 401 Unauthorized</div>
              </blockquote>
              <div>&nbsp;</div>
              <div>One should not get 401 querying the WebFinger
                information for the user.&nbsp; What should happen is that
                the server should return a JSON object that contains a
                link relation that might look like this:</div>
              <div>{</div>
              <div>&nbsp;&nbsp;&nbsp; "rel "&nbsp;: &nbsp;"mail-config",</d=
iv>
              <div>&nbsp;&nbsp;&nbsp; "href " : <a moz-do-not-send=3D"true"=
 class=3D"moz-txt-link-rfc2396E" href=3D"https://mailserver.example.com/con=
fig?user=3Dpaulej%40packetizer.com">"https://mailserver.example.com/config?=
user=3Dpaulej%40packetizer.com"</a></div>
              <div>}</div>
              <div>&nbsp;</div>
              <div>Or something like that.&nbsp; The mail client should =
query
                that URI it is that one that should result in a
                potential 401.&nbsp; The JSON format that would come back
                here would need to be something we define.&nbsp; It could=
 be
                based on JRD, but would not have to be.</div>
              <div>&nbsp;</div>
              <div>Otherwise, I think the flow looks right.</div>
              <div>&nbsp;</div>
              <div>&nbsp;</div>
              <blockquote class=3D"cite2" cite=3D"575180B6.9010902@dmfs.org=
" type=3D"cite">
                <div class=3D"moz-cite-prefix"><br>
                  &nbsp;&nbsp; b) Client asks for password at "example.com"=
 and
                  goes back to step 2 (this time with authentication)<br>
                  <br>
                  &nbsp; -&gt; response 200 Ok<br>
                  &nbsp;&nbsp; c) client moves on to next step<br>
                  <br>
                  3) (optional) Client presents found services to the
                  user to let him select the services to set up<br>
                  <br>
                  4) Client runs the setup handler for each selected
                  service<br>
                  <br>
                  <br>
                  I think in general that could work but it raises two
                  questions:<br>
                  <br>
                  1) How to make sure the user really understands that
                  he's authenticating at example.com in step 2b? If the
                  user tries to configure calendar sync with
                  "acme-calendar.com" where his login happens to be <a moz-=
do-not-send=3D"true" class=3D"moz-txt-link-rfc2396E" href=3D"mailto:user@ex=
ample.com">mailto:user@example.com</a>
                  he might not be prepared to being asked for his
                  example.com password. Maybe I'm just paranoid or
                  overcautious, but I think that it might easily happen
                  that the users sends his acme-calendar.com password to
                  example.com in that case (since Basic authentication
                  is still the most common mechanism, the client
                  basically sends the password in plain text). </div>
              </blockquote>
              <div>&nbsp;</div>
              <div>Yeah, that's a valid concern.&nbsp; The only thing I =
can
                suggest is that the Subject CN from the certificate is
                presented to the user.&nbsp; Alternatively, there could =
be
                two passwords: one that is the "configuration password"
                and one that is the email password.&nbsp; However, I don't
                think two passwords will help us.&nbsp; If I want to hack
                somebody and can gain access to their WF config, I can
                auto-config their email client to point to my own IMAP
                server and just retrieve the password that way.</div>
              <div>&nbsp;</div>
              <div>So, I think we have to rely on the certificate
                presented to the mail client and the user will have to
                know to trust it.&nbsp; The mail provider can tell the user
                "when configuring email, ensure that the configuration
                server is mailconfig.example.com and do not provide a
                password if that is not the name of the configuration
                server indicated."</div>
              <div>&nbsp;</div>
              <div>If the mail config information is not protected with
                a password, we probably would want the customer to
                verify that the SMTP server information is correct
                before the password is provided.&nbsp; These would be the
                steps users would take if performing manual
                configuration, but the software presents that
                information to the user without the user having to enter
                it.</div>
              <div>&nbsp;</div>
              <div>&nbsp;</div>
              <blockquote class=3D"cite2" cite=3D"575180B6.9010902@dmfs.org=
" type=3D"cite">
                <div class=3D"moz-cite-prefix"><br>
                  2) How does the client know which credentials to use
                  to set up the individual services in step 4? Should
                  the client ask the user for the credentials for each
                  service or can it assume that some of them share the
                  same credentials? Is that something an
                  auto-configuration document can help with?</div>
              </blockquote>
              <div>&nbsp;</div>
              <div>It would be nice if there is a config indicator that
                says "SMTP server and IMAP server passwords are the
                same", so the client does not have to ask.</div>
              <div>&nbsp;</div>
              <div>If we use a "config password" then we could even have
                the server tell the client the password for services,
                which would transparently allow those to be different.&nbsp=
;
                Alternatively, the client will have to ask each about
                each one.</div>
              <div>&nbsp;</div>
              <div>For calendaring services, then yes: the client would
                have to ask the user.&nbsp; It could ask if it's the same=
 or
                different than the email password or the config
                password.&nbsp; For some services, the authentication
                mechanisms will be entirely different (like Google
                Calendar).&nbsp; The mail client will just have to know =
how
                to access the service.&nbsp; For that reason, I'm a little
                hesitant to suggest including calendaring service config
                along with the email config data.&nbsp; We could have each=
 of
                those services listed in the users' WebFinger document.&nbs=
p;
                For example, I might have this entry in my WF document:</di=
v>
              <div>{</div>
              <div>&nbsp;&nbsp;&nbsp; "rel" : "calendar"</div>
              <div>&nbsp;&nbsp;&nbsp; "href" : "urn:whatever:google"</div>
              <div>}</div>
              <div>&nbsp;</div>
              <div>Note I did not provide a URL.&nbsp; The reason is that
                this is an entirely different service that has an
                entirely different access method.&nbsp; Maybe the client=
 can
                ask the user "is <a moz-do-not-send=3D"true" class=3D"moz-t=
xt-link-abbreviated" href=3D"mailto:paulej@packetizer.com">paulej@packetize=
r.com</a>
                our user ID for&nbsp;your Google calendar?"&nbsp; In my =
case, I
                don't think it is.&nbsp; Certainly, it's not my gmail ID.&n=
bsp;
                And, I would not want to advertise that to the world,
                necessarily.&nbsp; Anyway, I think we should limit the scop=
e
                of what we try to do to things that are standard OR we
                define a generic URN that a client will just have to
                know how to deal with.</div>
              <div>&nbsp;</div>
              <div>&nbsp;</div>
              <blockquote class=3D"cite2" cite=3D"575180B6.9010902@dmfs.org=
" type=3D"cite">
                <div class=3D"moz-cite-prefix">Ideally the server supports
                  some kind of SSO mechanism like OpenID Connect, so you
                  don't need to enter your password multiple times. But
                  a working auto-configuration is really the
                  precondition for this, because an OpenID Connect
                  implementations needs a way to discover the OAuth2
                  scope tokens to request from the server and
                  auto-configuration is really the way to do that, IMO.
                  For this it would be helpful to have some mechanism to
                  request a broader scope from the user (without
                  allowing him to switch to a different account), but
                  that's a different topic I guess.</div>
              </blockquote>
              <div>&nbsp;</div>
              <div>I definitely like the idea of SSO.&nbsp; But, I struggle
                to see how we would use this in practice with mail
                autoconfig since SMTP, IMAP, and POP servers require a
                password, anyway.&nbsp; If we use that as a means to have
                those passwords provided behind the scenes (as I
                indicated above), that might be a good argument for
                using OpenID Connect.&nbsp; In that way, the ISP can also
                ensure that passwords are REALLY complex and unknown
                even to the user.&nbsp; Not a bad practice, in that we can
                view those passwords as complex tokens.</div>
              <div>&nbsp;</div>
              <div>Would that kind of use of OpenID Connect to retrieve
                the password be workable?&nbsp; (I'll admit I don't have=
 so
                much experience with OpenID Connect.&nbsp; I implemented
                OpenID 2.0, but that's not ideal for what we'd want to
                accomplish here.&nbsp; I don't have a good feel for how
                Connect might make this better.)</div>
              <div>&nbsp;</div>
              <div>Paul</div>
              <div>&nbsp;</div>
            </div>
            <br>
            <fieldset class=3D"mimeAttachmentHeader"></fieldset>
            <br>
            <pre wrap=3D"">_______________________________________________
webfinger mailing list
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=3D"mail=
to:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext" href=3D"https:/=
/www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/list=
info/webfinger</a>
</pre>
          </blockquote>
          <br>
          <br>
          <pre class=3D"moz-signature" cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=
=3D"mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
          <br>
          <fieldset class=3D"mimeAttachmentHeader"></fieldset>
          <br>
          <pre wrap=3D"">_______________________________________________
webfinger mailing list
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=3D"mail=
to:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext" href=3D"https:/=
/www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/list=
info/webfinger</a>
</pre>
        </blockquote>
        <br>
      </blockquote>
      <br>
      <pre class=3D"moz-signature" cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=
=3D"mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
      <br>
      <fieldset class=3D"mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap=3D"">_______________________________________________
webfinger mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:webfinger@ietf.org">we=
bfinger@ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/lis=
tinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
    </blockquote>
    <br>
    <pre class=3D"moz-signature" cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:marten@dmfs.org=
">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
  </blockquote></div>


</body></html>
--------=_MBA22A7604-4F2C-4CD5-9240-2B950ECCDE72--



From nobody Wed Jul 13 15:32:20 2016
Return-Path: <marten@dmfs.org>
X-Original-To: webfinger@ietfa.amsl.com
Delivered-To: webfinger@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0E5C812D957 for <webfinger@ietfa.amsl.com>; Wed, 13 Jul 2016 15:32:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.019
X-Spam-Level: 
X-Spam-Status: No, score=-2.019 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=dmfs.org
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HFAVa4DopL_j for <webfinger@ietfa.amsl.com>; Wed, 13 Jul 2016 15:32:16 -0700 (PDT)
Received: from mailrelay2.public.one.com (mailrelay2.public.one.com [91.198.169.125]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CAEA812D977 for <webfinger@ietf.org>; Wed, 13 Jul 2016 15:32:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=dmfs.org; s=20140924; h=from:subject:date:message-id:to:mime-version:content-type:in-reply-to: references; bh=3sNHznnj2NhVSxcXFtcpj4F0YwgLzNo2BtRbu/GygqY=; b=VyUX2m55Smewe+84CPnPmxlu8kt6xtrAS+mGeTlor+vKIz3825lyVHfQ3KaEy5YP0nlAy2A33/lGb JDhD0rW/ZyHzVvJ3ssYh9xc8qP+IFBg7HO3p5XPDUlde4h7KWvVQFkO1Wdofj6QFJ8b6ZiR87pJUjz 6Td5zZi3ET2ZK9cQ=
X-HalOne-Cookie: 6265ab37e843b29b03856a092fe3830178153535
X-HalOne-ID: 9ef5255a-4949-11e6-b723-b82a72d03b9b
Received: from smtp.dmfs.org (unknown [79.240.254.46]) by smtpfilter2.public.one.com (Halon Mail Gateway) with ESMTPSA for <webfinger@ietf.org>; Wed, 13 Jul 2016 22:32:02 +0000 (UTC)
Received: from localhost.localdomain (212095007177.public.telering.at [212.95.7.177]) by smtp.dmfs.org (Postfix) with ESMTPSA id D54B64F for <webfinger@ietf.org>; Thu, 14 Jul 2016 00:32:01 +0200 (CEST)
Message-ID: <5786C161.7070806@dmfs.org>
Date: Thu, 14 Jul 2016 00:32:01 +0200
From: Marten Gajda <marten@dmfs.org>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: webfinger@ietf.org <webfinger@ietf.org>
References: <em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki> <575197C1.3090102@dmfs.org> <39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com> <575492E1.2000805@dmfs.org> <57587369.20405@dmfs.org> <em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney>
In-Reply-To: <em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney>
Content-Type: multipart/alternative; boundary="------------080804070500080309020903"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webfinger/7XU94PmFi4bZSloUMbBy4haZfJ4>
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via WebFinger
X-BeenThere: webfinger@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Discussion of the Webfinger protocol proposal in the Applications Area <webfinger.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webfinger>, <mailto:webfinger-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webfinger/>
List-Post: <mailto:webfinger@ietf.org>
List-Help: <mailto:webfinger-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webfinger>, <mailto:webfinger-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 13 Jul 2016 22:32:19 -0000

This is a multi-part message in MIME format.
--------------080804070500080309020903
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Hi Paul,

the "current draft" is still the one at
https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03
and the issues at GitHub are discussion items for the upcoming draft.
I wanted to clarify a few points before I start to work on the draft. If
you have anything to add to these points or if you have any other
concerns, please let me know, so we can address them.
Unless there is some more interest in the certificate stuff, I'm not
going to add this to the draft. We still can add that later on if it
turns out to be useful.

Cheers,

Marten


Am 11.07.2016 um 23:31 schrieb Paul E. Jones:
> Marten,
>
> Sorry to just be coming back to this after a whole month passed.
>
> What current draft?  Did you write one that I missed?  Or are these
> requirements for the draft you would like to see?
>
> Paul
>
> ------ Original Message ------
> From: "Marten Gajda" <marten@dmfs.org <mailto:marten@dmfs.org>>
> To: "webfinger@ietf.org" <webfinger@ietf.org <mailto:webfinger@ietf.org>>
> Sent: 6/8/2016 3:35:05 PM
> Subject: Re: [webfinger] [apps-discuss] Mail client configuration via
> WebFinger
>
>> All,
>>
>> I've created a GitHub repository to track open issues with the
>> current draft, see https://github.com/CalConnect/AUTODISCOVERY/issues
>> You're welcome to contribute to the discussion, either by creating a
>> new issue or by commenting on an existing one.
>>
>> Thanks,
>>
>> Marten
>>
>> Am 05.06.2016 um 23:00 schrieb Marten Gajda:
>>> I think OpenID Connect already covers the discovery of everything
>>> you need to do OAuth2. That involves Webfinger, but there is no need
>>> to protect this request, because it doesn't contain personal
>>> information.
>>> So we don't need to reinvent the OAuth2 bootstrapping sequence.
>>> The only minor issue I see is that you may have to ask the user
>>> twice to grant access. Once to authorize the client to access the
>>> configuration document and another time to authorize the client to
>>> access the individual services. The second step is necessary,
>>> because the scope tokens of these services are not known when the
>>> first authorization request is presented to the user. The problem
>>> with that is, there doesn't seem to be a mechanism to broaden scope,
>>> without allowing the user to switch to a different account. To get
>>> access to the individual services, the client needs to start another
>>> authorization code grant. But the user is always free to log out and
>>> log in with a different account before granting access.
>>>
>>> Marten
>>>
>>> Am 03.06.2016 um 20:13 schrieb George Fletcher:
>>>> Did a quick scan of the draft document. Given that more and more
>>>> systems are trying to remove the need for passwords, it seems like
>>>> the final solution needs to support 2FA and biometric mechanisms
>>>> for "HTTP authentication". I definitely would not want the
>>>> webfinger instance releasing my config data without my
>>>> "authentication". I suppose OAuth2 could be used to protect the
>>>> webfinger APIs though there is a bit of a chicken-and-egg here:)
>>>>
>>>> I kind of like the suggestion around returning a 401 with data in
>>>> the WWW-Authenticate header on where to get a token to use with the
>>>> API. This would allow the client to start and OAuth2 flow with the
>>>> Authorization Server specified and that would give the user a clear
>>>> indication of what password/credentials are being requested. Once
>>>> the client gets the token, it uses it with the webfinger call and
>>>> now the service-configuration data is returned because the token is
>>>> the authorization for the specified id.
>>>>
>>>> Thanks,
>>>> George
>>>>
>>>> On 6/3/16 10:44 AM, Marten Gajda wrote:
>>>>> Note that the idea behind
>>>>> https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03
>>>>> is to put the service configuration for all services of a provider
>>>>> into a single document.
>>>>>
>>>>> So you would receive something like this:
>>>>>
>>>>> {
>>>>>     "rel " :  "service-configuration",
>>>>>     "href " : "https://example.com/service-configuration"
>>>>> }
>>>>>
>>>>> If a user uses the same account identifier at another provider the
>>>>> Webfinger request could return their configuration too (given
>>>>> there is some mechanism to add it and the provider actually
>>>>> supports that).
>>>>>
>>>>> {
>>>>>     "rel " :  "service-configuration",
>>>>>     "href " : "https://example.com/service-configuration"
>>>>> },
>>>>> {
>>>>>     "rel " :  "service-configuration",
>>>>>     "href " : "https://acme-calendar.com/service-configuration"
>>>>> }
>>>>>
>>>>> Without that it would be more difficult to setup your account at
>>>>> acme-calendar.com with your login "user@example.com".
>>>>> acme-calendar.com would have to issue some kind of user-identifier
>>>>> like user@acme-calendar.com for auto-configuration purposes, even
>>>>> though you don't use it for authentication (because you use
>>>>> user@exampe.com for authentication). I think that's the idea
>>>>> behind the `acct:` URI scheme, but I don't think that you can
>>>>> explain to users why they need another user identifier and when to
>>>>> use one or the other.
>>>>> But that also raises the privacy concerns I mentioned earlier. If
>>>>> the request is not authenticated, everyone could see that you have
>>>>> an account at acme-calendar.com.
>>>>>
>>>>> Regarding SSO: There is an RFC that extends SASL based
>>>>> authentication to support the token authentication mechanisms as
>>>>> used by OAuth1 and OAuth2, see https://tools.ietf.org/html/rfc7628
>>>>> So SSO already works with IMAP, POP3 and SMTP.
>>>>>
>>>>> Cheers
>>>>>
>>>>> Marten
>>>>>
>>>>>
>>>>>
>>>>> Am 03.06.2016 um 15:40 schrieb Paul E. Jones:
>>>>>> Marten,
>>>>>>  
>>>>>>  
>>>>>>> So how would the UI work?
>>>>>>>
>>>>>>> 1) User enters user identifier, most likely an email address,
>>>>>>> like mailto:user@example.com and hits "next"
>>>>>>>
>>>>>>> 2) Client sends a Webfinger request to
>>>>>>> https://exampe.com/.well-known/webfinger?... to see if there is
>>>>>>> a configuration document
>>>>>>>
>>>>>>>   -> response 404 Not Found
>>>>>>>    a) Client falls back to "manual setup" or another
>>>>>>> auto-configuration mechanism
>>>>>>>
>>>>>>>   -> response 401 Unauthorized
>>>>>>  
>>>>>> One should not get 401 querying the WebFinger information for the
>>>>>> user.  What should happen is that the server should return a JSON
>>>>>> object that contains a link relation that might look like this:
>>>>>> {
>>>>>>     "rel " :  "mail-config",
>>>>>>     "href " :
>>>>>> "https://mailserver.example.com/config?user=paulej%40packetizer.com"
>>>>>> }
>>>>>>  
>>>>>> Or something like that.  The mail client should query that URI it
>>>>>> is that one that should result in a potential 401.  The JSON
>>>>>> format that would come back here would need to be something we
>>>>>> define.  It could be based on JRD, but would not have to be.
>>>>>>  
>>>>>> Otherwise, I think the flow looks right.
>>>>>>  
>>>>>>  
>>>>>>>
>>>>>>>    b) Client asks for password at "example.com" and goes back to
>>>>>>> step 2 (this time with authentication)
>>>>>>>
>>>>>>>   -> response 200 Ok
>>>>>>>    c) client moves on to next step
>>>>>>>
>>>>>>> 3) (optional) Client presents found services to the user to let
>>>>>>> him select the services to set up
>>>>>>>
>>>>>>> 4) Client runs the setup handler for each selected service
>>>>>>>
>>>>>>>
>>>>>>> I think in general that could work but it raises two questions:
>>>>>>>
>>>>>>> 1) How to make sure the user really understands that he's
>>>>>>> authenticating at example.com in step 2b? If the user tries to
>>>>>>> configure calendar sync with "acme-calendar.com" where his login
>>>>>>> happens to be mailto:user@example.com he might not be prepared
>>>>>>> to being asked for his example.com password. Maybe I'm just
>>>>>>> paranoid or overcautious, but I think that it might easily
>>>>>>> happen that the users sends his acme-calendar.com password to
>>>>>>> example.com in that case (since Basic authentication is still
>>>>>>> the most common mechanism, the client basically sends the
>>>>>>> password in plain text).
>>>>>>  
>>>>>> Yeah, that's a valid concern.  The only thing I can suggest is
>>>>>> that the Subject CN from the certificate is presented to the
>>>>>> user.  Alternatively, there could be two passwords: one that is
>>>>>> the "configuration password" and one that is the email password. 
>>>>>> However, I don't think two passwords will help us.  If I want to
>>>>>> hack somebody and can gain access to their WF config, I can
>>>>>> auto-config their email client to point to my own IMAP server and
>>>>>> just retrieve the password that way.
>>>>>>  
>>>>>> So, I think we have to rely on the certificate presented to the
>>>>>> mail client and the user will have to know to trust it.  The mail
>>>>>> provider can tell the user "when configuring email, ensure that
>>>>>> the configuration server is mailconfig.example.com and do not
>>>>>> provide a password if that is not the name of the configuration
>>>>>> server indicated."
>>>>>>  
>>>>>> If the mail config information is not protected with a password,
>>>>>> we probably would want the customer to verify that the SMTP
>>>>>> server information is correct before the password is provided. 
>>>>>> These would be the steps users would take if performing manual
>>>>>> configuration, but the software presents that information to the
>>>>>> user without the user having to enter it.
>>>>>>  
>>>>>>  
>>>>>>>
>>>>>>> 2) How does the client know which credentials to use to set up
>>>>>>> the individual services in step 4? Should the client ask the
>>>>>>> user for the credentials for each service or can it assume that
>>>>>>> some of them share the same credentials? Is that something an
>>>>>>> auto-configuration document can help with?
>>>>>>  
>>>>>> It would be nice if there is a config indicator that says "SMTP
>>>>>> server and IMAP server passwords are the same", so the client
>>>>>> does not have to ask.
>>>>>>  
>>>>>> If we use a "config password" then we could even have the server
>>>>>> tell the client the password for services, which would
>>>>>> transparently allow those to be different.  Alternatively, the
>>>>>> client will have to ask each about each one.
>>>>>>  
>>>>>> For calendaring services, then yes: the client would have to ask
>>>>>> the user.  It could ask if it's the same or different than the
>>>>>> email password or the config password.  For some services, the
>>>>>> authentication mechanisms will be entirely different (like Google
>>>>>> Calendar).  The mail client will just have to know how to access
>>>>>> the service.  For that reason, I'm a little hesitant to suggest
>>>>>> including calendaring service config along with the email config
>>>>>> data.  We could have each of those services listed in the users'
>>>>>> WebFinger document.  For example, I might have this entry in my
>>>>>> WF document:
>>>>>> {
>>>>>>     "rel" : "calendar"
>>>>>>     "href" : "urn:whatever:google"
>>>>>> }
>>>>>>  
>>>>>> Note I did not provide a URL.  The reason is that this is an
>>>>>> entirely different service that has an entirely different access
>>>>>> method.  Maybe the client can ask the user "is
>>>>>> paulej@packetizer.com our user ID for your Google calendar?"  In
>>>>>> my case, I don't think it is.  Certainly, it's not my gmail ID. 
>>>>>> And, I would not want to advertise that to the world,
>>>>>> necessarily.  Anyway, I think we should limit the scope of what
>>>>>> we try to do to things that are standard OR we define a generic
>>>>>> URN that a client will just have to know how to deal with.
>>>>>>  
>>>>>>  
>>>>>>> Ideally the server supports some kind of SSO mechanism like
>>>>>>> OpenID Connect, so you don't need to enter your password
>>>>>>> multiple times. But a working auto-configuration is really the
>>>>>>> precondition for this, because an OpenID Connect implementations
>>>>>>> needs a way to discover the OAuth2 scope tokens to request from
>>>>>>> the server and auto-configuration is really the way to do that,
>>>>>>> IMO. For this it would be helpful to have some mechanism to
>>>>>>> request a broader scope from the user (without allowing him to
>>>>>>> switch to a different account), but that's a different topic I
>>>>>>> guess.
>>>>>>  
>>>>>> I definitely like the idea of SSO.  But, I struggle to see how we
>>>>>> would use this in practice with mail autoconfig since SMTP, IMAP,
>>>>>> and POP servers require a password, anyway.  If we use that as a
>>>>>> means to have those passwords provided behind the scenes (as I
>>>>>> indicated above), that might be a good argument for using OpenID
>>>>>> Connect.  In that way, the ISP can also ensure that passwords are
>>>>>> REALLY complex and unknown even to the user.  Not a bad practice,
>>>>>> in that we can view those passwords as complex tokens.
>>>>>>  
>>>>>> Would that kind of use of OpenID Connect to retrieve the password
>>>>>> be workable?  (I'll admit I don't have so much experience with
>>>>>> OpenID Connect.  I implemented OpenID 2.0, but that's not ideal
>>>>>> for what we'd want to accomplish here.  I don't have a good feel
>>>>>> for how Connect might make this better.)
>>>>>>  
>>>>>> Paul
>>>>>>  
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> webfinger mailing list
>>>>>> webfinger@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/webfinger
>>>>>
>>>>>
>>>>> -- 
>>>>> Marten Gajda
>>>>> CEO
>>>>>
>>>>> dmfs GmbH
>>>>> Schandauer Straße 34
>>>>> 01309 Dresden
>>>>> GERMANY
>>>>>
>>>>> phone: +49 177 4427167
>>>>> email: marten@dmfs.org
>>>>>
>>>>> Managing Director: Marten Gajda
>>>>> Registered address: Dresden
>>>>> Registered No.: AG Dresden HRB 34881
>>>>> VAT Reg. No.: DE303248743
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> webfinger mailing list
>>>>> webfinger@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/webfinger
>>>>
>>>
>>> -- 
>>> Marten Gajda
>>> CEO
>>>
>>> dmfs GmbH
>>> Schandauer Straße 34
>>> 01309 Dresden
>>> GERMANY
>>>
>>> phone: +49 177 4427167
>>> email: marten@dmfs.org
>>>
>>> Managing Director: Marten Gajda
>>> Registered address: Dresden
>>> Registered No.: AG Dresden HRB 34881
>>> VAT Reg. No.: DE303248743
>>>
>>>
>>> _______________________________________________
>>> webfinger mailing list
>>> webfinger@ietf.org
>>> https://www.ietf.org/mailman/listinfo/webfinger
>>
>> -- 
>> Marten Gajda
>> CEO
>>
>> dmfs GmbH
>> Schandauer Straße 34
>> 01309 Dresden
>> GERMANY
>>
>> phone: +49 177 4427167
>> email: marten@dmfs.org
>>
>> Managing Director: Marten Gajda
>> Registered address: Dresden
>> Registered No.: AG Dresden HRB 34881
>> VAT Reg. No.: DE303248743
>
>
> _______________________________________________
> webfinger mailing list
> webfinger@ietf.org
> https://www.ietf.org/mailman/listinfo/webfinger

-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: marten@dmfs.org

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743


--------------080804070500080309020903
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Paul,<br>
    <br>
    the "current draft" is still the one at
    <a class="moz-txt-link-freetext" href="https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03">https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03</a>
    and the issues at GitHub are discussion items for the upcoming
    draft.<br>
    I wanted to clarify a few points before I start to work on the
    draft. If you have anything to add to these points or if you have
    any other concerns, please let me know, so we can address them.<br>
    Unless there is some more interest in the certificate stuff, I'm not
    going to add this to the draft. We still can add that later on if it
    turns out to be useful.<br>
    <br>
    Cheers,<br>
    <br>
    Marten<br>
    <br>
    <br>
    <div class="moz-cite-prefix">Am 11.07.2016 um 23:31 schrieb Paul E.
      Jones:<br>
    </div>
    <blockquote cite="mid:em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney"
      type="cite">
      <style>blockquote.cite
{margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right: 0px; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204);}
blockquote.cite2
{margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right: 0px; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); margin-top: 3px; padding-top: 0px;}
a img
{border: 0px;}
body
{font-family: Calibri; font-size: 11pt;}
</style>
      <div>Marten,</div>
      <div><br>
      </div>
      <div>Sorry to just be coming back to this after a whole month
        passed.</div>
      <div><br>
      </div>
      <div>What current draft?  Did you write one that I missed?  Or are
        these requirements for the draft you would like to see?</div>
      <div><br>
      </div>
      <div>Paul</div>
      <div><br>
      </div>
      <div>------ Original Message ------</div>
      <div>From: "Marten Gajda" &lt;<a moz-do-not-send="true"
          href="mailto:marten@dmfs.org">marten@dmfs.org</a>&gt;</div>
      <div>To: <a class="moz-txt-link-rfc2396E" href="mailto:webfinger@ietf.org">"webfinger@ietf.org"</a> &lt;<a moz-do-not-send="true"
          href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>&gt;</div>
      <div>Sent: 6/8/2016 3:35:05 PM</div>
      <div>Subject: Re: [webfinger] [apps-discuss] Mail client
        configuration via WebFinger</div>
      <div><br>
      </div>
      <div id="x14ca4e8a6f9d44b" style=" color: #000000">
        <blockquote cite="57587369.20405@dmfs.org" type="cite"
          class="cite2"> All,<br>
          <br>
          I've created a GitHub repository to track open issues with the
          current draft, see <a moz-do-not-send="true"
            class="moz-txt-link-freetext"
            href="https://github.com/CalConnect/AUTODISCOVERY/issues">https://github.com/CalConnect/AUTODISCOVERY/issues</a><br>
          You're welcome to contribute to the discussion, either by
          creating a new issue or by commenting on an existing one.<br>
          <br>
          Thanks,<br>
          <br>
          Marten<br>
          <br>
          <div class="moz-cite-prefix">Am 05.06.2016 um 23:00 schrieb
            Marten Gajda:<br>
          </div>
          <blockquote cite="mid:575492E1.2000805@dmfs.org" type="cite"
            class="cite"> I think OpenID Connect already covers the
            discovery of everything you need to do OAuth2. That involves
            Webfinger, but there is no need to protect this request,
            because it doesn't contain personal information.<br>
            So we don't need to reinvent the OAuth2 bootstrapping
            sequence.<br>
            The only minor issue I see is that you may have to ask the
            user twice to grant access. Once to authorize the client to
            access the configuration document and another time to
            authorize the client to access the individual services. The
            second step is necessary, because the scope tokens of these
            services are not known when the first authorization request
            is presented to the user. The problem with that is, there
            doesn't seem to be a mechanism to broaden scope, without
            allowing the user to switch to a different account. To get
            access to the individual services, the client needs to start
            another authorization code grant. But the user is always
            free to log out and log in with a different account before
            granting access.<br>
            <br>
            Marten<br>
            <br>
            <div class="moz-cite-prefix">Am 03.06.2016 um 20:13 schrieb
              George Fletcher:<br>
            </div>
            <blockquote
              cite="mid:39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com"
              type="cite" class="cite"> Did a quick scan of the draft
              document. Given that more and more systems are trying to
              remove the need for passwords, it seems like the final
              solution needs to support 2FA and biometric mechanisms for
              "HTTP authentication". I definitely would not want the
              webfinger instance releasing my config data without my
              "authentication". I suppose OAuth2 could be used to
              protect the webfinger APIs though there is a bit of a
              chicken-and-egg here:)<br>
              <br>
              I kind of like the suggestion around returning a 401 with
              data in the WWW-Authenticate header on where to get a
              token to use with the API. This would allow the client to
              start and OAuth2 flow with the Authorization Server
              specified and that would give the user a clear indication
              of what password/credentials are being requested. Once the
              client gets the token, it uses it with the webfinger call
              and now the service-configuration data is returned because
              the token is the authorization for the specified id.<br>
              <br>
              Thanks,<br>
              George<br>
              <br>
              <div class="moz-cite-prefix">On 6/3/16 10:44 AM, Marten
                Gajda wrote:<br>
              </div>
              <blockquote cite="mid:575197C1.3090102@dmfs.org"
                type="cite" class="cite">
                <div class="moz-cite-prefix">Note that the idea behind <a
                    moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03">https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03</a>
                  is to put the service configuration for all services
                  of a provider into a single document.<br>
                  <br>
                  So you would receive something like this:<br>
                  <br>
                  <div>{</div>
                  <div>    "rel " :  "service-configuration",</div>
                  <div>    "href " : <a moz-do-not-send="true"
                      class="moz-txt-link-rfc2396E"
                      href="https://example.com/service-configuration">"https://example.com/service-configuration"</a></div>
                  <div>}</div>
                  <br>
                  If a user uses the same account identifier at another
                  provider the Webfinger request could return their
                  configuration too (given there is some mechanism to
                  add it and the provider actually supports that).<br>
                  <div><br>
                    {</div>
                  <div>    "rel " :  "service-configuration",</div>
                  <div>    "href " : <a moz-do-not-send="true"
                      class="moz-txt-link-rfc2396E"
                      href="https://example.com/service-configuration">"https://example.com/service-configuration"</a></div>
                  <div>},<br>
                    {
                    <div>    "rel " :  "service-configuration",</div>
                    <div>    "href " : <a moz-do-not-send="true"
                        class="moz-txt-link-rfc2396E"
                        href="https://acme-calendar.com/service-configuration">"https://acme-calendar.com/service-configuration"</a></div>
                    <div>}</div>
                    <br>
                    Without that it would be more difficult to setup
                    your account at acme-calendar.com with your login <a
                      moz-do-not-send="true"
                      class="moz-txt-link-rfc2396E"
                      href="mailto:user@example.com">"user@example.com"</a>.
                    acme-calendar.com would have to issue some kind of
                    user-identifier like <a moz-do-not-send="true"
                      class="moz-txt-link-abbreviated"
                      href="mailto:user@acme-calendar.com">user@acme-calendar.com</a>
                    for auto-configuration purposes, even though you
                    don't use it for authentication (because you use <a
                      moz-do-not-send="true"
                      class="moz-txt-link-abbreviated"
                      href="mailto:user@exampe.com">user@exampe.com</a>
                    for authentication). I think that's the idea behind
                    the `acct:` URI scheme, but I don't think that you
                    can explain to users why they need another user
                    identifier and when to use one or the other.<br>
                    But that also raises the privacy concerns I
                    mentioned earlier. If the request is not
                    authenticated, everyone could see that you have an
                    account at acme-calendar.com.<br>
                    <br>
                    Regarding SSO: There is an RFC that extends SASL
                    based authentication to support the token
                    authentication mechanisms as used by OAuth1 and
                    OAuth2, see <a moz-do-not-send="true"
                      class="moz-txt-link-freetext"
                      href="https://tools.ietf.org/html/rfc7628">https://tools.ietf.org/html/rfc7628</a><br>
                    So SSO already works with IMAP, POP3 and SMTP.<br>
                    <br>
                    Cheers<br>
                    <br>
                    Marten<br>
                  </div>
                  <br>
                  <br>
                  <br>
                  Am 03.06.2016 um 15:40 schrieb Paul E. Jones:<br>
                </div>
                <blockquote
                  cite="mid:em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki"
                  type="cite" class="cite">
                  <style>#x14ca4e8a6f9d44b blockquote.cite{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left:1px solid #CCC ;
}
#x14ca4e8a6f9d44b blockquote.cite2{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left:1px solid #CCC;
	margin-top:3px;
	padding-top:0px;
}
#x14ca4e8a6f9d44b .plain pre,#x14ca4e8a6f9d44b .plain tt{
	font-family:monospace;
	font-size:100%;
	font-weight:normal;
	font-style:normal;
}
#x14ca4e8a6f9d44b a img{
	border:0px;
}
#x14ca4e8a6f9d44b{
	font-family:Calibri;
	font-size:11pt;
}
#x14ca4e8a6f9d44b .plain pre,#x14ca4e8a6f9d44b .plain tt{
	font-family:Calibri;
	font-size:11pt;
}</style>
                  <div>Marten,</div>
                  <div> </div>
                  <div> </div>
                  <div id="xb0e07aa6572b4a46adcd7f5ad2d33c48"
                    style="COLOR: #000000">
                    <blockquote class="cite2"
                      cite="575180B6.9010902@dmfs.org" type="cite">
                      <div class="moz-cite-prefix">So how would the UI
                        work?<br>
                        <br>
                        1) User enters user identifier, most likely an
                        email address, like <a moz-do-not-send="true"
                          class="moz-txt-link-rfc2396E"
                          href="mailto:user@example.com">mailto:user@example.com</a>
                        and hits "next"<br>
                        <br>
                        2) Client sends a Webfinger request to <a
                          moz-do-not-send="true"
                          class="moz-txt-link-freetext"
                          href="https://exampe.com/.well-known/webfinger">https://exampe.com/.well-known/webfinger</a>?...



                        to see if there is a configuration document<br>
                        <br>
                          -&gt; response 404 Not Found<br>
                           a) Client falls back to "manual setup" or
                        another auto-configuration mechanism<br>
                        <br>
                          -&gt; response 401 Unauthorized</div>
                    </blockquote>
                    <div> </div>
                    <div>One should not get 401 querying the WebFinger
                      information for the user.  What should happen is
                      that the server should return a JSON object that
                      contains a link relation that might look like
                      this:</div>
                    <div>{</div>
                    <div>    "rel " :  "mail-config",</div>
                    <div>    "href " : <a moz-do-not-send="true"
                        class="moz-txt-link-rfc2396E"
href="https://mailserver.example.com/config?user=paulej%40packetizer.com">"https://mailserver.example.com/config?user=paulej%40packetizer.com"</a></div>
                    <div>}</div>
                    <div> </div>
                    <div>Or something like that.  The mail client should
                      query that URI it is that one that should result
                      in a potential 401.  The JSON format that would
                      come back here would need to be something we
                      define.  It could be based on JRD, but would not
                      have to be.</div>
                    <div> </div>
                    <div>Otherwise, I think the flow looks right.</div>
                    <div> </div>
                    <div> </div>
                    <blockquote class="cite2"
                      cite="575180B6.9010902@dmfs.org" type="cite">
                      <div class="moz-cite-prefix"><br>
                           b) Client asks for password at "example.com"
                        and goes back to step 2 (this time with
                        authentication)<br>
                        <br>
                          -&gt; response 200 Ok<br>
                           c) client moves on to next step<br>
                        <br>
                        3) (optional) Client presents found services to
                        the user to let him select the services to set
                        up<br>
                        <br>
                        4) Client runs the setup handler for each
                        selected service<br>
                        <br>
                        <br>
                        I think in general that could work but it raises
                        two questions:<br>
                        <br>
                        1) How to make sure the user really understands
                        that he's authenticating at example.com in step
                        2b? If the user tries to configure calendar sync
                        with "acme-calendar.com" where his login happens
                        to be <a moz-do-not-send="true"
                          class="moz-txt-link-rfc2396E"
                          href="mailto:user@example.com">mailto:user@example.com</a>
                        he might not be prepared to being asked for his
                        example.com password. Maybe I'm just paranoid or
                        overcautious, but I think that it might easily
                        happen that the users sends his
                        acme-calendar.com password to example.com in
                        that case (since Basic authentication is still
                        the most common mechanism, the client basically
                        sends the password in plain text). </div>
                    </blockquote>
                    <div> </div>
                    <div>Yeah, that's a valid concern.  The only thing I
                      can suggest is that the Subject CN from the
                      certificate is presented to the user. 
                      Alternatively, there could be two passwords: one
                      that is the "configuration password" and one that
                      is the email password.  However, I don't think two
                      passwords will help us.  If I want to hack
                      somebody and can gain access to their WF config, I
                      can auto-config their email client to point to my
                      own IMAP server and just retrieve the password
                      that way.</div>
                    <div> </div>
                    <div>So, I think we have to rely on the certificate
                      presented to the mail client and the user will
                      have to know to trust it.  The mail provider can
                      tell the user "when configuring email, ensure that
                      the configuration server is mailconfig.example.com
                      and do not provide a password if that is not the
                      name of the configuration server indicated."</div>
                    <div> </div>
                    <div>If the mail config information is not protected
                      with a password, we probably would want the
                      customer to verify that the SMTP server
                      information is correct before the password is
                      provided.  These would be the steps users would
                      take if performing manual configuration, but the
                      software presents that information to the user
                      without the user having to enter it.</div>
                    <div> </div>
                    <div> </div>
                    <blockquote class="cite2"
                      cite="575180B6.9010902@dmfs.org" type="cite">
                      <div class="moz-cite-prefix"><br>
                        2) How does the client know which credentials to
                        use to set up the individual services in step 4?
                        Should the client ask the user for the
                        credentials for each service or can it assume
                        that some of them share the same credentials? Is
                        that something an auto-configuration document
                        can help with?</div>
                    </blockquote>
                    <div> </div>
                    <div>It would be nice if there is a config indicator
                      that says "SMTP server and IMAP server passwords
                      are the same", so the client does not have to ask.</div>
                    <div> </div>
                    <div>If we use a "config password" then we could
                      even have the server tell the client the password
                      for services, which would transparently allow
                      those to be different.  Alternatively, the client
                      will have to ask each about each one.</div>
                    <div> </div>
                    <div>For calendaring services, then yes: the client
                      would have to ask the user.  It could ask if it's
                      the same or different than the email password or
                      the config password.  For some services, the
                      authentication mechanisms will be entirely
                      different (like Google Calendar).  The mail client
                      will just have to know how to access the service. 
                      For that reason, I'm a little hesitant to suggest
                      including calendaring service config along with
                      the email config data.  We could have each of
                      those services listed in the users' WebFinger
                      document.  For example, I might have this entry in
                      my WF document:</div>
                    <div>{</div>
                    <div>    "rel" : "calendar"</div>
                    <div>    "href" : "urn:whatever:google"</div>
                    <div>}</div>
                    <div> </div>
                    <div>Note I did not provide a URL.  The reason is
                      that this is an entirely different service that
                      has an entirely different access method.  Maybe
                      the client can ask the user "is <a
                        moz-do-not-send="true"
                        class="moz-txt-link-abbreviated"
                        href="mailto:paulej@packetizer.com">paulej@packetizer.com</a>
                      our user ID for your Google calendar?"  In my
                      case, I don't think it is.  Certainly, it's not my
                      gmail ID.  And, I would not want to advertise that
                      to the world, necessarily.  Anyway, I think we
                      should limit the scope of what we try to do to
                      things that are standard OR we define a generic
                      URN that a client will just have to know how to
                      deal with.</div>
                    <div> </div>
                    <div> </div>
                    <blockquote class="cite2"
                      cite="575180B6.9010902@dmfs.org" type="cite">
                      <div class="moz-cite-prefix">Ideally the server
                        supports some kind of SSO mechanism like OpenID
                        Connect, so you don't need to enter your
                        password multiple times. But a working
                        auto-configuration is really the precondition
                        for this, because an OpenID Connect
                        implementations needs a way to discover the
                        OAuth2 scope tokens to request from the server
                        and auto-configuration is really the way to do
                        that, IMO. For this it would be helpful to have
                        some mechanism to request a broader scope from
                        the user (without allowing him to switch to a
                        different account), but that's a different topic
                        I guess.</div>
                    </blockquote>
                    <div> </div>
                    <div>I definitely like the idea of SSO.  But, I
                      struggle to see how we would use this in practice
                      with mail autoconfig since SMTP, IMAP, and POP
                      servers require a password, anyway.  If we use
                      that as a means to have those passwords provided
                      behind the scenes (as I indicated above), that
                      might be a good argument for using OpenID
                      Connect.  In that way, the ISP can also ensure
                      that passwords are REALLY complex and unknown even
                      to the user.  Not a bad practice, in that we can
                      view those passwords as complex tokens.</div>
                    <div> </div>
                    <div>Would that kind of use of OpenID Connect to
                      retrieve the password be workable?  (I'll admit I
                      don't have so much experience with OpenID
                      Connect.  I implemented OpenID 2.0, but that's not
                      ideal for what we'd want to accomplish here.  I
                      don't have a good feel for how Connect might make
                      this better.)</div>
                    <div> </div>
                    <div>Paul</div>
                    <div> </div>
                  </div>
                  <br>
                  <fieldset class="mimeAttachmentHeader"></fieldset>
                  <br>
                  <pre wrap="">_______________________________________________
webfinger mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
                </blockquote>
                <br>
                <br>
                <pre class="moz-signature" cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
                <br>
                <fieldset class="mimeAttachmentHeader"></fieldset>
                <br>
                <pre wrap="">_______________________________________________
webfinger mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
              </blockquote>
              <br>
            </blockquote>
            <br>
            <pre class="moz-signature" cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
            <br>
            <fieldset class="mimeAttachmentHeader"></fieldset>
            <br>
            <pre wrap="">_______________________________________________
webfinger mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
          </blockquote>
          <br>
          <pre class="moz-signature" cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
        </blockquote>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
webfinger mailing list
<a class="moz-txt-link-abbreviated" href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a class="moz-txt-link-abbreviated" href="mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
  </body>
</html>

--------------080804070500080309020903--


From nobody Wed Jul 13 23:19:35 2016
Return-Path: <paulej@packetizer.com>
X-Original-To: webfinger@ietfa.amsl.com
Delivered-To: webfinger@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CDF9E12D7FF for <webfinger@ietfa.amsl.com>; Wed, 13 Jul 2016 23:19:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.288
X-Spam-Level: 
X-Spam-Status: No, score=-3.288 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RP_MATCHES_RCVD=-1.287, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=packetizer.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id x8_drJrrqnRz for <webfinger@ietfa.amsl.com>; Wed, 13 Jul 2016 23:19:31 -0700 (PDT)
Received: from dublin.packetizer.com (dublin.packetizer.com [75.101.130.125]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 26F8912D5BC for <webfinger@ietf.org>; Wed, 13 Jul 2016 23:19:31 -0700 (PDT)
Received: from [192.168.1.20] (cpe-098-122-181-215.nc.res.rr.com [98.122.181.215] (may be forged)) (authenticated bits=0) by dublin.packetizer.com (8.15.2/8.15.2) with ESMTPSA id u6E6JP1T001584 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 14 Jul 2016 02:19:26 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=packetizer.com; s=dublin; t=1468477166; bh=pevinrryxYV0h5ffk0kGIBMihm4DKCIoE4gZyZFugPU=; h=From:To:Subject:Date:In-Reply-To:References:Reply-To; b=PqyTxt8q9dSgDcfRG1he6v93bilhXhRh4KjcOZgUVbxUolezeOx7rNpuCx2sdBXNw c7OYXXbW0HypMSQrkYUw3AJTU3rzzVRZdYsGPtGft6sFkKo/CI0JpuR5t5PdhdoN9T 41NaiwcH8Q+VtImJhxVJ4/yTuFko3WZrxHb7269c=
From: "Paul E. Jones" <paulej@packetizer.com>
To: "Marten Gajda" <marten@dmfs.org>, "webfinger@ietf.org" <webfinger@ietf.org>
Date: Thu, 14 Jul 2016 06:19:34 +0000
Message-Id: <emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney>
In-Reply-To: <5786C161.7070806@dmfs.org>
References: <em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki> <575197C1.3090102@dmfs.org> <39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com> <575492E1.2000805@dmfs.org> <57587369.20405@dmfs.org> <em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney> <5786C161.7070806@dmfs.org>
User-Agent: eM_Client/7.0.26482.0
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="------=_MB8792D5BC-CE9C-4F6F-802F-75130A039B4B"
X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.6 (dublin.packetizer.com [10.137.60.122]); Thu, 14 Jul 2016 02:19:26 -0400 (EDT)
Archived-At: <https://mailarchive.ietf.org/arch/msg/webfinger/3vnWXv4UPkcuHwGUwquDiCe0t_0>
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via WebFinger
X-BeenThere: webfinger@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
Reply-To: "Paul E. Jones" <paulej@packetizer.com>
List-Id: Discussion of the Webfinger protocol proposal in the Applications Area <webfinger.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webfinger>, <mailto:webfinger-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webfinger/>
List-Post: <mailto:webfinger@ietf.org>
List-Help: <mailto:webfinger-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webfinger>, <mailto:webfinger-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 14 Jul 2016 06:19:35 -0000

--------=_MB8792D5BC-CE9C-4F6F-802F-75130A039B4B
Content-Type: text/plain; format=flowed; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Marten,

I'll comment on each point:

General:
While I supported the original work a few years ago, it was killed=20
partly because some people stood up and said "we already have several=20
discover protocols, why do we need another.  And you were presented with=
=20
much the same on this list when people asked why the DNS mechanism is=20
insufficient.  You provided some good arguments, of which I think=20
individualized configuration is most important.  Let's make sure the new=
=20
draft is scoped to just mail configuration.  (If we want to go further=20
with calendar, contacts, etc. then arguably those should be separate=20
URLs.  My mail and calendar is not provided by the same provider, for=20
example.)

Caching: HTTP allows one to dictate that how long cached data can live.=20
I don't think we need to specify it further.  A client will pull the=20
config when the user configures the client.  There's no reason to cache=20
it beyond that point.  In the off chance it queries a second time, it's=20
not a big deal.  It might get pulled from web cache or perhaps go back=20
to the server.  It really does not matter, since this should not be=20
queried over and over.  Only in the event that a config change is made,=20
the client might need to re-query the config data.  I'm not sure if the=20
client should automate that process or prompt the user "would you like=20
me to re-validate the configuration settings?" Personally, I like the=20
latter.

Certificate pinning: Why? One fetches the mail config file.  The client=20
will authenticate the certificate. Is this just to catch the very rare=20
case where somebody hacks DNS and gets a fake certificate?  That's=20
really a broader Internet infrastructure issue that I think we should=20
solve generically.  (For example, use of notaries, DNSSEC/DANE, etc.=20
Personally, I use DNSSEC/DANE, but somewhere close to zero people make=20
use of that data.)

Certificate Auth: I'm not sure what the problem is here, unless people=20
want to use enterprise-issued certificates (i.e., those that are not=20
from a public CA).  If that is the case, I would not want my mail client=
=20
to insert those into my trusted certificate store.  So, would those be=20
one-time uses?  Not very useful.  I'd say the IT department needs to=20
install whatever root certs are needed.  A client should authenticate=20
the certificates it sees, but we don't need more words about it other=20
than to say the TLS connection must be authenticated.

Document structure:  I think keeping this simple is really best.  I=20
don't think we need multiple mail providers. If the email address is=20
user@example.com, then I think it's reasonable to assume example.com is=20
the provider.  Yes, a user could go enter WebFinger information for some=
=20
other provider, but the average person will not want to do that.  That's=
=20
having the user configure the server so it can configure the client. =20
Not much gained there.  I would have something that's no more complex=20
than something like this:

>{
>  "incoming" :
>  [
>    {
>      "description" : "IMAP",
>      "protocol" : "imap",
>      "servers" :
>      [
>        {
>          "host" : "imap-01.example.com",
>          "port" : 143,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "imap-02.example.com",
>          "port" : 143,
>          "transport" : "starttls"
>        }
>      ]
>    },
>    {
>      "description" : "POP",
>      "protocol" : "pop3",
>      "servers" :
>      [
>        {
>          "host" : "imap-01.example.com",
>          "port" : 110,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "imap-02.example.com",
>          "port" : 110,
>          "transport" : "starttls"
>        }
>      ]
>    }
>  ],
>  "outgoing" :
>  [
>    {
>      "description" : "SMTP",
>      "protocol" : "smtp",
>      "servers" :
>      [
>        {
>          "host" : "smtp-01.example.com",
>          "port" : 587,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "smtp-02.example.com",
>          "port" : 587,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "smtp-01.example.com",
>          "port" : 465,
>          "transport" : "tls"
>        },
>        {
>          "host" : "smtp-02.example.com",
>          "port" : 465,
>          "transport" : "tls"
>        }
>      ]
>    }
>  ]
>}

I use a arrays to offer different protocols (POP3 and IMAP) with=20
descriptions to let the user choose.  If there is only one choice (as in=
=20
the case of SMTP), then the user need not be bothered with selection.=20
There are multiple servers, each intended to be an alternative listed in=
=20
order of preference.

I would define a document for each service that might be made available=20
through WebFinger (email config, calendar config, contacts config). =20
And, each of these documents would be discovered via a different URI. =20
So, in the JRD returned via the WebFinger query, there might be this a=20
"rel" of type "email" with a URI and another of type "contacts",=20
"calendar", etc.  (I did not check to see which rel values are used, but=
=20
the names are not important.)

When a user enters his or her email address, the client can discover=20
which of those services are available and offer them, allowing the user=20
to use or not use each one.  In my case, calendaring is not provided at=20
my domain.  So, I would go to my email program and say "add an account"=20
and enter a new email address.  Since each set of services is=20
individually selectable by the user, it's easy to mix and match email,=20
calendaring, contacts, or whatever from different places.  It will=20
require entering different account credentials, but I think that should=20
be the way it works.

TLS ought to be required, but it could be left to the admin.  WebFinger=20
requires it, but I seriously do not see the security concerns with a=20
simple mail config file like the above.  But, if people want to secure=20
it, they can.  And security should be through whatever mechanisms HTTP=20
presents to the user.  I would not want to invent new ones or try to=20
solve how to do something hypothetically.  My mail server requires a=20
password and I think it's reasonable the HTTP server require the same. =20
Perhaps my calendar requires OAuth.  We could put the URI to the=20
authorization server as a property in the WebFinger reply, like this:

>{
>  "rel" : "mail-config",
>  "href" : "https://mail-config.example.com/paulej",
>  "properties" : {
>    "urn:ietf:params:oauth:authserver" :=20
>"https://oauth.example.com/paulej"
>  }
>}

That might be insufficient for OAuth, since just having the URI to the=20
auth server isn't enough for the Auth server, I think, as it would not=20
necessarily understand the "client_id" parameter.  However, I'm not a=20
guru in OAuth, so perhaps others can suggest improvements here.   The=20
intent is for the client to recognize that it needs to do OAuth=20
authentication before attempting to query the resource to get the actual=
=20
configuration.  I assume we could use the same OAuth token for both=20
accessing the config resource and with the SMTP and IMAP servers. (Those=
=20
could be different credentials, but I would really hope we do not ask=20
users to authenticate multiple times for a single service.)

Paul

------ Original Message ------
From: "Marten Gajda" <marten@dmfs.org>
To: "webfinger@ietf.org" <webfinger@ietf.org>
Sent: 7/13/2016 6:32:01 PM
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via=20
WebFinger

>Hi Paul,
>
>the "current draft" is still the one at=20
>https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03=
=20
>and the issues at GitHub are discussion items for the upcoming draft.
>I wanted to clarify a few points before I start to work on the draft.=20
>If you have anything to add to these points or if you have any other=20
>concerns, please let me know, so we can address them.
>Unless there is some more interest in the certificate stuff, I'm not=20
>going to add this to the draft. We still can add that later on if it=20
>turns out to be useful.
>
>Cheers,
>
>Marten
>
>
>Am 11.07.2016 um 23:31 schrieb Paul E. Jones:
>>Marten,
>>
>>Sorry to just be coming back to this after a whole month passed.
>>
>>What current draft?  Did you write one that I missed?  Or are these=20
>>requirements for the draft you would like to see?
>>
>>Paul
>>
>>------ Original Message ------
>>From: "Marten Gajda" <marten@dmfs.org>
>>To: "webfinger@ietf.org" <webfinger@ietf.org>
>>Sent: 6/8/2016 3:35:05 PM
>>Subject: Re: [webfinger] [apps-discuss] Mail client configuration via=20
>>WebFinger
>>
>>>All,
>>>
>>>I've created a GitHub repository to track open issues with the=20
>>>current draft, see https://github.com/CalConnect/AUTODISCOVERY/issues
>>>You're welcome to contribute to the discussion, either by creating a=20
>>>new issue or by commenting on an existing one.
>>>
>>>Thanks,
>>>
>>>Marten
>>>
>>>Am 05.06.2016 um 23:00 schrieb Marten Gajda:
>>>>I think OpenID Connect already covers the discovery of everything=20
>>>>you need to do OAuth2. That involves Webfinger, but there is no need=
=20
>>>>to protect this request, because it doesn't contain personal=20
>>>>information.
>>>>So we don't need to reinvent the OAuth2 bootstrapping sequence.
>>>>The only minor issue I see is that you may have to ask the user=20
>>>>twice to grant access. Once to authorize the client to access the=20
>>>>configuration document and another time to authorize the client to=20
>>>>access the individual services. The second step is necessary,=20
>>>>because the scope tokens of these services are not known when the=20
>>>>first authorization request is presented to the user. The problem=20
>>>>with that is, there doesn't seem to be a mechanism to broaden scope,=
=20
>>>>without allowing the user to switch to a different account. To get=20
>>>>access to the individual services, the client needs to start another=
=20
>>>>authorization code grant. But the user is always free to log out and=
=20
>>>>log in with a different account before granting access.
>>>>
>>>>Marten
>>>>
>>>>Am 03.06.2016 um 20:13 schrieb George Fletcher:
>>>>>Did a quick scan of the draft document. Given that more and more=20
>>>>>systems are trying to remove the need for passwords, it seems like=20
>>>>>the final solution needs to support 2FA and biometric mechanisms=20
>>>>>for "HTTP authentication". I definitely would not want the=20
>>>>>webfinger instance releasing my config data without my=20
>>>>>"authentication". I suppose OAuth2 could be used to protect the=20
>>>>>webfinger APIs though there is a bit of a chicken-and-egg here:)
>>>>>
>>>>>I kind of like the suggestion around returning a 401 with data in=20
>>>>>the WWW-Authenticate header on where to get a token to use with the=
=20
>>>>>API. This would allow the client to start and OAuth2 flow with the=20
>>>>>Authorization Server specified and that would give the user a clear=
=20
>>>>>indication of what password/credentials are being requested. Once=20
>>>>>the client gets the token, it uses it with the webfinger call and=20
>>>>>now the service-configuration data is returned because the token is=
=20
>>>>>the authorization for the specified id.
>>>>>
>>>>>Thanks,
>>>>>George
>>>>>
>>>>>On 6/3/16 10:44 AM, Marten Gajda wrote:
>>>>>>Note that the idea behind=20
>>>>>>https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-=
03=20
>>>>>>is to put the service configuration for all services of a provider=
=20
>>>>>>into a single document.
>>>>>>
>>>>>>So you would receive something like this:
>>>>>>
>>>>>>{
>>>>>>     "rel " :  "service-configuration",
>>>>>>     "href " : "https://example.com/service-configuration"
>>>>>>}
>>>>>>
>>>>>>If a user uses the same account identifier at another provider the=
=20
>>>>>>Webfinger request could return their configuration too (given=20
>>>>>>there is some mechanism to add it and the provider actually=20
>>>>>>supports that).
>>>>>>
>>>>>>{
>>>>>>     "rel " :  "service-configuration",
>>>>>>     "href " : "https://example.com/service-configuration"
>>>>>>},
>>>>>>{
>>>>>>     "rel " :  "service-configuration",
>>>>>>     "href " : "https://acme-calendar.com/service-configuration"
>>>>>>}
>>>>>>
>>>>>>Without that it would be more difficult to setup your account at=20
>>>>>>acme-calendar.com with your login "user@example.com".=20
>>>>>>acme-calendar.com would have to issue some kind of user-identifier=
=20
>>>>>>like user@acme-calendar.com for auto-configuration purposes, even=20
>>>>>>though you don't use it for authentication (because you use=20
>>>>>>user@exampe.com for authentication). I think that's the idea=20
>>>>>>behind the `acct:` URI scheme, but I don't think that you can=20
>>>>>>explain to users why they need another user identifier and when to=
=20
>>>>>>use one or the other.
>>>>>>But that also raises the privacy concerns I mentioned earlier. If=20
>>>>>>the request is not authenticated, everyone could see that you have=
=20
>>>>>>an account at acme-calendar.com.
>>>>>>
>>>>>>Regarding SSO: There is an RFC that extends SASL based=20
>>>>>>authentication to support the token authentication mechanisms as=20
>>>>>>used by OAuth1 and OAuth2, see https://tools.ietf.org/html/rfc7628
>>>>>>So SSO already works with IMAP, POP3 and SMTP.
>>>>>>
>>>>>>Cheers
>>>>>>
>>>>>>Marten
>>>>>>
>>>>>>
>>>>>>
>>>>>>Am 03.06.2016 um 15:40 schrieb Paul E. Jones:
>>>>>>>Marten,
>>>>>>>
>>>>>>>
>>>>>>>>So how would the UI work?
>>>>>>>>
>>>>>>>>1) User enters user identifier, most likely an email address,=20
>>>>>>>>like mailto:user@example.com and hits "next"
>>>>>>>>
>>>>>>>>2) Client sends a Webfinger request to=20
>>>>>>>>https://exampe.com/.well-known/webfinger?... to see if there is=20
>>>>>>>>a configuration document
>>>>>>>>
>>>>>>>>   -> response 404 Not Found
>>>>>>>>    a) Client falls back to "manual setup" or another=20
>>>>>>>>auto-configuration mechanism
>>>>>>>>
>>>>>>>>   -> response 401 Unauthorized
>>>>>>>
>>>>>>>One should not get 401 querying the WebFinger information for the=
=20
>>>>>>>user.  What should happen is that the server should return a JSON=
=20
>>>>>>>object that contains a link relation that might look like this:
>>>>>>>{
>>>>>>>     "rel " :  "mail-config",
>>>>>>>     "href " :=20
>>>>>>>"https://mailserver.example.com/config?user=3Dpaulej%40packetizer.co=
m"
>>>>>>>}
>>>>>>>
>>>>>>>Or something like that.  The mail client should query that URI it=
=20
>>>>>>>is that one that should result in a potential 401.  The JSON=20
>>>>>>>format that would come back here would need to be something we=20
>>>>>>>define.  It could be based on JRD, but would not have to be.
>>>>>>>
>>>>>>>Otherwise, I think the flow looks right.
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>    b) Client asks for password at "example.com" and goes back to=
=20
>>>>>>>>step 2 (this time with authentication)
>>>>>>>>
>>>>>>>>   -> response 200 Ok
>>>>>>>>    c) client moves on to next step
>>>>>>>>
>>>>>>>>3) (optional) Client presents found services to the user to let=20
>>>>>>>>him select the services to set up
>>>>>>>>
>>>>>>>>4) Client runs the setup handler for each selected service
>>>>>>>>
>>>>>>>>
>>>>>>>>I think in general that could work but it raises two questions:
>>>>>>>>
>>>>>>>>1) How to make sure the user really understands that he's=20
>>>>>>>>authenticating at example.com in step 2b? If the user tries to=20
>>>>>>>>configure calendar sync with "acme-calendar.com" where his login=
=20
>>>>>>>>happens to be mailto:user@example.com he might not be prepared=20
>>>>>>>>to being asked for his example.com password. Maybe I'm just=20
>>>>>>>>paranoid or overcautious, but I think that it might easily=20
>>>>>>>>happen that the users sends his acme-calendar.com password to=20
>>>>>>>>example.com in that case (since Basic authentication is still=20
>>>>>>>>the most common mechanism, the client basically sends the=20
>>>>>>>>password in plain text).
>>>>>>>
>>>>>>>Yeah, that's a valid concern.  The only thing I can suggest is=20
>>>>>>>that the Subject CN from the certificate is presented to the=20
>>>>>>>user.  Alternatively, there could be two passwords: one that is=20
>>>>>>>the "configuration password" and one that is the email password. =
=20
>>>>>>>However, I don't think two passwords will help us.  If I want to=20
>>>>>>>hack somebody and can gain access to their WF config, I can=20
>>>>>>>auto-config their email client to point to my own IMAP server and=
=20
>>>>>>>just retrieve the password that way.
>>>>>>>
>>>>>>>So, I think we have to rely on the certificate presented to the=20
>>>>>>>mail client and the user will have to know to trust it.  The mail=
=20
>>>>>>>provider can tell the user "when configuring email, ensure that=20
>>>>>>>the configuration server is mailconfig.example.com and do not=20
>>>>>>>provide a password if that is not the name of the configuration=20
>>>>>>>server indicated."
>>>>>>>
>>>>>>>If the mail config information is not protected with a password,=20
>>>>>>>we probably would want the customer to verify that the SMTP=20
>>>>>>>server information is correct before the password is provided. =20
>>>>>>>These would be the steps users would take if performing manual=20
>>>>>>>configuration, but the software presents that information to the=20
>>>>>>>user without the user having to enter it.
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>2) How does the client know which credentials to use to set up=20
>>>>>>>>the individual services in step 4? Should the client ask the=20
>>>>>>>>user for the credentials for each service or can it assume that=20
>>>>>>>>some of them share the same credentials? Is that something an=20
>>>>>>>>auto-configuration document can help with?
>>>>>>>
>>>>>>>It would be nice if there is a config indicator that says "SMTP=20
>>>>>>>server and IMAP server passwords are the same", so the client=20
>>>>>>>does not have to ask.
>>>>>>>
>>>>>>>If we use a "config password" then we could even have the server=20
>>>>>>>tell the client the password for services, which would=20
>>>>>>>transparently allow those to be different.  Alternatively, the=20
>>>>>>>client will have to ask each about each one.
>>>>>>>
>>>>>>>For calendaring services, then yes: the client would have to ask=20
>>>>>>>the user.  It could ask if it's the same or different than the=20
>>>>>>>email password or the config password.  For some services, the=20
>>>>>>>authentication mechanisms will be entirely different (like Google=
=20
>>>>>>>Calendar).  The mail client will just have to know how to access=20
>>>>>>>the service.  For that reason, I'm a little hesitant to suggest=20
>>>>>>>including calendaring service config along with the email config=20
>>>>>>>data.  We could have each of those services listed in the users'=20
>>>>>>>WebFinger document.  For example, I might have this entry in my=20
>>>>>>>WF document:
>>>>>>>{
>>>>>>>     "rel" : "calendar"
>>>>>>>     "href" : "urn:whatever:google"
>>>>>>>}
>>>>>>>
>>>>>>>Note I did not provide a URL.  The reason is that this is an=20
>>>>>>>entirely different service that has an entirely different access=20
>>>>>>>method.  Maybe the client can ask the user "is=20
>>>>>>>paulej@packetizer.com our user ID for your Google calendar?"  In=20
>>>>>>>my case, I don't think it is.  Certainly, it's not my gmail ID. =20
>>>>>>>And, I would not want to advertise that to the world,=20
>>>>>>>necessarily.  Anyway, I think we should limit the scope of what=20
>>>>>>>we try to do to things that are standard OR we define a generic=20
>>>>>>>URN that a client will just have to know how to deal with.
>>>>>>>
>>>>>>>
>>>>>>>>Ideally the server supports some kind of SSO mechanism like=20
>>>>>>>>OpenID Connect, so you don't need to enter your password=20
>>>>>>>>multiple times. But a working auto-configuration is really the=20
>>>>>>>>precondition for this, because an OpenID Connect implementations=
=20
>>>>>>>>needs a way to discover the OAuth2 scope tokens to request from=20
>>>>>>>>the server and auto-configuration is really the way to do that,=20
>>>>>>>>IMO. For this it would be helpful to have some mechanism to=20
>>>>>>>>request a broader scope from the user (without allowing him to=20
>>>>>>>>switch to a different account), but that's a different topic I=20
>>>>>>>>guess.
>>>>>>>
>>>>>>>I definitely like the idea of SSO.  But, I struggle to see how we=
=20
>>>>>>>would use this in practice with mail autoconfig since SMTP, IMAP,=
=20
>>>>>>>and POP servers require a password, anyway.  If we use that as a=20
>>>>>>>means to have those passwords provided behind the scenes (as I=20
>>>>>>>indicated above), that might be a good argument for using OpenID=20
>>>>>>>Connect.  In that way, the ISP can also ensure that passwords are=
=20
>>>>>>>REALLY complex and unknown even to the user.  Not a bad practice,=
=20
>>>>>>>in that we can view those passwords as complex tokens.
>>>>>>>
>>>>>>>Would that kind of use of OpenID Connect to retrieve the password=
=20
>>>>>>>be workable?  (I'll admit I don't have so much experience with=20
>>>>>>>OpenID Connect.  I implemented OpenID 2.0, but that's not ideal=20
>>>>>>>for what we'd want to accomplish here.  I don't have a good feel=20
>>>>>>>for how Connect might make this better.)
>>>>>>>
>>>>>>>Paul
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>_______________________________________________ webfinger mailing=
=20
>>>>>>>list=20
>>>>>>>webfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>>>>>>
>>>>>>
>>>>>>-- Marten Gajda CEO dmfs GmbH Schandauer Stra=C3=9Fe 34 01309 Dresden=
=20
>>>>>>GERMANY phone: +49 177 4427167 email: marten@dmfs.org Managing=20
>>>>>>Director: Marten Gajda Registered address: Dresden Registered No.:=
=20
>>>>>>AG Dresden HRB 34881 VAT Reg. No.: DE303248743
>>>>>>
>>>>>>_______________________________________________ webfinger mailing=20
>>>>>>list=20
>>>>>>webfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>>>>>
>>>>
>>>>-- Marten Gajda CEO dmfs GmbH Schandauer Stra=C3=9Fe 34 01309 Dresden=
=20
>>>>GERMANY phone: +49 177 4427167 email: marten@dmfs.org Managing=20
>>>>Director: Marten Gajda Registered address: Dresden Registered No.:=20
>>>>AG Dresden HRB 34881 VAT Reg. No.: DE303248743
>>>>
>>>>_______________________________________________ webfinger mailing=20
>>>>list=20
>>>>webfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>>>
>>>-- Marten Gajda CEO dmfs GmbH Schandauer Stra=C3=9Fe 34 01309 Dresden=
=20
>>>GERMANY phone: +49 177 4427167 email: marten@dmfs.org Managing=20
>>>Director: Marten Gajda Registered address: Dresden Registered No.: AG=
=20
>>>Dresden HRB 34881 VAT Reg. No.: DE303248743
>>
>>
>>_______________________________________________ webfinger mailing list=
=20
>>webfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>
>-- Marten Gajda CEO dmfs GmbH Schandauer Stra=C3=9Fe 34 01309 Dresden=20
>GERMANY phone: +49 177 4427167 email: marten@dmfs.org Managing=20
>Director: Marten Gajda Registered address: Dresden Registered No.: AG=20
>Dresden HRB 34881 VAT Reg. No.: DE303248743
--------=_MB8792D5BC-CE9C-4F6F-802F-75130A039B4B
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><head>
   =20
  <style>blockquote.cite
{margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:=
 0px; border-left-width: 1px; border-left-style: solid; border-left-color:=
 rgb(204, 204, 204);}
blockquote.cite2
{margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:=
 0px; border-left-width: 1px; border-left-style: solid; border-left-color:=
 rgb(204, 204, 204); margin-top: 3px; padding-top: 0px;}
a img
{border: 0px;}
body
{font-family: Calibri; font-size: 11pt;}
</style></head>
  <body background=3D""><div>Marten,</div><div><br></div><div>I'll comment=
 on each point:</div><div><br></div><div>General:</div><div>While I support=
ed the original work a few years ago, it was killed partly because some =
people stood up and said "we already have several discover protocols, why=
 do we need another. &nbsp;And you were presented with much the same on =
this list when people asked why the DNS mechanism is insufficient. &nbsp;Yo=
u provided some good arguments, of which I think individualized configurati=
on is most important. &nbsp;Let's make sure the new draft is scoped to just=
 mail configuration. &nbsp;(If we want to go further with calendar, contact=
s, etc. then arguably those should be separate URLs. &nbsp;My mail and cale=
ndar is not provided by the same provider, for example.)</div><div><br></di=
v><div>Caching: HTTP allows one to dictate that how long cached data can=
 live. I don't think we need to specify it further. &nbsp;A client will =
pull the config when the user configures the client. &nbsp;There's no reaso=
n to cache it beyond that point. &nbsp;In the off chance it queries a secon=
d time, it's not a big deal. &nbsp;It might get pulled from web cache or=
 perhaps go back to the server. &nbsp;It really does not matter, since this=
 should not be queried over and over. &nbsp;Only in the event that a config=
 change is made, the client might need to re-query the config data. &nbsp;I=
'm not sure if the client should automate that process or prompt the user=
 "would you like me to re-validate the configuration settings?" Personally,=
 I like the latter.</div><div><br></div><div>Certificate pinning: Why? One=
 fetches the mail config file. &nbsp;The client will authenticate the certi=
ficate. Is this just to catch the very rare case where somebody hacks DNS=
 and gets a fake certificate? &nbsp;That's really a broader Internet infras=
tructure issue that I think we should solve generically. &nbsp;(For example=
, use of notaries, DNSSEC/DANE, etc. Personally, I use DNSSEC/DANE, but =
somewhere close to zero people make use of that data.)</div><div><br></div>=
<div>Certificate Auth: I'm not sure what the problem is here, unless people=
 want to use enterprise-issued certificates (i.e., those that are not from=
 a public CA). &nbsp;If that is the case, I would not want my mail client=
 to insert those into my trusted certificate store. &nbsp;So, would those=
 be one-time uses? &nbsp;Not very useful. &nbsp;I'd say the IT department=
 needs to install whatever root certs are needed. &nbsp;A client should =
authenticate the certificates it sees, but we don't need more words about=
 it other than to say the TLS connection must be authenticated.</div><div><=
br></div><div>Document structure: &nbsp;I think keeping this simple is real=
ly best. &nbsp;I don't think we need multiple mail providers. If the email=
 address is <a href=3D"mailto:user@example.com, ">user@example.com, </a>the=
n I think it's reasonable to assume example.com is the provider. &nbsp;Yes,=
 a user could go enter WebFinger information for some other provider, but=
 the average person will not want to do that. &nbsp;That's having the user=
 configure the server so it can configure the client. &nbsp;Not much gained=
 there. &nbsp;I would have something that's no more complex than something=
 like this:</div><div><br></div><blockquote style=3D"margin: 0 0 0 40px;=
 border: none; padding: 0px;"><div><font face=3D"Courier New" size=3D"2"=
 style=3D"font-size: 10pt;">{</font></div><div><font face=3D"Courier New"=
 size=3D"2" style=3D"font-size: 10pt;"> &nbsp;"incoming" :</font></div><div=
><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp;[<=
/font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:=
 10pt;"> &nbsp; &nbsp;{</font></div><div><font face=3D"Courier New" size=
=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp;"description" : "IMA=
P",</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-si=
ze: 10pt;"> &nbsp; &nbsp; &nbsp;"protocol" : "imap",</font></div><div><font=
 face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp;=
 &nbsp;"servers" :</font></div><div><font face=3D"Courier New" size=3D"2"=
 style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp;[</font></div><div><font=
 face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp;=
 &nbsp; &nbsp;{</font></div><div><font face=3D"Courier New" size=3D"2" styl=
e=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"host" : "imap-01=
.example.com",</font></div><div><font face=3D"Courier New" size=3D"2" style=
=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"port" : 143,</fon=
t></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt=
;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"transport" : "starttls"</font></div>=
<div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbs=
p; &nbsp; &nbsp; &nbsp;},</font></div><div><font face=3D"Courier New" size=
=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp;{</font></div=
><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"host" : "imap-02.example.com",</font></d=
iv><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;">=
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"port" : 143,</font></div><div><font =
face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp;=
 &nbsp; &nbsp; &nbsp;"transport" : "starttls"</font></div><div><font face=
=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp=
; &nbsp;}</font></div><div><font face=3D"Courier New" size=3D"2" style=3D=
"font-size: 10pt;"> &nbsp; &nbsp; &nbsp;]</font></div><div><font face=3D=
"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp;},</font>=
</div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"=
> &nbsp; &nbsp;{</font></div><div><font face=3D"Courier New" size=3D"2" =
style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp;"description" : "POP",</fon=
t></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt=
;"> &nbsp; &nbsp; &nbsp;"protocol" : "pop3",</font></div><div><font face=
=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp=
;"servers" :</font></div><div><font face=3D"Courier New" size=3D"2" style=
=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp;[</font></div><div><font face=
=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp=
; &nbsp;{</font></div><div><font face=3D"Courier New" size=3D"2" style=3D=
"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"host" : "imap-01.exa=
mple.com",</font></div><div><font face=3D"Courier New" size=3D"2" style=3D=
"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"port" : 110,</font><=
/div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;">=
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"transport" : "starttls"</font></div><di=
v><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp;=
 &nbsp; &nbsp; &nbsp;},</font></div><div><font face=3D"Courier New" size=
=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp;{</font></div=
><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"host" : "imap-02.example.com",</font></d=
iv><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;">=
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"port" : 110,</font></div><div><font =
face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp;=
 &nbsp; &nbsp; &nbsp;"transport" : "starttls"</font></div><div><font face=
=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp=
; &nbsp;}</font></div><div><font face=3D"Courier New" size=3D"2" style=3D=
"font-size: 10pt;"> &nbsp; &nbsp; &nbsp;]</font></div><div><font face=3D=
"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp;}</font><=
/div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;">=
 &nbsp;],</font></div><div><font face=3D"Courier New" size=3D"2" style=3D=
"font-size: 10pt;"> &nbsp;"outgoing" :</font></div><div><font face=3D"Couri=
er New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp;[</font></div><div><fo=
nt face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp=
;{</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-siz=
e: 10pt;"> &nbsp; &nbsp; &nbsp;"description" : "SMTP",</font></div><div><fo=
nt face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp=
; &nbsp;"protocol" : "smtp",</font></div><div><font face=3D"Courier New"=
 size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp;"servers" :</fo=
nt></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: =
10pt;"> &nbsp; &nbsp; &nbsp;[</font></div><div><font face=3D"Courier New"=
 size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp;{</font>=
</div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"=
> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"host" : "smtp-01.example.com",</font><=
/div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;">=
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"port" : 587,</font></div><div><font =
face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp;=
 &nbsp; &nbsp; &nbsp;"transport" : "starttls"</font></div><div><font face=
=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp=
; &nbsp;},</font></div><div><font face=3D"Courier New" size=3D"2" style=3D=
"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp;{</font></div><div><font =
face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp;=
 &nbsp; &nbsp; &nbsp;"host" : "smtp-02.example.com",</font></div><div><font=
 face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp;=
 &nbsp; &nbsp; &nbsp;"port" : 587,</font></div><div><font face=3D"Courier=
 New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp;=
 &nbsp;"transport" : "starttls"</font></div><div><font face=3D"Courier New"=
 size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp;},</font=
></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;=
"> &nbsp; &nbsp; &nbsp; &nbsp;{</font></div><div><font face=3D"Courier New"=
 size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"=
host" : "smtp-01.example.com",</font></div><div><font face=3D"Courier New"=
 size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"=
port" : 465,</font></div><div><font face=3D"Courier New" size=3D"2" style=
=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"transport" : "tls=
"</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size=
: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp;},</font></div><div><font face=3D"Cour=
ier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp;=
{</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size=
: 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"host" : "smtp-02.example.com",=
</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:=
 10pt;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"port" : 465,</font></div><div><=
font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;"transport" : "tls"</font></div><div><font face=
=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp; &nbsp=
; &nbsp;}</font></div><div><font face=3D"Courier New" size=3D"2" style=3D=
"font-size: 10pt;"> &nbsp; &nbsp; &nbsp;]</font></div><div><font face=3D=
"Courier New" size=3D"2" style=3D"font-size: 10pt;"> &nbsp; &nbsp;}</font><=
/div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size: 10pt;">=
 &nbsp;]</font></div><div><font face=3D"Courier New" size=3D"2" style=3D=
"font-size: 10pt;">}</font></div></blockquote><div><br></div><div>I use =
a arrays to offer different protocols (POP3 and IMAP) with descriptions =
to let the user choose. &nbsp;If there is only one choice (as in the case=
 of SMTP), then the user need not be bothered with selection. There are =
multiple servers, each intended to be an alternative listed in order of =
preference.</div><div><br></div><div>I would define a document for each =
service that might be made available through WebFinger (email config, calen=
dar config, contacts config). &nbsp;And, each of these documents would be=
 discovered via a different URI. &nbsp;So, in the JRD returned via the WebF=
inger query, there might be this a "rel" of type "email" with a URI and =
another of type "contacts", "calendar", etc. &nbsp;(I did not check to see=
 which rel values are used, but the names are not important.)</div><div><br=
></div><div>When a user enters his or her email address, the client can =
discover which of those services are available and offer them, allowing =
the user to use or not use each one. &nbsp;In my case, calendaring is not=
 provided at my domain. &nbsp;So, I would go to my email program and say=
 "add an account" and enter a new email address. &nbsp;Since each set of=
 services is individually selectable by the user, it's easy to mix and matc=
h email, calendaring, contacts, or whatever from different places. &nbsp;It=
 will require entering different account credentials, but I think that shou=
ld be the way it works.</div><div><br></div><div>TLS ought to be required,=
 but it could be left to the admin. &nbsp;WebFinger requires it, but I seri=
ously do not see the security concerns with a simple mail config file like=
 the above. &nbsp;But, if people want to secure it, they can. &nbsp;And =
security should be through whatever mechanisms HTTP presents to the user.=
 &nbsp;I would not want to invent new ones or try to solve how to do someth=
ing hypothetically. &nbsp;My mail server requires a password and I think=
 it's reasonable the HTTP server require the same. &nbsp;Perhaps my calenda=
r requires OAuth. &nbsp;We could put the URI to the authorization server=
 as a property in the WebFinger reply, like this:</div><div><br></div><bloc=
kquote style=3D"margin: 0 0 0 40px; border: none; padding: 0px;"><div><font=
 face=3D"Courier New" size=3D"2">{</font></div><div><font face=3D"Courier=
 New" size=3D"2"> &nbsp;"rel" : "mail-config",</font></div><div><font face=
=3D"Courier New" size=3D"2"> &nbsp;"href" : "<a href=3D"https://mail-config=
.example.com/paulej">https://mail-config.example.com/paulej</a>",</font></d=
iv><div><font face=3D"Courier New" size=3D"2"> &nbsp;"properties" : {</font=
></div><div><font face=3D"Courier New" size=3D"2"> &nbsp; &nbsp;"urn:ietf:p=
arams:oauth:authserver" : "<a href=3D"https://oauth.example.com/paulej">htt=
ps://oauth.example.com/paulej</a>"</font></div><div><font face=3D"Courier=
 New" size=3D"2"> &nbsp;}</font></div><div><font face=3D"Courier New" size=
=3D"2">}</font></div></blockquote><div><br></div><div>That might be insuffi=
cient for OAuth, since just having the URI to the auth server isn't enough=
 for the Auth server, I think, as it would not necessarily understand the=
 "client_id" parameter. &nbsp;However, I'm not a guru in OAuth, so perhaps=
 others can suggest improvements here. &nbsp; The intent is for the client=
 to recognize that it needs to do OAuth authentication before attempting=
 to query the resource to get the actual configuration. &nbsp;I assume we=
 could use the same OAuth token for both accessing the config resource and=
 with the SMTP and IMAP servers. (Those could be different credentials, =
but I would really hope we do not ask users to authenticate multiple times=
 for a single service.)</div><div><br></div><div>Paul</div><div><br></div>
<div>------ Original Message ------</div>
<div>From: "Marten Gajda" &lt;<a href=3D"mailto:marten@dmfs.org">marten@dmf=
s.org</a>&gt;</div>
<div>To: "webfinger@ietf.org" &lt;<a href=3D"mailto:webfinger@ietf.org">web=
finger@ietf.org</a>&gt;</div>
<div>Sent: 7/13/2016 6:32:01 PM</div>
<div>Subject: Re: [webfinger] [apps-discuss] Mail client configuration via=
 WebFinger</div><div><br></div>
<div id=3D"x417b0e5e1e464b9" style=3D" color: #000000"><blockquote cite=3D=
"5786C161.7070806@dmfs.org" type=3D"cite" class=3D"cite2">

    Hi Paul,<br>
    <br>
    the "current draft" is still the one at
    <a class=3D"moz-txt-link-freetext" href=3D"https://tools.ietf.org/html/=
draft-daboo-aggregated-service-discovery-03" style=3D"">https://tools.ietf.=
org/html/draft-daboo-aggregated-service-discovery-03</a>
    and the issues at GitHub are discussion items for the upcoming
    draft.<br>
    I wanted to clarify a few points before I start to work on the
    draft. If you have anything to add to these points or if you have
    any other concerns, please let me know, so we can address them.<br>
    Unless there is some more interest in the certificate stuff, I'm not
    going to add this to the draft. We still can add that later on if it
    turns out to be useful.<br>
    <br>
    Cheers,<br>
    <br>
    Marten<br>
    <br>
    <br>
    <div class=3D"moz-cite-prefix">Am 11.07.2016 um 23:31 schrieb Paul E.
      Jones:<br>
    </div>
    <blockquote cite=3D"mid:em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney"=
 type=3D"cite" class=3D"cite">
      <style>#x417b0e5e1e464b9 blockquote.cite{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left-width:1px;
	border-left-style:solid;
	border-left-color:#CCC;
}
#x417b0e5e1e464b9 blockquote.cite2{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left-width:1px;
	border-left-style:solid;
	border-left-color:#CCC;
	margin-top:3px;
	padding-top:0px;
}
#x417b0e5e1e464b9 a img{
	border:0px;
}
#x417b0e5e1e464b9{
	font-family:Calibri;
	font-size:11pt;
}</style>
      <div>Marten,</div>
      <div><br>
      </div>
      <div>Sorry to just be coming back to this after a whole month
        passed.</div>
      <div><br>
      </div>
      <div>What current draft? &nbsp;Did you write one that I missed? &nbsp=
;Or are
        these requirements for the draft you would like to see?</div>
      <div><br>
      </div>
      <div>Paul</div>
      <div><br>
      </div>
      <div>------ Original Message ------</div>
      <div>From: "Marten Gajda" &lt;<a moz-do-not-send=3D"true" href=3D"mai=
lto:marten@dmfs.org">marten@dmfs.org</a>&gt;</div>
      <div>To: <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:webfinger@=
ietf.org">"webfinger@ietf.org"</a> &lt;<a moz-do-not-send=3D"true" href=3D=
"mailto:webfinger@ietf.org">webfinger@ietf.org</a>&gt;</div>
      <div>Sent: 6/8/2016 3:35:05 PM</div>
      <div>Subject: Re: [webfinger] [apps-discuss] Mail client
        configuration via WebFinger</div>
      <div><br>
      </div>
      <div id=3D"x14ca4e8a6f9d44b" style=3D" color: #000000">
        <blockquote cite=3D"57587369.20405@dmfs.org" type=3D"cite" class=
=3D"cite2"> All,<br>
          <br>
          I've created a GitHub repository to track open issues with the
          current draft, see <a moz-do-not-send=3D"true" class=3D"moz-txt-l=
ink-freetext" href=3D"https://github.com/CalConnect/AUTODISCOVERY/issues">h=
ttps://github.com/CalConnect/AUTODISCOVERY/issues</a><br>
          You're welcome to contribute to the discussion, either by
          creating a new issue or by commenting on an existing one.<br>
          <br>
          Thanks,<br>
          <br>
          Marten<br>
          <br>
          <div class=3D"moz-cite-prefix">Am 05.06.2016 um 23:00 schrieb
            Marten Gajda:<br>
          </div>
          <blockquote cite=3D"mid:575492E1.2000805@dmfs.org" type=3D"cite"=
 class=3D"cite"> I think OpenID Connect already covers the
            discovery of everything you need to do OAuth2. That involves
            Webfinger, but there is no need to protect this request,
            because it doesn't contain personal information.<br>
            So we don't need to reinvent the OAuth2 bootstrapping
            sequence.<br>
            The only minor issue I see is that you may have to ask the
            user twice to grant access. Once to authorize the client to
            access the configuration document and another time to
            authorize the client to access the individual services. The
            second step is necessary, because the scope tokens of these
            services are not known when the first authorization request
            is presented to the user. The problem with that is, there
            doesn't seem to be a mechanism to broaden scope, without
            allowing the user to switch to a different account. To get
            access to the individual services, the client needs to start
            another authorization code grant. But the user is always
            free to log out and log in with a different account before
            granting access.<br>
            <br>
            Marten<br>
            <br>
            <div class=3D"moz-cite-prefix">Am 03.06.2016 um 20:13 schrieb
              George Fletcher:<br>
            </div>
            <blockquote cite=3D"mid:39fe811e-282a-2a08-2928-c78c3947a6b9@ao=
l.com" type=3D"cite" class=3D"cite"> Did a quick scan of the draft
              document. Given that more and more systems are trying to
              remove the need for passwords, it seems like the final
              solution needs to support 2FA and biometric mechanisms for
              "HTTP authentication". I definitely would not want the
              webfinger instance releasing my config data without my
              "authentication". I suppose OAuth2 could be used to
              protect the webfinger APIs though there is a bit of a
              chicken-and-egg here:)<br>
              <br>
              I kind of like the suggestion around returning a 401 with
              data in the WWW-Authenticate header on where to get a
              token to use with the API. This would allow the client to
              start and OAuth2 flow with the Authorization Server
              specified and that would give the user a clear indication
              of what password/credentials are being requested. Once the
              client gets the token, it uses it with the webfinger call
              and now the service-configuration data is returned because
              the token is the authorization for the specified id.<br>
              <br>
              Thanks,<br>
              George<br>
              <br>
              <div class=3D"moz-cite-prefix">On 6/3/16 10:44 AM, Marten
                Gajda wrote:<br>
              </div>
              <blockquote cite=3D"mid:575197C1.3090102@dmfs.org" type=3D=
"cite" class=3D"cite">
                <div class=3D"moz-cite-prefix">Note that the idea behind=
 <a moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext" href=3D"https:=
//tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03">https://=
tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03</a>
                  is to put the service configuration for all services
                  of a provider into a single document.<br>
                  <br>
                  So you would receive something like this:<br>
                  <br>
                  <div>{</div>
                  <div>&nbsp;&nbsp;&nbsp; "rel "&nbsp;: &nbsp;"service-conf=
iguration",</div>
                  <div>&nbsp;&nbsp;&nbsp; "href " : <a moz-do-not-send=3D=
"true" class=3D"moz-txt-link-rfc2396E" href=3D"https://example.com/service-=
configuration">"https://example.com/service-configuration"</a></div>
                  <div>}</div>
                  <br>
                  If a user uses the same account identifier at another
                  provider the Webfinger request could return their
                  configuration too (given there is some mechanism to
                  add it and the provider actually supports that).<br>
                  <div><br>
                    {</div>
                  <div>&nbsp;&nbsp;&nbsp; "rel "&nbsp;: &nbsp;"service-conf=
iguration",</div>
                  <div>&nbsp;&nbsp;&nbsp; "href " : <a moz-do-not-send=3D=
"true" class=3D"moz-txt-link-rfc2396E" href=3D"https://example.com/service-=
configuration">"https://example.com/service-configuration"</a></div>
                  <div>},<br>
                    {
                    <div>&nbsp;&nbsp;&nbsp; "rel "&nbsp;: &nbsp;"service-co=
nfiguration",</div>
                    <div>&nbsp;&nbsp;&nbsp; "href " : <a moz-do-not-send=
=3D"true" class=3D"moz-txt-link-rfc2396E" href=3D"https://acme-calendar.com=
/service-configuration">"https://acme-calendar.com/service-configuration"</=
a></div>
                    <div>}</div>
                    <br>
                    Without that it would be more difficult to setup
                    your account at acme-calendar.com with your login <a=
 moz-do-not-send=3D"true" class=3D"moz-txt-link-rfc2396E" href=3D"mailto:us=
er@example.com">"user@example.com"</a>.
                    acme-calendar.com would have to issue some kind of
                    user-identifier like <a moz-do-not-send=3D"true" class=
=3D"moz-txt-link-abbreviated" href=3D"mailto:user@acme-calendar.com">user@a=
cme-calendar.com</a>
                    for auto-configuration purposes, even though you
                    don't use it for authentication (because you use <a =
moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=3D"mailto:=
user@exampe.com">user@exampe.com</a>
                    for authentication). I think that's the idea behind
                    the `acct:` URI scheme, but I don't think that you
                    can explain to users why they need another user
                    identifier and when to use one or the other.<br>
                    But that also raises the privacy concerns I
                    mentioned earlier. If the request is not
                    authenticated, everyone could see that you have an
                    account at acme-calendar.com.<br>
                    <br>
                    Regarding SSO: There is an RFC that extends SASL
                    based authentication to support the token
                    authentication mechanisms as used by OAuth1 and
                    OAuth2, see <a moz-do-not-send=3D"true" class=3D"moz-tx=
t-link-freetext" href=3D"https://tools.ietf.org/html/rfc7628">https://tools=
.ietf.org/html/rfc7628</a><br>
                    So SSO already works with IMAP, POP3 and SMTP.<br>
                    <br>
                    Cheers<br>
                    <br>
                    Marten<br>
                  </div>
                  <br>
                  <br>
                  <br>
                  Am 03.06.2016 um 15:40 schrieb Paul E. Jones:<br>
                </div>
                <blockquote cite=3D"mid:em44c60c65-2d14-46a0-adb3-a52d38d16=
0ed@helsinki" type=3D"cite" class=3D"cite">
                  <style>#x417b0e5e1e464b9 #x14ca4e8a6f9d44b blockquote.cit=
e{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left:1px solid #CCC ;
}
#x417b0e5e1e464b9 #x14ca4e8a6f9d44b blockquote.cite2{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left:1px solid #CCC;
	margin-top:3px;
	padding-top:0px;
}
#x417b0e5e1e464b9 #x14ca4e8a6f9d44b .plain pre,#x417b0e5e1e464b9 #x14ca4e8a=
6f9d44b .plain tt{
	font-family:monospace;
	font-size:100%;
	font-weight:normal;
	font-style:normal;
}
#x417b0e5e1e464b9 #x14ca4e8a6f9d44b a img{
	border:0px;
}
#x417b0e5e1e464b9 #x14ca4e8a6f9d44b{
	font-family:Calibri;
	font-size:11pt;
}
#x417b0e5e1e464b9 #x14ca4e8a6f9d44b .plain pre,#x417b0e5e1e464b9 #x14ca4e8a=
6f9d44b .plain tt{
	font-family:Calibri;
	font-size:11pt;
}</style>
                  <div>Marten,</div>
                  <div>&nbsp;</div>
                  <div>&nbsp;</div>
                  <div id=3D"xb0e07aa6572b4a46adcd7f5ad2d33c48" style=3D=
"COLOR: #000000">
                    <blockquote class=3D"cite2" cite=3D"575180B6.9010902@dm=
fs.org" type=3D"cite">
                      <div class=3D"moz-cite-prefix">So how would the UI
                        work?<br>
                        <br>
                        1) User enters user identifier, most likely an
                        email address, like <a moz-do-not-send=3D"true" =
class=3D"moz-txt-link-rfc2396E" href=3D"mailto:user@example.com">mailto:use=
r@example.com</a>
                        and hits "next"<br>
                        <br>
                        2) Client sends a Webfinger request to <a moz-do-no=
t-send=3D"true" class=3D"moz-txt-link-freetext" href=3D"https://exampe.com/=
.well-known/webfinger">https://exampe.com/.well-known/webfinger</a>?...



                        to see if there is a configuration document<br>
                        <br>
                        &nbsp; -&gt; response 404 Not Found<br>
                        &nbsp;&nbsp; a) Client falls back to "manual setup"=
 or
                        another auto-configuration mechanism<br>
                        <br>
                        &nbsp; -&gt; response 401 Unauthorized</div>
                    </blockquote>
                    <div>&nbsp;</div>
                    <div>One should not get 401 querying the WebFinger
                      information for the user.&nbsp; What should happen=
 is
                      that the server should return a JSON object that
                      contains a link relation that might look like
                      this:</div>
                    <div>{</div>
                    <div>&nbsp;&nbsp;&nbsp; "rel "&nbsp;: &nbsp;"mail-confi=
g",</div>
                    <div>&nbsp;&nbsp;&nbsp; "href " : <a moz-do-not-send=
=3D"true" class=3D"moz-txt-link-rfc2396E" href=3D"https://mailserver.exampl=
e.com/config?user=3Dpaulej%40packetizer.com">"https://mailserver.example.co=
m/config?user=3Dpaulej%40packetizer.com"</a></div>
                    <div>}</div>
                    <div>&nbsp;</div>
                    <div>Or something like that.&nbsp; The mail client shou=
ld
                      query that URI it is that one that should result
                      in a potential 401.&nbsp; The JSON format that would
                      come back here would need to be something we
                      define.&nbsp; It could be based on JRD, but would =
not
                      have to be.</div>
                    <div>&nbsp;</div>
                    <div>Otherwise, I think the flow looks right.</div>
                    <div>&nbsp;</div>
                    <div>&nbsp;</div>
                    <blockquote class=3D"cite2" cite=3D"575180B6.9010902@dm=
fs.org" type=3D"cite">
                      <div class=3D"moz-cite-prefix"><br>
                        &nbsp;&nbsp; b) Client asks for password at "exampl=
e.com"
                        and goes back to step 2 (this time with
                        authentication)<br>
                        <br>
                        &nbsp; -&gt; response 200 Ok<br>
                        &nbsp;&nbsp; c) client moves on to next step<br>
                        <br>
                        3) (optional) Client presents found services to
                        the user to let him select the services to set
                        up<br>
                        <br>
                        4) Client runs the setup handler for each
                        selected service<br>
                        <br>
                        <br>
                        I think in general that could work but it raises
                        two questions:<br>
                        <br>
                        1) How to make sure the user really understands
                        that he's authenticating at example.com in step
                        2b? If the user tries to configure calendar sync
                        with "acme-calendar.com" where his login happens
                        to be <a moz-do-not-send=3D"true" class=3D"moz-txt-=
link-rfc2396E" href=3D"mailto:user@example.com">mailto:user@example.com</a>
                        he might not be prepared to being asked for his
                        example.com password. Maybe I'm just paranoid or
                        overcautious, but I think that it might easily
                        happen that the users sends his
                        acme-calendar.com password to example.com in
                        that case (since Basic authentication is still
                        the most common mechanism, the client basically
                        sends the password in plain text). </div>
                    </blockquote>
                    <div>&nbsp;</div>
                    <div>Yeah, that's a valid concern.&nbsp; The only thing=
 I
                      can suggest is that the Subject CN from the
                      certificate is presented to the user.&nbsp;
                      Alternatively, there could be two passwords: one
                      that is the "configuration password" and one that
                      is the email password.&nbsp; However, I don't think=
 two
                      passwords will help us.&nbsp; If I want to hack
                      somebody and can gain access to their WF config, I
                      can auto-config their email client to point to my
                      own IMAP server and just retrieve the password
                      that way.</div>
                    <div>&nbsp;</div>
                    <div>So, I think we have to rely on the certificate
                      presented to the mail client and the user will
                      have to know to trust it.&nbsp; The mail provider =
can
                      tell the user "when configuring email, ensure that
                      the configuration server is mailconfig.example.com
                      and do not provide a password if that is not the
                      name of the configuration server indicated."</div>
                    <div>&nbsp;</div>
                    <div>If the mail config information is not protected
                      with a password, we probably would want the
                      customer to verify that the SMTP server
                      information is correct before the password is
                      provided.&nbsp; These would be the steps users would
                      take if performing manual configuration, but the
                      software presents that information to the user
                      without the user having to enter it.</div>
                    <div>&nbsp;</div>
                    <div>&nbsp;</div>
                    <blockquote class=3D"cite2" cite=3D"575180B6.9010902@dm=
fs.org" type=3D"cite">
                      <div class=3D"moz-cite-prefix"><br>
                        2) How does the client know which credentials to
                        use to set up the individual services in step 4?
                        Should the client ask the user for the
                        credentials for each service or can it assume
                        that some of them share the same credentials? Is
                        that something an auto-configuration document
                        can help with?</div>
                    </blockquote>
                    <div>&nbsp;</div>
                    <div>It would be nice if there is a config indicator
                      that says "SMTP server and IMAP server passwords
                      are the same", so the client does not have to ask.</d=
iv>
                    <div>&nbsp;</div>
                    <div>If we use a "config password" then we could
                      even have the server tell the client the password
                      for services, which would transparently allow
                      those to be different.&nbsp; Alternatively, the clien=
t
                      will have to ask each about each one.</div>
                    <div>&nbsp;</div>
                    <div>For calendaring services, then yes: the client
                      would have to ask the user.&nbsp; It could ask if =
it's
                      the same or different than the email password or
                      the config password.&nbsp; For some services, the
                      authentication mechanisms will be entirely
                      different (like Google Calendar).&nbsp; The mail clie=
nt
                      will just have to know how to access the service.&nbs=
p;
                      For that reason, I'm a little hesitant to suggest
                      including calendaring service config along with
                      the email config data.&nbsp; We could have each of
                      those services listed in the users' WebFinger
                      document.&nbsp; For example, I might have this entry=
 in
                      my WF document:</div>
                    <div>{</div>
                    <div>&nbsp;&nbsp;&nbsp; "rel" : "calendar"</div>
                    <div>&nbsp;&nbsp;&nbsp; "href" : "urn:whatever:google"<=
/div>
                    <div>}</div>
                    <div>&nbsp;</div>
                    <div>Note I did not provide a URL.&nbsp; The reason =
is
                      that this is an entirely different service that
                      has an entirely different access method.&nbsp; Maybe
                      the client can ask the user "is <a moz-do-not-send=
=3D"true" class=3D"moz-txt-link-abbreviated" href=3D"mailto:paulej@packetiz=
er.com">paulej@packetizer.com</a>
                      our user ID for&nbsp;your Google calendar?"&nbsp; =
In my
                      case, I don't think it is.&nbsp; Certainly, it's not=
 my
                      gmail ID.&nbsp; And, I would not want to advertise=
 that
                      to the world, necessarily.&nbsp; Anyway, I think we
                      should limit the scope of what we try to do to
                      things that are standard OR we define a generic
                      URN that a client will just have to know how to
                      deal with.</div>
                    <div>&nbsp;</div>
                    <div>&nbsp;</div>
                    <blockquote class=3D"cite2" cite=3D"575180B6.9010902@dm=
fs.org" type=3D"cite">
                      <div class=3D"moz-cite-prefix">Ideally the server
                        supports some kind of SSO mechanism like OpenID
                        Connect, so you don't need to enter your
                        password multiple times. But a working
                        auto-configuration is really the precondition
                        for this, because an OpenID Connect
                        implementations needs a way to discover the
                        OAuth2 scope tokens to request from the server
                        and auto-configuration is really the way to do
                        that, IMO. For this it would be helpful to have
                        some mechanism to request a broader scope from
                        the user (without allowing him to switch to a
                        different account), but that's a different topic
                        I guess.</div>
                    </blockquote>
                    <div>&nbsp;</div>
                    <div>I definitely like the idea of SSO.&nbsp; But, I
                      struggle to see how we would use this in practice
                      with mail autoconfig since SMTP, IMAP, and POP
                      servers require a password, anyway.&nbsp; If we use
                      that as a means to have those passwords provided
                      behind the scenes (as I indicated above), that
                      might be a good argument for using OpenID
                      Connect.&nbsp; In that way, the ISP can also ensure
                      that passwords are REALLY complex and unknown even
                      to the user.&nbsp; Not a bad practice, in that we =
can
                      view those passwords as complex tokens.</div>
                    <div>&nbsp;</div>
                    <div>Would that kind of use of OpenID Connect to
                      retrieve the password be workable?&nbsp; (I'll admit=
 I
                      don't have so much experience with OpenID
                      Connect.&nbsp; I implemented OpenID 2.0, but that's=
 not
                      ideal for what we'd want to accomplish here.&nbsp;=
 I
                      don't have a good feel for how Connect might make
                      this better.)</div>
                    <div>&nbsp;</div>
                    <div>Paul</div>
                    <div>&nbsp;</div>
                  </div>
                  <br>
                  <fieldset class=3D"mimeAttachmentHeader"></fieldset>
                  <br>
                  <pre wrap=3D"">__________________________________________=
_____
webfinger mailing list
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=3D"mail=
to:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext" href=3D"https:/=
/www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/list=
info/webfinger</a>
</pre>
                </blockquote>
                <br>
                <br>
                <pre class=3D"moz-signature" cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=
=3D"mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
                <br>
                <fieldset class=3D"mimeAttachmentHeader"></fieldset>
                <br>
                <pre wrap=3D"">____________________________________________=
___
webfinger mailing list
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=3D"mail=
to:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext" href=3D"https:/=
/www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/list=
info/webfinger</a>
</pre>
              </blockquote>
              <br>
            </blockquote>
            <br>
            <pre class=3D"moz-signature" cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=
=3D"mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
            <br>
            <fieldset class=3D"mimeAttachmentHeader"></fieldset>
            <br>
            <pre wrap=3D"">_______________________________________________
webfinger mailing list
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=3D"mail=
to:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext" href=3D"https:/=
/www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/list=
info/webfinger</a>
</pre>
          </blockquote>
          <br>
          <pre class=3D"moz-signature" cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=
=3D"mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
        </blockquote>
      </div>
      <br>
      <fieldset class=3D"mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap=3D"">_______________________________________________
webfinger mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:webfinger@ietf.org">we=
bfinger@ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/lis=
tinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
    </blockquote>
    <br>
    <pre class=3D"moz-signature" cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:marten@dmfs.org=
">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
  </blockquote></div>


</body></html>
--------=_MB8792D5BC-CE9C-4F6F-802F-75130A039B4B--


From nobody Thu Jul 14 09:00:21 2016
Return-Path: <eric@konklone.com>
X-Original-To: webfinger@ietfa.amsl.com
Delivered-To: webfinger@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0794312D808 for <webfinger@ietfa.amsl.com>; Thu, 14 Jul 2016 09:00:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level: 
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=pobox.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19Q81eJfd3u5 for <webfinger@ietfa.amsl.com>; Thu, 14 Jul 2016 09:00:12 -0700 (PDT)
Received: from sasl.smtp.pobox.com (pb-smtp2.pobox.com [64.147.108.71]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9602F12D795 for <webfinger@ietf.org>; Thu, 14 Jul 2016 09:00:12 -0700 (PDT)
Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-smtp2.pobox.com (Postfix) with ESMTP id 0A1032A0EA for <webfinger@ietf.org>; Thu, 14 Jul 2016 12:00:06 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=mime-version :in-reply-to:references:from:date:message-id:subject:to:cc :content-type; s=sasl; bh=nIhNxjY4mQ/dWeZn7P/+tsi1edI=; b=IsU2zr 4X034QsIw25P9L4Rv04jtAODJQ8a2PCnDVLN3cSrYiBCrBtCW+Hkd6t7DJlKYoRf rSqC3WDf2izXYCeNy52KkYZEBjKtOAPjYJY7YOUiZs5qfEFkkaGxFGXJ0nkau3Ut xIqlSBKmFDMCZjI6p5qFHpI12pkeeQp0fDEZ4=
Received: from pb-smtp2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-smtp2.pobox.com (Postfix) with ESMTP id 002212A0E9 for <webfinger@ietf.org>; Thu, 14 Jul 2016 12:00:05 -0400 (EDT)
Received: from mail-qt0-f172.google.com (unknown [209.85.216.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pb-smtp2.pobox.com (Postfix) with ESMTPSA id 2C5C22A0E3 for <webfinger@ietf.org>; Thu, 14 Jul 2016 12:00:05 -0400 (EDT)
Received: by mail-qt0-f172.google.com with SMTP id w38so44804378qtb.0 for <webfinger@ietf.org>; Thu, 14 Jul 2016 09:00:05 -0700 (PDT)
X-Gm-Message-State: ALyK8tKS/oUW8H3d89TAv8118Rd4auX4wJXbk6UDNeLowUK3y4C+oSEOAQu7JoSS/DLspV7XOqSa1R29yjNSeQ==
X-Received: by 10.200.42.161 with SMTP id b30mr21564713qta.94.1468512003419; Thu, 14 Jul 2016 09:00:03 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.200.39.187 with HTTP; Thu, 14 Jul 2016 08:59:23 -0700 (PDT)
In-Reply-To: <emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney>
References: <em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki> <575197C1.3090102@dmfs.org> <39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com> <575492E1.2000805@dmfs.org> <57587369.20405@dmfs.org> <em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney> <5786C161.7070806@dmfs.org> <emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney>
From: Eric Mill <eric@konklone.com>
Date: Thu, 14 Jul 2016 11:59:23 -0400
X-Gmail-Original-Message-ID: <CANBOYLWyuFcGnLE2arivxiuYgmTnNDHdDi5YpWXO6F4ruY1UdA@mail.gmail.com>
Message-ID: <CANBOYLWyuFcGnLE2arivxiuYgmTnNDHdDi5YpWXO6F4ruY1UdA@mail.gmail.com>
To: "Paul E. Jones" <paulej@packetizer.com>
Content-Type: multipart/alternative; boundary=001a114084684ffd9905379a98d3
X-Pobox-Relay-ID: 07AF2FB6-49DC-11E6-B018-EE617A1B28F4-82875391!pb-smtp2.pobox.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/webfinger/taBcSyycltN9oxx_3wnHTTjAspg>
Cc: Marten Gajda <marten@dmfs.org>, "webfinger@ietf.org" <webfinger@ietf.org>
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via WebFinger
X-BeenThere: webfinger@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Discussion of the Webfinger protocol proposal in the Applications Area <webfinger.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webfinger>, <mailto:webfinger-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webfinger/>
List-Post: <mailto:webfinger@ietf.org>
List-Help: <mailto:webfinger-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webfinger>, <mailto:webfinger-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 14 Jul 2016 16:00:19 -0000

--001a114084684ffd9905379a98d3
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Is any of this relevant? Webfinger seems good and truly dead.

On Thu, Jul 14, 2016 at 2:19 AM, Paul E. Jones <paulej@packetizer.com>
wrote:

> Marten,
>
> I'll comment on each point:
>
> General:
> While I supported the original work a few years ago, it was killed partly
> because some people stood up and said "we already have several discover
> protocols, why do we need another.  And you were presented with much the
> same on this list when people asked why the DNS mechanism is insufficient=
.
> You provided some good arguments, of which I think individualized
> configuration is most important.  Let's make sure the new draft is scoped
> to just mail configuration.  (If we want to go further with calendar,
> contacts, etc. then arguably those should be separate URLs.  My mail and
> calendar is not provided by the same provider, for example.)
>
> Caching: HTTP allows one to dictate that how long cached data can live. I
> don't think we need to specify it further.  A client will pull the config
> when the user configures the client.  There's no reason to cache it beyon=
d
> that point.  In the off chance it queries a second time, it's not a big
> deal.  It might get pulled from web cache or perhaps go back to the
> server.  It really does not matter, since this should not be queried over
> and over.  Only in the event that a config change is made, the client mig=
ht
> need to re-query the config data.  I'm not sure if the client should
> automate that process or prompt the user "would you like me to re-validat=
e
> the configuration settings?" Personally, I like the latter.
>
> Certificate pinning: Why? One fetches the mail config file.  The client
> will authenticate the certificate. Is this just to catch the very rare ca=
se
> where somebody hacks DNS and gets a fake certificate?  That's really a
> broader Internet infrastructure issue that I think we should solve
> generically.  (For example, use of notaries, DNSSEC/DANE, etc. Personally=
,
> I use DNSSEC/DANE, but somewhere close to zero people make use of that
> data.)
>
> Certificate Auth: I'm not sure what the problem is here, unless people
> want to use enterprise-issued certificates (i.e., those that are not from=
 a
> public CA).  If that is the case, I would not want my mail client to inse=
rt
> those into my trusted certificate store.  So, would those be one-time
> uses?  Not very useful.  I'd say the IT department needs to install
> whatever root certs are needed.  A client should authenticate the
> certificates it sees, but we don't need more words about it other than to
> say the TLS connection must be authenticated.
>
> Document structure:  I think keeping this simple is really best.  I don't
> think we need multiple mail providers. If the email address is user@examp=
le.com,
> then I think it's reasonable to assume example.com is the provider.  Yes,
> a user could go enter WebFinger information for some other provider, but
> the average person will not want to do that.  That's having the user
> configure the server so it can configure the client.  Not much gained
> there.  I would have something that's no more complex than something like
> this:
>
> {
>  "incoming" :
>  [
>    {
>      "description" : "IMAP",
>      "protocol" : "imap",
>      "servers" :
>      [
>        {
>          "host" : "imap-01.example.com",
>          "port" : 143,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "imap-02.example.com",
>          "port" : 143,
>          "transport" : "starttls"
>        }
>      ]
>    },
>    {
>      "description" : "POP",
>      "protocol" : "pop3",
>      "servers" :
>      [
>        {
>          "host" : "imap-01.example.com",
>          "port" : 110,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "imap-02.example.com",
>          "port" : 110,
>          "transport" : "starttls"
>        }
>      ]
>    }
>  ],
>  "outgoing" :
>  [
>    {
>      "description" : "SMTP",
>      "protocol" : "smtp",
>      "servers" :
>      [
>        {
>          "host" : "smtp-01.example.com",
>          "port" : 587,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "smtp-02.example.com",
>          "port" : 587,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "smtp-01.example.com",
>          "port" : 465,
>          "transport" : "tls"
>        },
>        {
>          "host" : "smtp-02.example.com",
>          "port" : 465,
>          "transport" : "tls"
>        }
>      ]
>    }
>  ]
> }
>
>
> I use a arrays to offer different protocols (POP3 and IMAP) with
> descriptions to let the user choose.  If there is only one choice (as in
> the case of SMTP), then the user need not be bothered with selection. The=
re
> are multiple servers, each intended to be an alternative listed in order =
of
> preference.
>
> I would define a document for each service that might be made available
> through WebFinger (email config, calendar config, contacts config).  And,
> each of these documents would be discovered via a different URI.  So, in
> the JRD returned via the WebFinger query, there might be this a "rel" of
> type "email" with a URI and another of type "contacts", "calendar", etc.
>  (I did not check to see which rel values are used, but the names are not
> important.)
>
> When a user enters his or her email address, the client can discover whic=
h
> of those services are available and offer them, allowing the user to use =
or
> not use each one.  In my case, calendaring is not provided at my domain.
> So, I would go to my email program and say "add an account" and enter a n=
ew
> email address.  Since each set of services is individually selectable by
> the user, it's easy to mix and match email, calendaring, contacts, or
> whatever from different places.  It will require entering different accou=
nt
> credentials, but I think that should be the way it works.
>
> TLS ought to be required, but it could be left to the admin.  WebFinger
> requires it, but I seriously do not see the security concerns with a simp=
le
> mail config file like the above.  But, if people want to secure it, they
> can.  And security should be through whatever mechanisms HTTP presents to
> the user.  I would not want to invent new ones or try to solve how to do
> something hypothetically.  My mail server requires a password and I think
> it's reasonable the HTTP server require the same.  Perhaps my calendar
> requires OAuth.  We could put the URI to the authorization server as a
> property in the WebFinger reply, like this:
>
> {
>  "rel" : "mail-config",
>  "href" : "https://mail-config.example.com/paulej",
>  "properties" : {
>    "urn:ietf:params:oauth:authserver" : "https://oauth.example.com/paulej=
"
>  }
> }
>
>
> That might be insufficient for OAuth, since just having the URI to the
> auth server isn't enough for the Auth server, I think, as it would not
> necessarily understand the "client_id" parameter.  However, I'm not a gur=
u
> in OAuth, so perhaps others can suggest improvements here.   The intent i=
s
> for the client to recognize that it needs to do OAuth authentication befo=
re
> attempting to query the resource to get the actual configuration.  I assu=
me
> we could use the same OAuth token for both accessing the config resource
> and with the SMTP and IMAP servers. (Those could be different credentials=
,
> but I would really hope we do not ask users to authenticate multiple time=
s
> for a single service.)
>
> Paul
>
> ------ Original Message ------
> From: "Marten Gajda" <marten@dmfs.org>
> To: "webfinger@ietf.org" <webfinger@ietf.org>
> Sent: 7/13/2016 6:32:01 PM
> Subject: Re: [webfinger] [apps-discuss] Mail client configuration via
> WebFinger
>
> Hi Paul,
>
> the "current draft" is still the one at
> https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03
> and the issues at GitHub are discussion items for the upcoming draft.
> I wanted to clarify a few points before I start to work on the draft. If
> you have anything to add to these points or if you have any other concern=
s,
> please let me know, so we can address them.
> Unless there is some more interest in the certificate stuff, I'm not goin=
g
> to add this to the draft. We still can add that later on if it turns out =
to
> be useful.
>
> Cheers,
>
> Marten
>
>
> Am 11.07.2016 um 23:31 schrieb Paul E. Jones:
>
> Marten,
>
> Sorry to just be coming back to this after a whole month passed.
>
> What current draft?  Did you write one that I missed?  Or are these
> requirements for the draft you would like to see?
>
> Paul
>
> ------ Original Message ------
> From: "Marten Gajda" <marten@dmfs.org>
> To: "webfinger@ietf.org" <webfinger@ietf.org> <webfinger@ietf.org>
> Sent: 6/8/2016 3:35:05 PM
> Subject: Re: [webfinger] [apps-discuss] Mail client configuration via
> WebFinger
>
> All,
>
> I've created a GitHub repository to track open issues with the current
> draft, see https://github.com/CalConnect/AUTODISCOVERY/issues
> You're welcome to contribute to the discussion, either by creating a new
> issue or by commenting on an existing one.
>
> Thanks,
>
> Marten
>
> Am 05.06.2016 um 23:00 schrieb Marten Gajda:
>
> I think OpenID Connect already covers the discovery of everything you nee=
d
> to do OAuth2. That involves Webfinger, but there is no need to protect th=
is
> request, because it doesn't contain personal information.
> So we don't need to reinvent the OAuth2 bootstrapping sequence.
> The only minor issue I see is that you may have to ask the user twice to
> grant access. Once to authorize the client to access the configuration
> document and another time to authorize the client to access the individua=
l
> services. The second step is necessary, because the scope tokens of these
> services are not known when the first authorization request is presented =
to
> the user. The problem with that is, there doesn't seem to be a mechanism =
to
> broaden scope, without allowing the user to switch to a different account=
.
> To get access to the individual services, the client needs to start anoth=
er
> authorization code grant. But the user is always free to log out and log =
in
> with a different account before granting access.
>
> Marten
>
> Am 03.06.2016 um 20:13 schrieb George Fletcher:
>
> Did a quick scan of the draft document. Given that more and more systems
> are trying to remove the need for passwords, it seems like the final
> solution needs to support 2FA and biometric mechanisms for "HTTP
> authentication". I definitely would not want the webfinger instance
> releasing my config data without my "authentication". I suppose OAuth2
> could be used to protect the webfinger APIs though there is a bit of a
> chicken-and-egg here:)
>
> I kind of like the suggestion around returning a 401 with data in the
> WWW-Authenticate header on where to get a token to use with the API. This
> would allow the client to start and OAuth2 flow with the Authorization
> Server specified and that would give the user a clear indication of what
> password/credentials are being requested. Once the client gets the token,
> it uses it with the webfinger call and now the service-configuration data
> is returned because the token is the authorization for the specified id.
>
> Thanks,
> George
>
> On 6/3/16 10:44 AM, Marten Gajda wrote:
>
> Note that the idea behind
> https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03
> is to put the service configuration for all services of a provider into a
> single document.
>
> So you would receive something like this:
>
> {
>     "rel " :  "service-configuration",
>     "href " : "https://example.com/service-configuration"
> <https://example.com/service-configuration>
> }
>
> If a user uses the same account identifier at another provider the
> Webfinger request could return their configuration too (given there is so=
me
> mechanism to add it and the provider actually supports that).
>
> {
>     "rel " :  "service-configuration",
>     "href " : "https://example.com/service-configuration"
> <https://example.com/service-configuration>
> },
> {
>     "rel " :  "service-configuration",
>     "href " : "https://acme-calendar.com/service-configuration"
> <https://acme-calendar.com/service-configuration>
> }
>
> Without that it would be more difficult to setup your account at
> acme-calendar.com with your login "user@example.com" <user@example.com>.
> acme-calendar.com would have to issue some kind of user-identifier like
> user@acme-calendar.com for auto-configuration purposes, even though you
> don't use it for authentication (because you use user@exampe.com for
> authentication). I think that's the idea behind the `acct:` URI scheme, b=
ut
> I don't think that you can explain to users why they need another user
> identifier and when to use one or the other.
> But that also raises the privacy concerns I mentioned earlier. If the
> request is not authenticated, everyone could see that you have an account
> at acme-calendar.com.
>
> Regarding SSO: There is an RFC that extends SASL based authentication to
> support the token authentication mechanisms as used by OAuth1 and OAuth2,
> see https://tools.ietf.org/html/rfc7628
> So SSO already works with IMAP, POP3 and SMTP.
>
> Cheers
>
> Marten
>
>
>
> Am 03.06.2016 um 15:40 schrieb Paul E. Jones:
>
> Marten,
>
>
>
> So how would the UI work?
>
> 1) User enters user identifier, most likely an email address, like
> mailto:user@example.com <user@example.com> and hits "next"
>
> 2) Client sends a Webfinger request to
> https://exampe.com/.well-known/webfinger?... to see if there is a
> configuration document
>
>   -> response 404 Not Found
>    a) Client falls back to "manual setup" or another auto-configuration
> mechanism
>
>   -> response 401 Unauthorized
>
>
> One should not get 401 querying the WebFinger information for the user.
> What should happen is that the server should return a JSON object that
> contains a link relation that might look like this:
> {
>     "rel " :  "mail-config",
>     "href " :
> "https://mailserver.example.com/config?user=3Dpaulej%40packetizer.com"
> <https://mailserver.example.com/config?user=3Dpaulej%40packetizer.com>
> }
>
> Or something like that.  The mail client should query that URI it is that
> one that should result in a potential 401.  The JSON format that would co=
me
> back here would need to be something we define.  It could be based on JRD=
,
> but would not have to be.
>
> Otherwise, I think the flow looks right.
>
>
>
>
>    b) Client asks for password at "example.com" and goes back to step 2
> (this time with authentication)
>
>   -> response 200 Ok
>    c) client moves on to next step
>
> 3) (optional) Client presents found services to the user to let him selec=
t
> the services to set up
>
> 4) Client runs the setup handler for each selected service
>
>
> I think in general that could work but it raises two questions:
>
> 1) How to make sure the user really understands that he's authenticating
> at example.com in step 2b? If the user tries to configure calendar sync
> with "acme-calendar.com" where his login happens to be
> mailto:user@example.com <user@example.com> he might not be prepared to
> being asked for his example.com password. Maybe I'm just paranoid or
> overcautious, but I think that it might easily happen that the users send=
s
> his acme-calendar.com password to example.com in that case (since Basic
> authentication is still the most common mechanism, the client basically
> sends the password in plain text).
>
>
> Yeah, that's a valid concern.  The only thing I can suggest is that the
> Subject CN from the certificate is presented to the user.  Alternatively,
> there could be two passwords: one that is the "configuration password" an=
d
> one that is the email password.  However, I don't think two passwords wil=
l
> help us.  If I want to hack somebody and can gain access to their WF
> config, I can auto-config their email client to point to my own IMAP serv=
er
> and just retrieve the password that way.
>
> So, I think we have to rely on the certificate presented to the mail
> client and the user will have to know to trust it.  The mail provider can
> tell the user "when configuring email, ensure that the configuration serv=
er
> is mailconfig.example.com and do not provide a password if that is not
> the name of the configuration server indicated."
>
> If the mail config information is not protected with a password, we
> probably would want the customer to verify that the SMTP server informati=
on
> is correct before the password is provided.  These would be the steps use=
rs
> would take if performing manual configuration, but the software presents
> that information to the user without the user having to enter it.
>
>
>
>
> 2) How does the client know which credentials to use to set up the
> individual services in step 4? Should the client ask the user for the
> credentials for each service or can it assume that some of them share the
> same credentials? Is that something an auto-configuration document can he=
lp
> with?
>
>
> It would be nice if there is a config indicator that says "SMTP server an=
d
> IMAP server passwords are the same", so the client does not have to ask.
>
> If we use a "config password" then we could even have the server tell the
> client the password for services, which would transparently allow those t=
o
> be different.  Alternatively, the client will have to ask each about each
> one.
>
> For calendaring services, then yes: the client would have to ask the
> user.  It could ask if it's the same or different than the email password
> or the config password.  For some services, the authentication mechanisms
> will be entirely different (like Google Calendar).  The mail client will
> just have to know how to access the service.  For that reason, I'm a litt=
le
> hesitant to suggest including calendaring service config along with the
> email config data.  We could have each of those services listed in the
> users' WebFinger document.  For example, I might have this entry in my WF
> document:
> {
>     "rel" : "calendar"
>     "href" : "urn:whatever:google"
> }
>
> Note I did not provide a URL.  The reason is that this is an entirely
> different service that has an entirely different access method.  Maybe th=
e
> client can ask the user "is paulej@packetizer.com our user ID for your
> Google calendar?"  In my case, I don't think it is.  Certainly, it's not =
my
> gmail ID.  And, I would not want to advertise that to the world,
> necessarily.  Anyway, I think we should limit the scope of what we try to
> do to things that are standard OR we define a generic URN that a client
> will just have to know how to deal with.
>
>
>
> Ideally the server supports some kind of SSO mechanism like OpenID
> Connect, so you don't need to enter your password multiple times. But a
> working auto-configuration is really the precondition for this, because a=
n
> OpenID Connect implementations needs a way to discover the OAuth2 scope
> tokens to request from the server and auto-configuration is really the wa=
y
> to do that, IMO. For this it would be helpful to have some mechanism to
> request a broader scope from the user (without allowing him to switch to =
a
> different account), but that's a different topic I guess.
>
>
> I definitely like the idea of SSO.  But, I struggle to see how we would
> use this in practice with mail autoconfig since SMTP, IMAP, and POP serve=
rs
> require a password, anyway.  If we use that as a means to have those
> passwords provided behind the scenes (as I indicated above), that might b=
e
> a good argument for using OpenID Connect.  In that way, the ISP can also
> ensure that passwords are REALLY complex and unknown even to the user.  N=
ot
> a bad practice, in that we can view those passwords as complex tokens.
>
> Would that kind of use of OpenID Connect to retrieve the password be
> workable?  (I'll admit I don't have so much experience with OpenID
> Connect.  I implemented OpenID 2.0, but that's not ideal for what we'd wa=
nt
> to accomplish here.  I don't have a good feel for how Connect might make
> this better.)
>
> Paul
>
>
>
> _______________________________________________
> webfinger mailing listwebfinger@ietf.orghttps://www.ietf.org/mailman/list=
info/webfinger
>
>
>
> --
> Marten Gajda
> CEO
>
> dmfs GmbH
> Schandauer Stra=C3=9Fe 34
> 01309 Dresden
> GERMANY
>
> phone: +49 177 4427167
> email: marten@dmfs.org
>
> Managing Director: Marten Gajda
> Registered address: Dresden
> Registered No.: AG Dresden HRB 34881
> VAT Reg. No.: DE303248743
>
>
>
> _______________________________________________
> webfinger mailing listwebfinger@ietf.orghttps://www.ietf.org/mailman/list=
info/webfinger
>
>
>
> --
> Marten Gajda
> CEO
>
> dmfs GmbH
> Schandauer Stra=C3=9Fe 34
> 01309 Dresden
> GERMANY
>
> phone: +49 177 4427167
> email: marten@dmfs.org
>
> Managing Director: Marten Gajda
> Registered address: Dresden
> Registered No.: AG Dresden HRB 34881
> VAT Reg. No.: DE303248743
>
>
>
> _______________________________________________
> webfinger mailing listwebfinger@ietf.orghttps://www.ietf.org/mailman/list=
info/webfinger
>
>
> --
> Marten Gajda
> CEO
>
> dmfs GmbH
> Schandauer Stra=C3=9Fe 34
> 01309 Dresden
> GERMANY
>
> phone: +49 177 4427167
> email: marten@dmfs.org
>
> Managing Director: Marten Gajda
> Registered address: Dresden
> Registered No.: AG Dresden HRB 34881
> VAT Reg. No.: DE303248743
>
>
>
> _______________________________________________
> webfinger mailing listwebfinger@ietf.orghttps://www.ietf.org/mailman/list=
info/webfinger
>
>
> --
> Marten Gajda
> CEO
>
> dmfs GmbH
> Schandauer Stra=C3=9Fe 34
> 01309 Dresden
> GERMANY
>
> phone: +49 177 4427167
> email: marten@dmfs.org
>
> Managing Director: Marten Gajda
> Registered address: Dresden
> Registered No.: AG Dresden HRB 34881
> VAT Reg. No.: DE303248743
>
>
> _______________________________________________
> webfinger mailing list
> webfinger@ietf.org
> https://www.ietf.org/mailman/listinfo/webfinger
>
>


--=20
konklone.com | @konklone <https://twitter.com/konklone>

--001a114084684ffd9905379a98d3
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Is any of this relevant? Webfinger seems good and truly de=
ad.</div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On Thu, =
Jul 14, 2016 at 2:19 AM, Paul E. Jones <span dir=3D"ltr">&lt;<a href=3D"mai=
lto:paulej@packetizer.com" target=3D"_blank">paulej@packetizer.com</a>&gt;<=
/span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">
   =20
 =20
  <div><div>Marten,</div><div><br></div><div>I&#39;ll comment on each point=
:</div><div><br></div><div>General:</div><div>While I supported the origina=
l work a few years ago, it was killed partly because some people stood up a=
nd said &quot;we already have several discover protocols, why do we need an=
other.=C2=A0 And you were presented with much the same on this list when pe=
ople asked why the DNS mechanism is insufficient.=C2=A0 You provided some g=
ood arguments, of which I think individualized configuration is most import=
ant.=C2=A0 Let&#39;s make sure the new draft is scoped to just mail configu=
ration. =C2=A0(If we want to go further with calendar, contacts, etc. then =
arguably those should be separate URLs.=C2=A0 My mail and calendar is not p=
rovided by the same provider, for example.)</div><div><br></div><div>Cachin=
g: HTTP allows one to dictate that how long cached data can live. I don&#39=
;t think we need to specify it further.=C2=A0 A client will pull the config=
 when the user configures the client.=C2=A0 There&#39;s no reason to cache =
it beyond that point.=C2=A0 In the off chance it queries a second time, it&=
#39;s not a big deal.=C2=A0 It might get pulled from web cache or perhaps g=
o back to the server.=C2=A0 It really does not matter, since this should no=
t be queried over and over.=C2=A0 Only in the event that a config change is=
 made, the client might need to re-query the config data.=C2=A0 I&#39;m not=
 sure if the client should automate that process or prompt the user &quot;w=
ould you like me to re-validate the configuration settings?&quot; Personall=
y, I like the latter.</div><div><br></div><div>Certificate pinning: Why? On=
e fetches the mail config file.=C2=A0 The client will authenticate the cert=
ificate. Is this just to catch the very rare case where somebody hacks DNS =
and gets a fake certificate?=C2=A0 That&#39;s really a broader Internet inf=
rastructure issue that I think we should solve generically. =C2=A0(For exam=
ple, use of notaries, DNSSEC/DANE, etc. Personally, I use DNSSEC/DANE, but =
somewhere close to zero people make use of that data.)</div><div><br></div>=
<div>Certificate Auth: I&#39;m not sure what the problem is here, unless pe=
ople want to use enterprise-issued certificates (i.e., those that are not f=
rom a public CA).=C2=A0 If that is the case, I would not want my mail clien=
t to insert those into my trusted certificate store.=C2=A0 So, would those =
be one-time uses?=C2=A0 Not very useful.=C2=A0 I&#39;d say the IT departmen=
t needs to install whatever root certs are needed.=C2=A0 A client should au=
thenticate the certificates it sees, but we don&#39;t need more words about=
 it other than to say the TLS connection must be authenticated.</div><div><=
br></div><div>Document structure: =C2=A0I think keeping this simple is real=
ly best.=C2=A0 I don&#39;t think we need multiple mail providers. If the em=
ail address is <a href=3D"mailto:user@example.com," target=3D"_blank">user@=
example.com, </a>then I think it&#39;s reasonable to assume <a href=3D"http=
://example.com" target=3D"_blank">example.com</a> is the provider.=C2=A0 Ye=
s, a user could go enter WebFinger information for some other provider, but=
 the average person will not want to do that.=C2=A0 That&#39;s having the u=
ser configure the server so it can configure the client.=C2=A0 Not much gai=
ned there.=C2=A0 I would have something that&#39;s no more complex than som=
ething like this:</div><div><br></div><blockquote style=3D"margin:0 0 0 40p=
x;border:none;padding:0px"><div><font face=3D"Courier New" size=3D"2" style=
=3D"font-size:10pt">{</font></div><div><font face=3D"Courier New" size=3D"2=
" style=3D"font-size:10pt"> =C2=A0&quot;incoming&quot; :</font></div><div><=
font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0[</fon=
t></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"=
> =C2=A0 =C2=A0{</font></div><div><font face=3D"Courier New" size=3D"2" sty=
le=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0&quot;description&quot; : &quot;=
IMAP&quot;,</font></div><div><font face=3D"Courier New" size=3D"2" style=3D=
"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0&quot;protocol&quot; : &quot;imap&quo=
t;,</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-si=
ze:10pt"> =C2=A0 =C2=A0 =C2=A0&quot;servers&quot; :</font></div><div><font =
face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=
=A0[</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-s=
ize:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0{</font></div><div><font face=3D"Cour=
ier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0&quot;host&quot; : &quot;<a href=3D"http://imap-01.example.com" targe=
t=3D"_blank">imap-01.example.com</a>&quot;,</font></div><div><font face=3D"=
Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0&quot;port&quot; : 143,</font></div><div><font face=3D"Courier Ne=
w" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&=
quot;transport&quot; : &quot;starttls&quot;</font></div><div><font face=3D"=
Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=
=A0},</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-=
size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0{</font></div><div><font face=3D"Cou=
rier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0&quot;host&quot; : &quot;<a href=3D"http://imap-02.example.com" targe=
t=3D"_blank">imap-02.example.com</a>&quot;,</font></div><div><font face=3D"=
Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0&quot;port&quot; : 143,</font></div><div><font face=3D"Courier Ne=
w" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&=
quot;transport&quot; : &quot;starttls&quot;</font></div><div><font face=3D"=
Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=
=A0}</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-s=
ize:10pt"> =C2=A0 =C2=A0 =C2=A0]</font></div><div><font face=3D"Courier New=
" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0},</font></div><div><fo=
nt face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0{=
</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:=
10pt"> =C2=A0 =C2=A0 =C2=A0&quot;description&quot; : &quot;POP&quot;,</font=
></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt">=
 =C2=A0 =C2=A0 =C2=A0&quot;protocol&quot; : &quot;pop3&quot;,</font></div><=
div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =
=C2=A0 =C2=A0&quot;servers&quot; :</font></div><div><font face=3D"Courier N=
ew" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0[</font></div>=
<div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0=
 =C2=A0 =C2=A0 =C2=A0{</font></div><div><font face=3D"Courier New" size=3D"=
2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;host&q=
uot; : &quot;<a href=3D"http://imap-01.example.com" target=3D"_blank">imap-=
01.example.com</a>&quot;,</font></div><div><font face=3D"Courier New" size=
=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;po=
rt&quot; : 110,</font></div><div><font face=3D"Courier New" size=3D"2" styl=
e=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;transport&quo=
t; : &quot;starttls&quot;</font></div><div><font face=3D"Courier New" size=
=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0},</font></div>=
<div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0=
 =C2=A0 =C2=A0 =C2=A0{</font></div><div><font face=3D"Courier New" size=3D"=
2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;host&q=
uot; : &quot;<a href=3D"http://imap-02.example.com" target=3D"_blank">imap-=
02.example.com</a>&quot;,</font></div><div><font face=3D"Courier New" size=
=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;po=
rt&quot; : 110,</font></div><div><font face=3D"Courier New" size=3D"2" styl=
e=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;transport&quo=
t; : &quot;starttls&quot;</font></div><div><font face=3D"Courier New" size=
=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0}</font></div><=
div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =
=C2=A0 =C2=A0]</font></div><div><font face=3D"Courier New" size=3D"2" style=
=3D"font-size:10pt"> =C2=A0 =C2=A0}</font></div><div><font face=3D"Courier =
New" size=3D"2" style=3D"font-size:10pt"> =C2=A0],</font></div><div><font f=
ace=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0&quot;outgoi=
ng&quot; :</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"=
font-size:10pt"> =C2=A0[</font></div><div><font face=3D"Courier New" size=
=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0{</font></div><div><font face=
=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0&=
quot;description&quot; : &quot;SMTP&quot;,</font></div><div><font face=3D"C=
ourier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0&quot;=
protocol&quot; : &quot;smtp&quot;,</font></div><div><font face=3D"Courier N=
ew" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0&quot;servers&=
quot; :</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"fon=
t-size:10pt"> =C2=A0 =C2=A0 =C2=A0[</font></div><div><font face=3D"Courier =
New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0{</fon=
t></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"=
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;host&quot; : &quot;<a href=3D"htt=
p://smtp-01.example.com" target=3D"_blank">smtp-01.example.com</a>&quot;,</=
font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10=
pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;port&quot; : 587,</font></div>=
<div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;transport&quot; : &quot;starttls&quot;</f=
ont></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10p=
t"> =C2=A0 =C2=A0 =C2=A0 =C2=A0},</font></div><div><font face=3D"Courier Ne=
w" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0{</font>=
</div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;host&quot; : &quot;<a href=3D"http:=
//smtp-02.example.com" target=3D"_blank">smtp-02.example.com</a>&quot;,</fo=
nt></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt=
"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;port&quot; : 587,</font></div><d=
iv><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;transport&quot; : &quot;starttls&quot;</fo=
nt></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt=
"> =C2=A0 =C2=A0 =C2=A0 =C2=A0},</font></div><div><font face=3D"Courier New=
" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0{</font><=
/div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;host&quot; : &quot;<a href=3D"http:=
//smtp-01.example.com" target=3D"_blank">smtp-01.example.com</a>&quot;,</fo=
nt></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt=
"> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;port&quot; : 465,</font></div><d=
iv><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;transport&quot; : &quot;tls&quot;</font></=
div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =
=C2=A0 =C2=A0 =C2=A0 =C2=A0},</font></div><div><font face=3D"Courier New" s=
ize=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0 =C2=A0{</font></di=
v><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;host&quot; : &quot;<a href=3D"http://s=
mtp-02.example.com" target=3D"_blank">smtp-02.example.com</a>&quot;,</font>=
</div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;port&quot; : 465,</font></div><div>=
<font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0&quot;transport&quot; : &quot;tls&quot;</font></div=
><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=
=A0 =C2=A0 =C2=A0 =C2=A0}</font></div><div><font face=3D"Courier New" size=
=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0 =C2=A0]</font></div><div><fo=
nt face=3D"Courier New" size=3D"2" style=3D"font-size:10pt"> =C2=A0 =C2=A0}=
</font></div><div><font face=3D"Courier New" size=3D"2" style=3D"font-size:=
10pt"> =C2=A0]</font></div><div><font face=3D"Courier New" size=3D"2" style=
=3D"font-size:10pt">}</font></div></blockquote><div><br></div><div>I use a =
arrays to offer different protocols (POP3 and IMAP) with descriptions to le=
t the user choose.=C2=A0 If there is only one choice (as in the case of SMT=
P), then the user need not be bothered with selection. There are multiple s=
ervers, each intended to be an alternative listed in order of preference.</=
div><div><br></div><div>I would define a document for each service that mig=
ht be made available through WebFinger (email config, calendar config, cont=
acts config).=C2=A0 And, each of these documents would be discovered via a =
different URI.=C2=A0 So, in the JRD returned via the WebFinger query, there=
 might be this a &quot;rel&quot; of type &quot;email&quot; with a URI and a=
nother of type &quot;contacts&quot;, &quot;calendar&quot;, etc. =C2=A0(I di=
d not check to see which rel values are used, but the names are not importa=
nt.)</div><div><br></div><div>When a user enters his or her email address, =
the client can discover which of those services are available and offer the=
m, allowing the user to use or not use each one.=C2=A0 In my case, calendar=
ing is not provided at my domain.=C2=A0 So, I would go to my email program =
and say &quot;add an account&quot; and enter a new email address.=C2=A0 Sin=
ce each set of services is individually selectable by the user, it&#39;s ea=
sy to mix and match email, calendaring, contacts, or whatever from differen=
t places.=C2=A0 It will require entering different account credentials, but=
 I think that should be the way it works.</div><div><br></div><div>TLS ough=
t to be required, but it could be left to the admin.=C2=A0 WebFinger requir=
es it, but I seriously do not see the security concerns with a simple mail =
config file like the above.=C2=A0 But, if people want to secure it, they ca=
n.=C2=A0 And security should be through whatever mechanisms HTTP presents t=
o the user.=C2=A0 I would not want to invent new ones or try to solve how t=
o do something hypothetically.=C2=A0 My mail server requires a password and=
 I think it&#39;s reasonable the HTTP server require the same.=C2=A0 Perhap=
s my calendar requires OAuth.=C2=A0 We could put the URI to the authorizati=
on server as a property in the WebFinger reply, like this:</div><div><br></=
div><blockquote style=3D"margin:0 0 0 40px;border:none;padding:0px"><div><f=
ont face=3D"Courier New" size=3D"2">{</font></div><div><font face=3D"Courie=
r New" size=3D"2"> =C2=A0&quot;rel&quot; : &quot;mail-config&quot;,</font><=
/div><div><font face=3D"Courier New" size=3D"2"> =C2=A0&quot;href&quot; : &=
quot;<a href=3D"https://mail-config.example.com/paulej" target=3D"_blank">h=
ttps://mail-config.example.com/paulej</a>&quot;,</font></div><div><font fac=
e=3D"Courier New" size=3D"2"> =C2=A0&quot;properties&quot; : {</font></div>=
<div><font face=3D"Courier New" size=3D"2"> =C2=A0 =C2=A0&quot;urn:ietf:par=
ams:oauth:authserver&quot; : &quot;<a href=3D"https://oauth.example.com/pau=
lej" target=3D"_blank">https://oauth.example.com/paulej</a>&quot;</font></d=
iv><div><font face=3D"Courier New" size=3D"2"> =C2=A0}</font></div><div><fo=
nt face=3D"Courier New" size=3D"2">}</font></div></blockquote><div><br></di=
v><div>That might be insufficient for OAuth, since just having the URI to t=
he auth server isn&#39;t enough for the Auth server, I think, as it would n=
ot necessarily understand the &quot;client_id&quot; parameter.=C2=A0 Howeve=
r, I&#39;m not a guru in OAuth, so perhaps others can suggest improvements =
here. =C2=A0 The intent is for the client to recognize that it needs to do =
OAuth authentication before attempting to query the resource to get the act=
ual configuration.=C2=A0 I assume we could use the same OAuth token for bot=
h accessing the config resource and with the SMTP and IMAP servers. (Those =
could be different credentials, but I would really hope we do not ask users=
 to authenticate multiple times for a single service.)</div><span class=3D"=
"><div><br></div><div>Paul</div><div><br></div>
<div>------ Original Message ------</div>
<div>From: &quot;Marten Gajda&quot; &lt;<a href=3D"mailto:marten@dmfs.org" =
target=3D"_blank">marten@dmfs.org</a>&gt;</div>
<div>To: &quot;<a href=3D"mailto:webfinger@ietf.org" target=3D"_blank">webf=
inger@ietf.org</a>&quot; &lt;<a href=3D"mailto:webfinger@ietf.org" target=
=3D"_blank">webfinger@ietf.org</a>&gt;</div>
</span><div><div class=3D"h5"><div>Sent: 7/13/2016 6:32:01 PM</div>
<div>Subject: Re: [webfinger] [apps-discuss] Mail client configuration via =
WebFinger</div><div><br></div>
<div style=3D"color:#000000"><blockquote cite=3D"http://5786C161.7070806@dm=
fs.org" type=3D"cite">

    Hi Paul,<br>
    <br>
    the &quot;current draft&quot; is still the one at
    <a href=3D"https://tools.ietf.org/html/draft-daboo-aggregated-service-d=
iscovery-03" target=3D"_blank">https://tools.ietf.org/html/draft-daboo-aggr=
egated-service-discovery-03</a>
    and the issues at GitHub are discussion items for the upcoming
    draft.<br>
    I wanted to clarify a few points before I start to work on the
    draft. If you have anything to add to these points or if you have
    any other concerns, please let me know, so we can address them.<br>
    Unless there is some more interest in the certificate stuff, I&#39;m no=
t
    going to add this to the draft. We still can add that later on if it
    turns out to be useful.<br>
    <br>
    Cheers,<br>
    <br>
    Marten<br>
    <br>
    <br>
    <div>Am 11.07.2016 um 23:31 schrieb Paul E.
      Jones:<br>
    </div>
    <blockquote type=3D"cite">
     =20
      <div>Marten,</div>
      <div><br>
      </div>
      <div>Sorry to just be coming back to this after a whole month
        passed.</div>
      <div><br>
      </div>
      <div>What current draft?=C2=A0 Did you write one that I missed?=C2=A0=
 Or are
        these requirements for the draft you would like to see?</div>
      <div><br>
      </div>
      <div>Paul</div>
      <div><br>
      </div>
      <div>------ Original Message ------</div>
      <div>From: &quot;Marten Gajda&quot; &lt;<a href=3D"mailto:marten@dmfs=
.org" target=3D"_blank">marten@dmfs.org</a>&gt;</div>
      <div>To: <a href=3D"mailto:webfinger@ietf.org" target=3D"_blank">&quo=
t;webfinger@ietf.org&quot;</a> &lt;<a href=3D"mailto:webfinger@ietf.org" ta=
rget=3D"_blank">webfinger@ietf.org</a>&gt;</div>
      <div>Sent: 6/8/2016 3:35:05 PM</div>
      <div>Subject: Re: [webfinger] [apps-discuss] Mail client
        configuration via WebFinger</div>
      <div><br>
      </div>
      <div style=3D"color:#000000">
        <blockquote cite=3D"http://57587369.20405@dmfs.org" type=3D"cite"> =
All,<br>
          <br>
          I&#39;ve created a GitHub repository to track open issues with th=
e
          current draft, see <a href=3D"https://github.com/CalConnect/AUTOD=
ISCOVERY/issues" target=3D"_blank">https://github.com/CalConnect/AUTODISCOV=
ERY/issues</a><br>
          You&#39;re welcome to contribute to the discussion, either by
          creating a new issue or by commenting on an existing one.<br>
          <br>
          Thanks,<br>
          <br>
          Marten<br>
          <br>
          <div>Am 05.06.2016 um 23:00 schrieb
            Marten Gajda:<br>
          </div>
          <blockquote type=3D"cite"> I think OpenID Connect already covers =
the
            discovery of everything you need to do OAuth2. That involves
            Webfinger, but there is no need to protect this request,
            because it doesn&#39;t contain personal information.<br>
            So we don&#39;t need to reinvent the OAuth2 bootstrapping
            sequence.<br>
            The only minor issue I see is that you may have to ask the
            user twice to grant access. Once to authorize the client to
            access the configuration document and another time to
            authorize the client to access the individual services. The
            second step is necessary, because the scope tokens of these
            services are not known when the first authorization request
            is presented to the user. The problem with that is, there
            doesn&#39;t seem to be a mechanism to broaden scope, without
            allowing the user to switch to a different account. To get
            access to the individual services, the client needs to start
            another authorization code grant. But the user is always
            free to log out and log in with a different account before
            granting access.<br>
            <br>
            Marten<br>
            <br>
            <div>Am 03.06.2016 um 20:13 schrieb
              George Fletcher:<br>
            </div>
            <blockquote type=3D"cite"> Did a quick scan of the draft
              document. Given that more and more systems are trying to
              remove the need for passwords, it seems like the final
              solution needs to support 2FA and biometric mechanisms for
              &quot;HTTP authentication&quot;. I definitely would not want =
the
              webfinger instance releasing my config data without my
              &quot;authentication&quot;. I suppose OAuth2 could be used to
              protect the webfinger APIs though there is a bit of a
              chicken-and-egg here:)<br>
              <br>
              I kind of like the suggestion around returning a 401 with
              data in the WWW-Authenticate header on where to get a
              token to use with the API. This would allow the client to
              start and OAuth2 flow with the Authorization Server
              specified and that would give the user a clear indication
              of what password/credentials are being requested. Once the
              client gets the token, it uses it with the webfinger call
              and now the service-configuration data is returned because
              the token is the authorization for the specified id.<br>
              <br>
              Thanks,<br>
              George<br>
              <br>
              <div>On 6/3/16 10:44 AM, Marten
                Gajda wrote:<br>
              </div>
              <blockquote type=3D"cite">
                <div>Note that the idea behind <a href=3D"https://tools.iet=
f.org/html/draft-daboo-aggregated-service-discovery-03" target=3D"_blank">h=
ttps://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03</a>
                  is to put the service configuration for all services
                  of a provider into a single document.<br>
                  <br>
                  So you would receive something like this:<br>
                  <br>
                  <div>{</div>
                  <div>=C2=A0=C2=A0=C2=A0 &quot;rel &quot;=C2=A0: =C2=A0&qu=
ot;service-configuration&quot;,</div>
                  <div>=C2=A0=C2=A0=C2=A0 &quot;href &quot; : <a href=3D"ht=
tps://example.com/service-configuration" target=3D"_blank">&quot;https://ex=
ample.com/service-configuration&quot;</a></div>
                  <div>}</div>
                  <br>
                  If a user uses the same account identifier at another
                  provider the Webfinger request could return their
                  configuration too (given there is some mechanism to
                  add it and the provider actually supports that).<br>
                  <div><br>
                    {</div>
                  <div>=C2=A0=C2=A0=C2=A0 &quot;rel &quot;=C2=A0: =C2=A0&qu=
ot;service-configuration&quot;,</div>
                  <div>=C2=A0=C2=A0=C2=A0 &quot;href &quot; : <a href=3D"ht=
tps://example.com/service-configuration" target=3D"_blank">&quot;https://ex=
ample.com/service-configuration&quot;</a></div>
                  <div>},<br>
                    {
                    <div>=C2=A0=C2=A0=C2=A0 &quot;rel &quot;=C2=A0: =C2=A0&=
quot;service-configuration&quot;,</div>
                    <div>=C2=A0=C2=A0=C2=A0 &quot;href &quot; : <a href=3D"=
https://acme-calendar.com/service-configuration" target=3D"_blank">&quot;ht=
tps://acme-calendar.com/service-configuration&quot;</a></div>
                    <div>}</div>
                    <br>
                    Without that it would be more difficult to setup
                    your account at <a href=3D"http://acme-calendar.com" ta=
rget=3D"_blank">acme-calendar.com</a> with your login <a href=3D"mailto:use=
r@example.com" target=3D"_blank">&quot;user@example.com&quot;</a>.
                    <a href=3D"http://acme-calendar.com" target=3D"_blank">=
acme-calendar.com</a> would have to issue some kind of
                    user-identifier like <a href=3D"mailto:user@acme-calend=
ar.com" target=3D"_blank">user@acme-calendar.com</a>
                    for auto-configuration purposes, even though you
                    don&#39;t use it for authentication (because you use <a=
 href=3D"mailto:user@exampe.com" target=3D"_blank">user@exampe.com</a>
                    for authentication). I think that&#39;s the idea behind
                    the `acct:` URI scheme, but I don&#39;t think that you
                    can explain to users why they need another user
                    identifier and when to use one or the other.<br>
                    But that also raises the privacy concerns I
                    mentioned earlier. If the request is not
                    authenticated, everyone could see that you have an
                    account at <a href=3D"http://acme-calendar.com" target=
=3D"_blank">acme-calendar.com</a>.<br>
                    <br>
                    Regarding SSO: There is an RFC that extends SASL
                    based authentication to support the token
                    authentication mechanisms as used by OAuth1 and
                    OAuth2, see <a href=3D"https://tools.ietf.org/html/rfc7=
628" target=3D"_blank">https://tools.ietf.org/html/rfc7628</a><br>
                    So SSO already works with IMAP, POP3 and SMTP.<br>
                    <br>
                    Cheers<br>
                    <br>
                    Marten<br>
                  </div>
                  <br>
                  <br>
                  <br>
                  Am 03.06.2016 um 15:40 schrieb Paul E. Jones:<br>
                </div>
                <blockquote type=3D"cite">
                 =20
                  <div>Marten,</div>
                  <div>=C2=A0</div>
                  <div>=C2=A0</div>
                  <div style=3D"COLOR:#000000">
                    <blockquote cite=3D"http://575180B6.9010902@dmfs.org" t=
ype=3D"cite">
                      <div>So how would the UI
                        work?<br>
                        <br>
                        1) User enters user identifier, most likely an
                        email address, like <a href=3D"mailto:user@example.=
com" target=3D"_blank">mailto:user@example.com</a>
                        and hits &quot;next&quot;<br>
                        <br>
                        2) Client sends a Webfinger request to <a href=3D"h=
ttps://exampe.com/.well-known/webfinger" target=3D"_blank">https://exampe.c=
om/.well-known/webfinger</a>?...



                        to see if there is a configuration document<br>
                        <br>
                        =C2=A0 -&gt; response 404 Not Found<br>
                        =C2=A0=C2=A0 a) Client falls back to &quot;manual s=
etup&quot; or
                        another auto-configuration mechanism<br>
                        <br>
                        =C2=A0 -&gt; response 401 Unauthorized</div>
                    </blockquote>
                    <div>=C2=A0</div>
                    <div>One should not get 401 querying the WebFinger
                      information for the user.=C2=A0 What should happen is
                      that the server should return a JSON object that
                      contains a link relation that might look like
                      this:</div>
                    <div>{</div>
                    <div>=C2=A0=C2=A0=C2=A0 &quot;rel &quot;=C2=A0: =C2=A0&=
quot;mail-config&quot;,</div>
                    <div>=C2=A0=C2=A0=C2=A0 &quot;href &quot; : <a href=3D"=
https://mailserver.example.com/config?user=3Dpaulej%40packetizer.com" targe=
t=3D"_blank">&quot;https://mailserver.example.com/config?user=3Dpaulej%40pa=
cketizer.com&quot;</a></div>
                    <div>}</div>
                    <div>=C2=A0</div>
                    <div>Or something like that.=C2=A0 The mail client shou=
ld
                      query that URI it is that one that should result
                      in a potential 401.=C2=A0 The JSON format that would
                      come back here would need to be something we
                      define.=C2=A0 It could be based on JRD, but would not
                      have to be.</div>
                    <div>=C2=A0</div>
                    <div>Otherwise, I think the flow looks right.</div>
                    <div>=C2=A0</div>
                    <div>=C2=A0</div>
                    <blockquote cite=3D"http://575180B6.9010902@dmfs.org" t=
ype=3D"cite">
                      <div><br>
                        =C2=A0=C2=A0 b) Client asks for password at &quot;<=
a href=3D"http://example.com" target=3D"_blank">example.com</a>&quot;
                        and goes back to step 2 (this time with
                        authentication)<br>
                        <br>
                        =C2=A0 -&gt; response 200 Ok<br>
                        =C2=A0=C2=A0 c) client moves on to next step<br>
                        <br>
                        3) (optional) Client presents found services to
                        the user to let him select the services to set
                        up<br>
                        <br>
                        4) Client runs the setup handler for each
                        selected service<br>
                        <br>
                        <br>
                        I think in general that could work but it raises
                        two questions:<br>
                        <br>
                        1) How to make sure the user really understands
                        that he&#39;s authenticating at <a href=3D"http://e=
xample.com" target=3D"_blank">example.com</a> in step
                        2b? If the user tries to configure calendar sync
                        with &quot;<a href=3D"http://acme-calendar.com" tar=
get=3D"_blank">acme-calendar.com</a>&quot; where his login happens
                        to be <a href=3D"mailto:user@example.com" target=3D=
"_blank">mailto:user@example.com</a>
                        he might not be prepared to being asked for his
                        <a href=3D"http://example.com" target=3D"_blank">ex=
ample.com</a> password. Maybe I&#39;m just paranoid or
                        overcautious, but I think that it might easily
                        happen that the users sends his
                        <a href=3D"http://acme-calendar.com" target=3D"_bla=
nk">acme-calendar.com</a> password to <a href=3D"http://example.com" target=
=3D"_blank">example.com</a> in
                        that case (since Basic authentication is still
                        the most common mechanism, the client basically
                        sends the password in plain text). </div>
                    </blockquote>
                    <div>=C2=A0</div>
                    <div>Yeah, that&#39;s a valid concern.=C2=A0 The only t=
hing I
                      can suggest is that the Subject CN from the
                      certificate is presented to the user.=C2=A0
                      Alternatively, there could be two passwords: one
                      that is the &quot;configuration password&quot; and on=
e that
                      is the email password.=C2=A0 However, I don&#39;t thi=
nk two
                      passwords will help us.=C2=A0 If I want to hack
                      somebody and can gain access to their WF config, I
                      can auto-config their email client to point to my
                      own IMAP server and just retrieve the password
                      that way.</div>
                    <div>=C2=A0</div>
                    <div>So, I think we have to rely on the certificate
                      presented to the mail client and the user will
                      have to know to trust it.=C2=A0 The mail provider can
                      tell the user &quot;when configuring email, ensure th=
at
                      the configuration server is <a href=3D"http://mailcon=
fig.example.com" target=3D"_blank">mailconfig.example.com</a>
                      and do not provide a password if that is not the
                      name of the configuration server indicated.&quot;</di=
v>
                    <div>=C2=A0</div>
                    <div>If the mail config information is not protected
                      with a password, we probably would want the
                      customer to verify that the SMTP server
                      information is correct before the password is
                      provided.=C2=A0 These would be the steps users would
                      take if performing manual configuration, but the
                      software presents that information to the user
                      without the user having to enter it.</div>
                    <div>=C2=A0</div>
                    <div>=C2=A0</div>
                    <blockquote cite=3D"http://575180B6.9010902@dmfs.org" t=
ype=3D"cite">
                      <div><br>
                        2) How does the client know which credentials to
                        use to set up the individual services in step 4?
                        Should the client ask the user for the
                        credentials for each service or can it assume
                        that some of them share the same credentials? Is
                        that something an auto-configuration document
                        can help with?</div>
                    </blockquote>
                    <div>=C2=A0</div>
                    <div>It would be nice if there is a config indicator
                      that says &quot;SMTP server and IMAP server passwords
                      are the same&quot;, so the client does not have to as=
k.</div>
                    <div>=C2=A0</div>
                    <div>If we use a &quot;config password&quot; then we co=
uld
                      even have the server tell the client the password
                      for services, which would transparently allow
                      those to be different.=C2=A0 Alternatively, the clien=
t
                      will have to ask each about each one.</div>
                    <div>=C2=A0</div>
                    <div>For calendaring services, then yes: the client
                      would have to ask the user.=C2=A0 It could ask if it&=
#39;s
                      the same or different than the email password or
                      the config password.=C2=A0 For some services, the
                      authentication mechanisms will be entirely
                      different (like Google Calendar).=C2=A0 The mail clie=
nt
                      will just have to know how to access the service.=C2=
=A0
                      For that reason, I&#39;m a little hesitant to suggest
                      including calendaring service config along with
                      the email config data.=C2=A0 We could have each of
                      those services listed in the users&#39; WebFinger
                      document.=C2=A0 For example, I might have this entry =
in
                      my WF document:</div>
                    <div>{</div>
                    <div>=C2=A0=C2=A0=C2=A0 &quot;rel&quot; : &quot;calenda=
r&quot;</div>
                    <div>=C2=A0=C2=A0=C2=A0 &quot;href&quot; : &quot;urn:wh=
atever:google&quot;</div>
                    <div>}</div>
                    <div>=C2=A0</div>
                    <div>Note I did not provide a URL.=C2=A0 The reason is
                      that this is an entirely different service that
                      has an entirely different access method.=C2=A0 Maybe
                      the client can ask the user &quot;is <a href=3D"mailt=
o:paulej@packetizer.com" target=3D"_blank">paulej@packetizer.com</a>
                      our user ID for=C2=A0your Google calendar?&quot;=C2=
=A0 In my
                      case, I don&#39;t think it is.=C2=A0 Certainly, it&#3=
9;s not my
                      gmail ID.=C2=A0 And, I would not want to advertise th=
at
                      to the world, necessarily.=C2=A0 Anyway, I think we
                      should limit the scope of what we try to do to
                      things that are standard OR we define a generic
                      URN that a client will just have to know how to
                      deal with.</div>
                    <div>=C2=A0</div>
                    <div>=C2=A0</div>
                    <blockquote cite=3D"http://575180B6.9010902@dmfs.org" t=
ype=3D"cite">
                      <div>Ideally the server
                        supports some kind of SSO mechanism like OpenID
                        Connect, so you don&#39;t need to enter your
                        password multiple times. But a working
                        auto-configuration is really the precondition
                        for this, because an OpenID Connect
                        implementations needs a way to discover the
                        OAuth2 scope tokens to request from the server
                        and auto-configuration is really the way to do
                        that, IMO. For this it would be helpful to have
                        some mechanism to request a broader scope from
                        the user (without allowing him to switch to a
                        different account), but that&#39;s a different topi=
c
                        I guess.</div>
                    </blockquote>
                    <div>=C2=A0</div>
                    <div>I definitely like the idea of SSO.=C2=A0 But, I
                      struggle to see how we would use this in practice
                      with mail autoconfig since SMTP, IMAP, and POP
                      servers require a password, anyway.=C2=A0 If we use
                      that as a means to have those passwords provided
                      behind the scenes (as I indicated above), that
                      might be a good argument for using OpenID
                      Connect.=C2=A0 In that way, the ISP can also ensure
                      that passwords are REALLY complex and unknown even
                      to the user.=C2=A0 Not a bad practice, in that we can
                      view those passwords as complex tokens.</div>
                    <div>=C2=A0</div>
                    <div>Would that kind of use of OpenID Connect to
                      retrieve the password be workable?=C2=A0 (I&#39;ll ad=
mit I
                      don&#39;t have so much experience with OpenID
                      Connect.=C2=A0 I implemented OpenID 2.0, but that&#39=
;s not
                      ideal for what we&#39;d want to accomplish here.=C2=
=A0 I
                      don&#39;t have a good feel for how Connect might make
                      this better.)</div>
                    <div>=C2=A0</div>
                    <div>Paul</div>
                    <div>=C2=A0</div>
                  </div>
                  <br>
                  <fieldset></fieldset>
                  <br>
                  <pre>_______________________________________________
webfinger mailing list
<a href=3D"mailto:webfinger@ietf.org" target=3D"_blank">webfinger@ietf.org<=
/a>
<a href=3D"https://www.ietf.org/mailman/listinfo/webfinger" target=3D"_blan=
k">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
                </blockquote>
                <br>
                <br>
                <pre cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: <a href=3D"tel:%2B49%20177%204427167" value=3D"+491774427167" target=
=3D"_blank">+49 177 4427167</a>
email: <a href=3D"mailto:marten@dmfs.org" target=3D"_blank">marten@dmfs.org=
</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
                <br>
                <fieldset></fieldset>
                <br>
                <pre>_______________________________________________
webfinger mailing list
<a href=3D"mailto:webfinger@ietf.org" target=3D"_blank">webfinger@ietf.org<=
/a>
<a href=3D"https://www.ietf.org/mailman/listinfo/webfinger" target=3D"_blan=
k">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
              </blockquote>
              <br>
            </blockquote>
            <br>
            <pre cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: <a href=3D"tel:%2B49%20177%204427167" value=3D"+491774427167" target=
=3D"_blank">+49 177 4427167</a>
email: <a href=3D"mailto:marten@dmfs.org" target=3D"_blank">marten@dmfs.org=
</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
            <br>
            <fieldset></fieldset>
            <br>
            <pre>_______________________________________________
webfinger mailing list
<a href=3D"mailto:webfinger@ietf.org" target=3D"_blank">webfinger@ietf.org<=
/a>
<a href=3D"https://www.ietf.org/mailman/listinfo/webfinger" target=3D"_blan=
k">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
          </blockquote>
          <br>
          <pre cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: <a href=3D"tel:%2B49%20177%204427167" value=3D"+491774427167" target=
=3D"_blank">+49 177 4427167</a>
email: <a href=3D"mailto:marten@dmfs.org" target=3D"_blank">marten@dmfs.org=
</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
        </blockquote>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
webfinger mailing list
<a href=3D"mailto:webfinger@ietf.org" target=3D"_blank">webfinger@ietf.org<=
/a>
<a href=3D"https://www.ietf.org/mailman/listinfo/webfinger" target=3D"_blan=
k">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
    </blockquote>
    <br>
    <pre cols=3D"72">--=20
Marten Gajda
CEO

dmfs GmbH
Schandauer Stra=C3=9Fe 34
01309 Dresden
GERMANY

phone: <a href=3D"tel:%2B49%20177%204427167" value=3D"+491774427167" target=
=3D"_blank">+49 177 4427167</a>
email: <a href=3D"mailto:marten@dmfs.org" target=3D"_blank">marten@dmfs.org=
</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
  </blockquote></div>


</div></div></div><br>_______________________________________________<br>
webfinger mailing list<br>
<a href=3D"mailto:webfinger@ietf.org">webfinger@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/webfinger" rel=3D"noreferr=
er" target=3D"_blank">https://www.ietf.org/mailman/listinfo/webfinger</a><b=
r>
<br></blockquote></div><br><br clear=3D"all"><div><br></div>-- <br><div cla=
ss=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr">=
<div><div dir=3D"ltr"><div><div dir=3D"ltr"><div><a href=3D"https://konklon=
e.com" target=3D"_blank">konklone.com</a> | <a href=3D"https://twitter.com/=
konklone" target=3D"_blank">@konklone</a><br></div></div></div></div></div>=
</div></div>
</div>

--001a114084684ffd9905379a98d3--


From nobody Thu Jul 14 09:51:20 2016
Return-Path: <paulej@packetizer.com>
X-Original-To: webfinger@ietfa.amsl.com
Delivered-To: webfinger@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 274AC12B040 for <webfinger@ietfa.amsl.com>; Thu, 14 Jul 2016 09:51:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.297
X-Spam-Level: 
X-Spam-Status: No, score=-1.297 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_ADSP_ALL=0.8, DKIM_SIGNED=0.1, HTML_FONT_FACE_BAD=0.981, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RP_MATCHES_RCVD=-1.287, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_DKIM_INVALID=0.01] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=fail (1024-bit key) reason="fail (message has been altered)" header.d=packetizer.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lo1dA1T2ALIZ for <webfinger@ietfa.amsl.com>; Thu, 14 Jul 2016 09:51:14 -0700 (PDT)
Received: from dublin.packetizer.com (dublin.packetizer.com [75.101.130.125]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 655EF12B04D for <webfinger@ietf.org>; Thu, 14 Jul 2016 09:51:14 -0700 (PDT)
Received: from [IPv6:2607:fb90:525c:d16c:0:44:eb14:d501] ([172.58.158.152]) (authenticated bits=0) by dublin.packetizer.com (8.15.2/8.15.2) with ESMTPSA id u6EGp8Y4009985 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 14 Jul 2016 12:51:09 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=packetizer.com; s=dublin; t=1468515070; bh=uyz0iYCHGqHeSX/9GnnfwcOQXKOzMvRuEcFS/0zKU8M=; h=In-Reply-To:References:Subject:From:Date:To:CC; b=m5OBUJYTehZLHlrVNw7pYADkoI7gjtV2KyvplhDyToe5zxxvcJFzy06A4FtoDV/QN PBkMdvQy0ejJ2xCDaF+RqFXJAX0iJULj3+Hy5FeFoOY7Y+hYhnHZ8H5GViY4Eh6jbU tnA7Kswt72nux/Jl20eydIaAy9SLV3Fg4CfNfQHM=
User-Agent: K-9 Mail for Android
In-Reply-To: <CANBOYLWyuFcGnLE2arivxiuYgmTnNDHdDi5YpWXO6F4ruY1UdA@mail.gmail.com>
References: <em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki> <575197C1.3090102@dmfs.org> <39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com> <575492E1.2000805@dmfs.org> <57587369.20405@dmfs.org> <em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney> <5786C161.7070806@dmfs.org> <emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney> <CANBOYLWyuFcGnLE2arivxiuYgmTnNDHdDi5YpWXO6F4ruY1UdA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----4I82A019RMWI0J0NP25MATPBHCT36T"
Content-Transfer-Encoding: 8bit
From: "Paul E. Jones" <paulej@packetizer.com>
Date: Thu, 14 Jul 2016 12:51:07 -0400
To: Eric Mill <eric@konklone.com>
Message-ID: <EEDEF770-8C1F-4342-95EC-EE3A8124CE4B@packetizer.com>
X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.6 (dublin.packetizer.com [10.137.60.122]); Thu, 14 Jul 2016 12:51:10 -0400 (EDT)
Archived-At: <https://mailarchive.ietf.org/arch/msg/webfinger/7qPgbpWXDdfAmnFMYbML6ljL7Vc>
Cc: Marten Gajda <marten@dmfs.org>, "webfinger@ietf.org" <webfinger@ietf.org>
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via	WebFinger
X-BeenThere: webfinger@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Discussion of the Webfinger protocol proposal in the Applications Area <webfinger.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webfinger>, <mailto:webfinger-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webfinger/>
List-Post: <mailto:webfinger@ietf.org>
List-Help: <mailto:webfinger-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webfinger>, <mailto:webfinger-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 14 Jul 2016 16:51:18 -0000

------4I82A019RMWI0J0NP25MATPBHCT36T
Content-Transfer-Encoding: 8bit
Content-Type: text/plain;
 charset=UTF-8

Eric,

Yes, it's relevant. WebFinger isn't widely used, because there are no defined use cases for it. This is one such use case.

Paul


-------- Original Message --------
From: Eric Mill <eric@konklone.com>
Sent: July 14, 2016 11:59:23 AM EDT
To: "Paul E. Jones" <paulej@packetizer.com>
Cc: Marten Gajda <marten@dmfs.org>, "webfinger@ietf.org" <webfinger@ietf.org>
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via	WebFinger

Is any of this relevant? Webfinger seems good and truly dead.

On Thu, Jul 14, 2016 at 2:19 AM, Paul E. Jones <paulej@packetizer.com>
wrote:

> Marten,
>
> I'll comment on each point:
>
> General:
> While I supported the original work a few years ago, it was killed partly
> because some people stood up and said "we already have several discover
> protocols, why do we need another.  And you were presented with much the
> same on this list when people asked why the DNS mechanism is insufficient.
> You provided some good arguments, of which I think individualized
> configuration is most important.  Let's make sure the new draft is scoped
> to just mail configuration.  (If we want to go further with calendar,
> contacts, etc. then arguably those should be separate URLs.  My mail and
> calendar is not provided by the same provider, for example.)
>
> Caching: HTTP allows one to dictate that how long cached data can live. I
> don't think we need to specify it further.  A client will pull the config
> when the user configures the client.  There's no reason to cache it beyond
> that point.  In the off chance it queries a second time, it's not a big
> deal.  It might get pulled from web cache or perhaps go back to the
> server.  It really does not matter, since this should not be queried over
> and over.  Only in the event that a config change is made, the client might
> need to re-query the config data.  I'm not sure if the client should
> automate that process or prompt the user "would you like me to re-validate
> the configuration settings?" Personally, I like the latter.
>
> Certificate pinning: Why? One fetches the mail config file.  The client
> will authenticate the certificate. Is this just to catch the very rare case
> where somebody hacks DNS and gets a fake certificate?  That's really a
> broader Internet infrastructure issue that I think we should solve
> generically.  (For example, use of notaries, DNSSEC/DANE, etc. Personally,
> I use DNSSEC/DANE, but somewhere close to zero people make use of that
> data.)
>
> Certificate Auth: I'm not sure what the problem is here, unless people
> want to use enterprise-issued certificates (i.e., those that are not from a
> public CA).  If that is the case, I would not want my mail client to insert
> those into my trusted certificate store.  So, would those be one-time
> uses?  Not very useful.  I'd say the IT department needs to install
> whatever root certs are needed.  A client should authenticate the
> certificates it sees, but we don't need more words about it other than to
> say the TLS connection must be authenticated.
>
> Document structure:  I think keeping this simple is really best.  I don't
> think we need multiple mail providers. If the email address is user@example.com,
> then I think it's reasonable to assume example.com is the provider.  Yes,
> a user could go enter WebFinger information for some other provider, but
> the average person will not want to do that.  That's having the user
> configure the server so it can configure the client.  Not much gained
> there.  I would have something that's no more complex than something like
> this:
>
> {
>  "incoming" :
>  [
>    {
>      "description" : "IMAP",
>      "protocol" : "imap",
>      "servers" :
>      [
>        {
>          "host" : "imap-01.example.com",
>          "port" : 143,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "imap-02.example.com",
>          "port" : 143,
>          "transport" : "starttls"
>        }
>      ]
>    },
>    {
>      "description" : "POP",
>      "protocol" : "pop3",
>      "servers" :
>      [
>        {
>          "host" : "imap-01.example.com",
>          "port" : 110,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "imap-02.example.com",
>          "port" : 110,
>          "transport" : "starttls"
>        }
>      ]
>    }
>  ],
>  "outgoing" :
>  [
>    {
>      "description" : "SMTP",
>      "protocol" : "smtp",
>      "servers" :
>      [
>        {
>          "host" : "smtp-01.example.com",
>          "port" : 587,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "smtp-02.example.com",
>          "port" : 587,
>          "transport" : "starttls"
>        },
>        {
>          "host" : "smtp-01.example.com",
>          "port" : 465,
>          "transport" : "tls"
>        },
>        {
>          "host" : "smtp-02.example.com",
>          "port" : 465,
>          "transport" : "tls"
>        }
>      ]
>    }
>  ]
> }
>
>
> I use a arrays to offer different protocols (POP3 and IMAP) with
> descriptions to let the user choose.  If there is only one choice (as in
> the case of SMTP), then the user need not be bothered with selection. There
> are multiple servers, each intended to be an alternative listed in order of
> preference.
>
> I would define a document for each service that might be made available
> through WebFinger (email config, calendar config, contacts config).  And,
> each of these documents would be discovered via a different URI.  So, in
> the JRD returned via the WebFinger query, there might be this a "rel" of
> type "email" with a URI and another of type "contacts", "calendar", etc.
>  (I did not check to see which rel values are used, but the names are not
> important.)
>
> When a user enters his or her email address, the client can discover which
> of those services are available and offer them, allowing the user to use or
> not use each one.  In my case, calendaring is not provided at my domain.
> So, I would go to my email program and say "add an account" and enter a new
> email address.  Since each set of services is individually selectable by
> the user, it's easy to mix and match email, calendaring, contacts, or
> whatever from different places.  It will require entering different account
> credentials, but I think that should be the way it works.
>
> TLS ought to be required, but it could be left to the admin.  WebFinger
> requires it, but I seriously do not see the security concerns with a simple
> mail config file like the above.  But, if people want to secure it, they
> can.  And security should be through whatever mechanisms HTTP presents to
> the user.  I would not want to invent new ones or try to solve how to do
> something hypothetically.  My mail server requires a password and I think
> it's reasonable the HTTP server require the same.  Perhaps my calendar
> requires OAuth.  We could put the URI to the authorization server as a
> property in the WebFinger reply, like this:
>
> {
>  "rel" : "mail-config",
>  "href" : "https://mail-config.example.com/paulej",
>  "properties" : {
>    "urn:ietf:params:oauth:authserver" : "https://oauth.example.com/paulej"
>  }
> }
>
>
> That might be insufficient for OAuth, since just having the URI to the
> auth server isn't enough for the Auth server, I think, as it would not
> necessarily understand the "client_id" parameter.  However, I'm not a guru
> in OAuth, so perhaps others can suggest improvements here.   The intent is
> for the client to recognize that it needs to do OAuth authentication before
> attempting to query the resource to get the actual configuration.  I assume
> we could use the same OAuth token for both accessing the config resource
> and with the SMTP and IMAP servers. (Those could be different credentials,
> but I would really hope we do not ask users to authenticate multiple times
> for a single service.)
>
> Paul
>
> ------ Original Message ------
> From: "Marten Gajda" <marten@dmfs.org>
> To: "webfinger@ietf.org" <webfinger@ietf.org>
> Sent: 7/13/2016 6:32:01 PM
> Subject: Re: [webfinger] [apps-discuss] Mail client configuration via
> WebFinger
>
> Hi Paul,
>
> the "current draft" is still the one at
> https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03
> and the issues at GitHub are discussion items for the upcoming draft.
> I wanted to clarify a few points before I start to work on the draft. If
> you have anything to add to these points or if you have any other concerns,
> please let me know, so we can address them.
> Unless there is some more interest in the certificate stuff, I'm not going
> to add this to the draft. We still can add that later on if it turns out to
> be useful.
>
> Cheers,
>
> Marten
>
>
> Am 11.07.2016 um 23:31 schrieb Paul E. Jones:
>
> Marten,
>
> Sorry to just be coming back to this after a whole month passed.
>
> What current draft?  Did you write one that I missed?  Or are these
> requirements for the draft you would like to see?
>
> Paul
>
> ------ Original Message ------
> From: "Marten Gajda" <marten@dmfs.org>
> To: "webfinger@ietf.org" <webfinger@ietf.org> <webfinger@ietf.org>
> Sent: 6/8/2016 3:35:05 PM
> Subject: Re: [webfinger] [apps-discuss] Mail client configuration via
> WebFinger
>
> All,
>
> I've created a GitHub repository to track open issues with the current
> draft, see https://github.com/CalConnect/AUTODISCOVERY/issues
> You're welcome to contribute to the discussion, either by creating a new
> issue or by commenting on an existing one.
>
> Thanks,
>
> Marten
>
> Am 05.06.2016 um 23:00 schrieb Marten Gajda:
>
> I think OpenID Connect already covers the discovery of everything you need
> to do OAuth2. That involves Webfinger, but there is no need to protect this
> request, because it doesn't contain personal information.
> So we don't need to reinvent the OAuth2 bootstrapping sequence.
> The only minor issue I see is that you may have to ask the user twice to
> grant access. Once to authorize the client to access the configuration
> document and another time to authorize the client to access the individual
> services. The second step is necessary, because the scope tokens of these
> services are not known when the first authorization request is presented to
> the user. The problem with that is, there doesn't seem to be a mechanism to
> broaden scope, without allowing the user to switch to a different account.
> To get access to the individual services, the client needs to start another
> authorization code grant. But the user is always free to log out and log in
> with a different account before granting access.
>
> Marten
>
> Am 03.06.2016 um 20:13 schrieb George Fletcher:
>
> Did a quick scan of the draft document. Given that more and more systems
> are trying to remove the need for passwords, it seems like the final
> solution needs to support 2FA and biometric mechanisms for "HTTP
> authentication". I definitely would not want the webfinger instance
> releasing my config data without my "authentication". I suppose OAuth2
> could be used to protect the webfinger APIs though there is a bit of a
> chicken-and-egg here:)
>
> I kind of like the suggestion around returning a 401 with data in the
> WWW-Authenticate header on where to get a token to use with the API. This
> would allow the client to start and OAuth2 flow with the Authorization
> Server specified and that would give the user a clear indication of what
> password/credentials are being requested. Once the client gets the token,
> it uses it with the webfinger call and now the service-configuration data
> is returned because the token is the authorization for the specified id.
>
> Thanks,
> George
>
> On 6/3/16 10:44 AM, Marten Gajda wrote:
>
> Note that the idea behind
> https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03
> is to put the service configuration for all services of a provider into a
> single document.
>
> So you would receive something like this:
>
> {
>     "rel " :  "service-configuration",
>     "href " : "https://example.com/service-configuration"
> <https://example.com/service-configuration>
> }
>
> If a user uses the same account identifier at another provider the
> Webfinger request could return their configuration too (given there is some
> mechanism to add it and the provider actually supports that).
>
> {
>     "rel " :  "service-configuration",
>     "href " : "https://example.com/service-configuration"
> <https://example.com/service-configuration>
> },
> {
>     "rel " :  "service-configuration",
>     "href " : "https://acme-calendar.com/service-configuration"
> <https://acme-calendar.com/service-configuration>
> }
>
> Without that it would be more difficult to setup your account at
> acme-calendar.com with your login "user@example.com" <user@example.com>.
> acme-calendar.com would have to issue some kind of user-identifier like
> user@acme-calendar.com for auto-configuration purposes, even though you
> don't use it for authentication (because you use user@exampe.com for
> authentication). I think that's the idea behind the `acct:` URI scheme, but
> I don't think that you can explain to users why they need another user
> identifier and when to use one or the other.
> But that also raises the privacy concerns I mentioned earlier. If the
> request is not authenticated, everyone could see that you have an account
> at acme-calendar.com.
>
> Regarding SSO: There is an RFC that extends SASL based authentication to
> support the token authentication mechanisms as used by OAuth1 and OAuth2,
> see https://tools.ietf.org/html/rfc7628
> So SSO already works with IMAP, POP3 and SMTP.
>
> Cheers
>
> Marten
>
>
>
> Am 03.06.2016 um 15:40 schrieb Paul E. Jones:
>
> Marten,
>
>
>
> So how would the UI work?
>
> 1) User enters user identifier, most likely an email address, like
> mailto:user@example.com <user@example.com> and hits "next"
>
> 2) Client sends a Webfinger request to
> https://exampe.com/.well-known/webfinger?... to see if there is a
> configuration document
>
>   -> response 404 Not Found
>    a) Client falls back to "manual setup" or another auto-configuration
> mechanism
>
>   -> response 401 Unauthorized
>
>
> One should not get 401 querying the WebFinger information for the user.
> What should happen is that the server should return a JSON object that
> contains a link relation that might look like this:
> {
>     "rel " :  "mail-config",
>     "href " :
> "https://mailserver.example.com/config?user=paulej%40packetizer.com"
> <https://mailserver.example.com/config?user=paulej%40packetizer.com>
> }
>
> Or something like that.  The mail client should query that URI it is that
> one that should result in a potential 401.  The JSON format that would come
> back here would need to be something we define.  It could be based on JRD,
> but would not have to be.
>
> Otherwise, I think the flow looks right.
>
>
>
>
>    b) Client asks for password at "example.com" and goes back to step 2
> (this time with authentication)
>
>   -> response 200 Ok
>    c) client moves on to next step
>
> 3) (optional) Client presents found services to the user to let him select
> the services to set up
>
> 4) Client runs the setup handler for each selected service
>
>
> I think in general that could work but it raises two questions:
>
> 1) How to make sure the user really understands that he's authenticating
> at example.com in step 2b? If the user tries to configure calendar sync
> with "acme-calendar.com" where his login happens to be
> mailto:user@example.com <user@example.com> he might not be prepared to
> being asked for his example.com password. Maybe I'm just paranoid or
> overcautious, but I think that it might easily happen that the users sends
> his acme-calendar.com password to example.com in that case (since Basic
> authentication is still the most common mechanism, the client basically
> sends the password in plain text).
>
>
> Yeah, that's a valid concern.  The only thing I can suggest is that the
> Subject CN from the certificate is presented to the user.  Alternatively,
> there could be two passwords: one that is the "configuration password" and
> one that is the email password.  However, I don't think two passwords will
> help us.  If I want to hack somebody and can gain access to their WF
> config, I can auto-config their email client to point to my own IMAP server
> and just retrieve the password that way.
>
> So, I think we have to rely on the certificate presented to the mail
> client and the user will have to know to trust it.  The mail provider can
> tell the user "when configuring email, ensure that the configuration server
> is mailconfig.example.com and do not provide a password if that is not
> the name of the configuration server indicated."
>
> If the mail config information is not protected with a password, we
> probably would want the customer to verify that the SMTP server information
> is correct before the password is provided.  These would be the steps users
> would take if performing manual configuration, but the software presents
> that information to the user without the user having to enter it.
>
>
>
>
> 2) How does the client know which credentials to use to set up the
> individual services in step 4? Should the client ask the user for the
> credentials for each service or can it assume that some of them share the
> same credentials? Is that something an auto-configuration document can help
> with?
>
>
> It would be nice if there is a config indicator that says "SMTP server and
> IMAP server passwords are the same", so the client does not have to ask.
>
> If we use a "config password" then we could even have the server tell the
> client the password for services, which would transparently allow those to
> be different.  Alternatively, the client will have to ask each about each
> one.
>
> For calendaring services, then yes: the client would have to ask the
> user.  It could ask if it's the same or different than the email password
> or the config password.  For some services, the authentication mechanisms
> will be entirely different (like Google Calendar).  The mail client will
> just have to know how to access the service.  For that reason, I'm a little
> hesitant to suggest including calendaring service config along with the
> email config data.  We could have each of those services listed in the
> users' WebFinger document.  For example, I might have this entry in my WF
> document:
> {
>     "rel" : "calendar"
>     "href" : "urn:whatever:google"
> }
>
> Note I did not provide a URL.  The reason is that this is an entirely
> different service that has an entirely different access method.  Maybe the
> client can ask the user "is paulej@packetizer.com our user ID for your
> Google calendar?"  In my case, I don't think it is.  Certainly, it's not my
> gmail ID.  And, I would not want to advertise that to the world,
> necessarily.  Anyway, I think we should limit the scope of what we try to
> do to things that are standard OR we define a generic URN that a client
> will just have to know how to deal with.
>
>
>
> Ideally the server supports some kind of SSO mechanism like OpenID
> Connect, so you don't need to enter your password multiple times. But a
> working auto-configuration is really the precondition for this, because an
> OpenID Connect implementations needs a way to discover the OAuth2 scope
> tokens to request from the server and auto-configuration is really the way
> to do that, IMO. For this it would be helpful to have some mechanism to
> request a broader scope from the user (without allowing him to switch to a
> different account), but that's a different topic I guess.
>
>
> I definitely like the idea of SSO.  But, I struggle to see how we would
> use this in practice with mail autoconfig since SMTP, IMAP, and POP servers
> require a password, anyway.  If we use that as a means to have those
> passwords provided behind the scenes (as I indicated above), that might be
> a good argument for using OpenID Connect.  In that way, the ISP can also
> ensure that passwords are REALLY complex and unknown even to the user.  Not
> a bad practice, in that we can view those passwords as complex tokens.
>
> Would that kind of use of OpenID Connect to retrieve the password be
> workable?  (I'll admit I don't have so much experience with OpenID
> Connect.  I implemented OpenID 2.0, but that's not ideal for what we'd want
> to accomplish here.  I don't have a good feel for how Connect might make
> this better.)
>
> Paul
>
>
>
> _______________________________________________
> webfinger mailing listwebfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>
>
>
> --
> Marten Gajda
> CEO
>
> dmfs GmbH
> Schandauer Straße 34
> 01309 Dresden
> GERMANY
>
> phone: +49 177 4427167
> email: marten@dmfs.org
>
> Managing Director: Marten Gajda
> Registered address: Dresden
> Registered No.: AG Dresden HRB 34881
> VAT Reg. No.: DE303248743
>
>
>
> _______________________________________________
> webfinger mailing listwebfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>
>
>
> --
> Marten Gajda
> CEO
>
> dmfs GmbH
> Schandauer Straße 34
> 01309 Dresden
> GERMANY
>
> phone: +49 177 4427167
> email: marten@dmfs.org
>
> Managing Director: Marten Gajda
> Registered address: Dresden
> Registered No.: AG Dresden HRB 34881
> VAT Reg. No.: DE303248743
>
>
>
> _______________________________________________
> webfinger mailing listwebfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>
>
> --
> Marten Gajda
> CEO
>
> dmfs GmbH
> Schandauer Straße 34
> 01309 Dresden
> GERMANY
>
> phone: +49 177 4427167
> email: marten@dmfs.org
>
> Managing Director: Marten Gajda
> Registered address: Dresden
> Registered No.: AG Dresden HRB 34881
> VAT Reg. No.: DE303248743
>
>
>
> _______________________________________________
> webfinger mailing listwebfinger@ietf.orghttps://www.ietf.org/mailman/listinfo/webfinger
>
>
> --
> Marten Gajda
> CEO
>
> dmfs GmbH
> Schandauer Straße 34
> 01309 Dresden
> GERMANY
>
> phone: +49 177 4427167
> email: marten@dmfs.org
>
> Managing Director: Marten Gajda
> Registered address: Dresden
> Registered No.: AG Dresden HRB 34881
> VAT Reg. No.: DE303248743
>
>
> _______________________________________________
> webfinger mailing list
> webfinger@ietf.org
> https://www.ietf.org/mailman/listinfo/webfinger
>
>


-- 
konklone.com | @konklone <https://twitter.com/konklone>


------------------------------------------------------------------------

_______________________________________________
webfinger mailing list
webfinger@ietf.org
https://www.ietf.org/mailman/listinfo/webfinger

------4I82A019RMWI0J0NP25MATPBHCT36T
Content-Type: text/html;
 charset=utf-8
Content-Transfer-Encoding: 8bit

<html><head></head><body>Eric,<br>
<br>
Yes, it&#39;s relevant. WebFinger isn&#39;t widely used, because there are no defined use cases for it. This is one such use case.<br>
<br>
Paul<br><br><div style='font-size:10.0pt;font-family:"Tahoma","sans-serif";padding:3.0pt 0in 0in 0in'>
<hr style='border:none;border-top:solid #E1E1E1 1.0pt'>
<b>From:</b> Eric Mill &lt;eric@konklone.com&gt;<br>
<b>Sent:</b> July 14, 2016 11:59:23 AM EDT<br>
<b>To:</b> &quot;Paul E. Jones&quot; &lt;paulej@packetizer.com&gt;<br>
<b>Cc:</b> Marten Gajda &lt;marten@dmfs.org&gt;, &quot;webfinger@ietf.org&quot; &lt;webfinger@ietf.org&gt;<br>
<b>Subject:</b> Re: [webfinger] [apps-discuss] Mail client configuration via	WebFinger<br>
</div>
<br>
<div dir="ltr">Is any of this relevant? Webfinger seems good and truly dead.</div><div class="gmail_extra"><br /><div class="gmail_quote">On Thu, Jul 14, 2016 at 2:19 AM, Paul E. Jones <span dir="ltr">&lt;<a href="mailto:paulej@packetizer.com" target="_blank">paulej@packetizer.com</a>&gt;</span> wrote:<br /><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
    
  
  <div><div>Marten,</div><div><br /></div><div>I&#39;ll comment on each point:</div><div><br /></div><div>General:</div><div>While I supported the original work a few years ago, it was killed partly because some people stood up and said &quot;we already have several discover protocols, why do we need another.  And you were presented with much the same on this list when people asked why the DNS mechanism is insufficient.  You provided some good arguments, of which I think individualized configuration is most important.  Let&#39;s make sure the new draft is scoped to just mail configuration.  (If we want to go further with calendar, contacts, etc. then arguably those should be separate URLs.  My mail and calendar is not provided by the same provider, for example.)</div><div><br /></div><div>Caching: HTTP allows one to dictate that how long cached data can live. I don&#39;t think we need to specify it further.  A client will pull the config when the user configures the cl!
 ient. 
There&#39;s no reason to cache it beyond that point.  In the off chance it queries a second time, it&#39;s not a big deal.  It might get pulled from web cache or perhaps go back to the server.  It really does not matter, since this should not be queried over and over.  Only in the event that a config change is made, the client might need to re-query the config data.  I&#39;m not sure if the client should automate that process or prompt the user &quot;would you like me to re-validate the configuration settings?&quot; Personally, I like the latter.</div><div><br /></div><div>Certificate pinning: Why? One fetches the mail config file.  The client will authenticate the certificate. Is this just to catch the very rare case where somebody hacks DNS and gets a fake certificate?  That&#39;s really a broader Internet infrastructure issue that I think we should solve generically.  (For example, use of notaries, DNSSEC/DANE, etc. Personally, I use DNSSEC/DANE, but somewhere clo!
 se to
zero people make use of that data.)</div><div><br /></div><div>Certificate Auth: I&#39;m not sure what the problem is here, unless people want to use enterprise-issued certificates (i.e., those that are not from a public CA).  If that is the case, I would not want my mail client to insert those into my trusted certificate store.  So, would those be one-time uses?  Not very useful.  I&#39;d say the IT department needs to install whatever root certs are needed.  A client should authenticate the certificates it sees, but we don&#39;t need more words about it other than to say the TLS connection must be authenticated.</div><div><br /></div><div>Document structure:  I think keeping this simple is really best.  I don&#39;t think we need multiple mail providers. If the email address is <a href="mailto:user@example.com," target="_blank">user@example.com, </a>then I think it&#39;s reasonable to assume <a href="http://example.com" target="_blank">example.com</a> is the provider!
 .  Yes,
a user could go enter WebFinger information for some other provider, but the average person will not want to do that.  That&#39;s having the user configure the server so it can configure the client.  Not much gained there.  I would have something that&#39;s no more complex than something like this:</div><div><br /></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font face="Courier New" size="2" style="font-size:10pt">{</font></div><div><font face="Courier New" size="2" style="font-size:10pt">  &quot;incoming&quot; :</font></div><div><font face="Courier New" size="2" style="font-size:10pt">  [</font></div><div><font face="Courier New" size="2" style="font-size:10pt">    {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      &quot;description&quot; : &quot;IMAP&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      &quot;protocol&quot; : &quot;imap&quot;,</font></div><div><font
face="Courier New" size="2" style="font-size:10pt">      &quot;servers&quot; :</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      [</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;host&quot; : &quot;<a href="http://imap-01.example.com" target="_blank">imap-01.example.com</a>&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;port&quot; : 143,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;transport&quot; : &quot;starttls&quot;</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        },</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;host&quot; : &quo!
 t;<a
href="http://imap-02.example.com" target="_blank">imap-02.example.com</a>&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;port&quot; : 143,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;transport&quot; : &quot;starttls&quot;</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        }</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      ]</font></div><div><font face="Courier New" size="2" style="font-size:10pt">    },</font></div><div><font face="Courier New" size="2" style="font-size:10pt">    {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      &quot;description&quot; : &quot;POP&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      &quot;protocol&quot; : &quot;pop3&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt"!
 >    
 &quot;servers&quot; :</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      [</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;host&quot; : &quot;<a href="http://imap-01.example.com" target="_blank">imap-01.example.com</a>&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;port&quot; : 110,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;transport&quot; : &quot;starttls&quot;</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        },</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;host&quot; : &quot;<a href="http://imap-02.example.com"
target="_blank">imap-02.example.com</a>&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;port&quot; : 110,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;transport&quot; : &quot;starttls&quot;</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        }</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      ]</font></div><div><font face="Courier New" size="2" style="font-size:10pt">    }</font></div><div><font face="Courier New" size="2" style="font-size:10pt">  ],</font></div><div><font face="Courier New" size="2" style="font-size:10pt">  &quot;outgoing&quot; :</font></div><div><font face="Courier New" size="2" style="font-size:10pt">  [</font></div><div><font face="Courier New" size="2" style="font-size:10pt">    {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      &quot;descriptio!
 n&quot;
: &quot;SMTP&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      &quot;protocol&quot; : &quot;smtp&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      &quot;servers&quot; :</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      [</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;host&quot; : &quot;<a href="http://smtp-01.example.com" target="_blank">smtp-01.example.com</a>&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;port&quot; : 587,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;transport&quot; : &quot;starttls&quot;</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        },</font></div><div><font face="Cour!
 ier New"
size="2" style="font-size:10pt">        {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;host&quot; : &quot;<a href="http://smtp-02.example.com" target="_blank">smtp-02.example.com</a>&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;port&quot; : 587,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;transport&quot; : &quot;starttls&quot;</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        },</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;host&quot; : &quot;<a href="http://smtp-01.example.com" target="_blank">smtp-01.example.com</a>&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;port&quot; :
465,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;transport&quot; : &quot;tls&quot;</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        },</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        {</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;host&quot; : &quot;<a href="http://smtp-02.example.com" target="_blank">smtp-02.example.com</a>&quot;,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;port&quot; : 465,</font></div><div><font face="Courier New" size="2" style="font-size:10pt">          &quot;transport&quot; : &quot;tls&quot;</font></div><div><font face="Courier New" size="2" style="font-size:10pt">        }</font></div><div><font face="Courier New" size="2" style="font-size:10pt">      ]</font></div><div><font face="Courier New" size="2"
style="font-size:10pt">    }</font></div><div><font face="Courier New" size="2" style="font-size:10pt">  ]</font></div><div><font face="Courier New" size="2" style="font-size:10pt">}</font></div></blockquote><div><br /></div><div>I use a arrays to offer different protocols (POP3 and IMAP) with descriptions to let the user choose.  If there is only one choice (as in the case of SMTP), then the user need not be bothered with selection. There are multiple servers, each intended to be an alternative listed in order of preference.</div><div><br /></div><div>I would define a document for each service that might be made available through WebFinger (email config, calendar config, contacts config).  And, each of these documents would be discovered via a different URI.  So, in the JRD returned via the WebFinger query, there might be this a &quot;rel&quot; of type &quot;email&quot; with a URI and another of type &quot;contacts&quot;, &quot;calendar&quot;, etc.  (I did not check !
 to see
which rel values are used, but the names are not important.)</div><div><br /></div><div>When a user enters his or her email address, the client can discover which of those services are available and offer them, allowing the user to use or not use each one.  In my case, calendaring is not provided at my domain.  So, I would go to my email program and say &quot;add an account&quot; and enter a new email address.  Since each set of services is individually selectable by the user, it&#39;s easy to mix and match email, calendaring, contacts, or whatever from different places.  It will require entering different account credentials, but I think that should be the way it works.</div><div><br /></div><div>TLS ought to be required, but it could be left to the admin.  WebFinger requires it, but I seriously do not see the security concerns with a simple mail config file like the above.  But, if people want to secure it, they can.  And security should be through whatever mechanis!
 ms HTTP
presents to the user.  I would not want to invent new ones or try to solve how to do something hypothetically.  My mail server requires a password and I think it&#39;s reasonable the HTTP server require the same.  Perhaps my calendar requires OAuth.  We could put the URI to the authorization server as a property in the WebFinger reply, like this:</div><div><br /></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font face="Courier New" size="2">{</font></div><div><font face="Courier New" size="2">  &quot;rel&quot; : &quot;mail-config&quot;,</font></div><div><font face="Courier New" size="2">  &quot;href&quot; : &quot;<a href="https://mail-config.example.com/paulej" target="_blank">https://mail-config.example.com/paulej</a>&quot;,</font></div><div><font face="Courier New" size="2">  &quot;properties&quot; : {</font></div><div><font face="Courier New" size="2">    &quot;urn:ietf:params:oauth:authserver&quot; : &quot;<a
href="https://oauth.example.com/paulej" target="_blank">https://oauth.example.com/paulej</a>&quot;</font></div><div><font face="Courier New" size="2">  }</font></div><div><font face="Courier New" size="2">}</font></div></blockquote><div><br /></div><div>That might be insufficient for OAuth, since just having the URI to the auth server isn&#39;t enough for the Auth server, I think, as it would not necessarily understand the &quot;client_id&quot; parameter.  However, I&#39;m not a guru in OAuth, so perhaps others can suggest improvements here.   The intent is for the client to recognize that it needs to do OAuth authentication before attempting to query the resource to get the actual configuration.  I assume we could use the same OAuth token for both accessing the config resource and with the SMTP and IMAP servers. (Those could be different credentials, but I would really hope we do not ask users to authenticate multiple times for a single service.)</div><span class=""><di!
 v><br
/></div><div>Paul</div><div><br /></div>
<div>------ Original Message ------</div>
<div>From: &quot;Marten Gajda&quot; &lt;<a href="mailto:marten@dmfs.org" target="_blank">marten@dmfs.org</a>&gt;</div>
<div>To: &quot;<a href="mailto:webfinger@ietf.org" target="_blank">webfinger@ietf.org</a>&quot; &lt;<a href="mailto:webfinger@ietf.org" target="_blank">webfinger@ietf.org</a>&gt;</div>
</span><div><div class="h5"><div>Sent: 7/13/2016 6:32:01 PM</div>
<div>Subject: Re: [webfinger] [apps-discuss] Mail client configuration via WebFinger</div><div><br /></div>
<div style="color:#000000"><blockquote cite="http://5786C161.7070806@dmfs.org" type="cite">

    Hi Paul,<br />
    <br />
    the &quot;current draft&quot; is still the one at
    <a href="https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03" target="_blank">https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03</a>
    and the issues at GitHub are discussion items for the upcoming
    draft.<br />
    I wanted to clarify a few points before I start to work on the
    draft. If you have anything to add to these points or if you have
    any other concerns, please let me know, so we can address them.<br />
    Unless there is some more interest in the certificate stuff, I&#39;m not
    going to add this to the draft. We still can add that later on if it
    turns out to be useful.<br />
    <br />
    Cheers,<br />
    <br />
    Marten<br />
    <br />
    <br />
    <div>Am 11.07.2016 um 23:31 schrieb Paul E.
      Jones:<br />
    </div>
    <blockquote type="cite">
      
      <div>Marten,</div>
      <div><br />
      </div>
      <div>Sorry to just be coming back to this after a whole month
        passed.</div>
      <div><br />
      </div>
      <div>What current draft?  Did you write one that I missed?  Or are
        these requirements for the draft you would like to see?</div>
      <div><br />
      </div>
      <div>Paul</div>
      <div><br />
      </div>
      <div>------ Original Message ------</div>
      <div>From: &quot;Marten Gajda&quot; &lt;<a href="mailto:marten@dmfs.org" target="_blank">marten@dmfs.org</a>&gt;</div>
      <div>To: <a href="mailto:webfinger@ietf.org" target="_blank">&quot;webfinger@ietf.org&quot;</a> &lt;<a href="mailto:webfinger@ietf.org" target="_blank">webfinger@ietf.org</a>&gt;</div>
      <div>Sent: 6/8/2016 3:35:05 PM</div>
      <div>Subject: Re: [webfinger] [apps-discuss] Mail client
        configuration via WebFinger</div>
      <div><br />
      </div>
      <div style="color:#000000">
        <blockquote cite="http://57587369.20405@dmfs.org" type="cite"> All,<br />
          <br />
          I&#39;ve created a GitHub repository to track open issues with the
          current draft, see <a href="https://github.com/CalConnect/AUTODISCOVERY/issues" target="_blank">https://github.com/CalConnect/AUTODISCOVERY/issues</a><br />
          You&#39;re welcome to contribute to the discussion, either by
          creating a new issue or by commenting on an existing one.<br />
          <br />
          Thanks,<br />
          <br />
          Marten<br />
          <br />
          <div>Am 05.06.2016 um 23:00 schrieb
            Marten Gajda:<br />
          </div>
          <blockquote type="cite"> I think OpenID Connect already covers the
            discovery of everything you need to do OAuth2. That involves
            Webfinger, but there is no need to protect this request,
            because it doesn&#39;t contain personal information.<br />
            So we don&#39;t need to reinvent the OAuth2 bootstrapping
            sequence.<br />
            The only minor issue I see is that you may have to ask the
            user twice to grant access. Once to authorize the client to
            access the configuration document and another time to
            authorize the client to access the individual services. The
            second step is necessary, because the scope tokens of these
            services are not known when the first authorization request
            is presented to the user. The problem with that is, there
            doesn&#39;t seem to be a mechanism to broaden scope, without
            allowing the user to switch to a different account. To get
            access to the individual services, the client needs to start
            another authorization code grant. But the user is always
            free to log out and log in with a different account before
            granting access.<br />
            <br />
            Marten<br />
            <br />
            <div>Am 03.06.2016 um 20:13 schrieb
              George Fletcher:<br />
            </div>
            <blockquote type="cite"> Did a quick scan of the draft
              document. Given that more and more systems are trying to
              remove the need for passwords, it seems like the final
              solution needs to support 2FA and biometric mechanisms for
              &quot;HTTP authentication&quot;. I definitely would not want the
              webfinger instance releasing my config data without my
              &quot;authentication&quot;. I suppose OAuth2 could be used to
              protect the webfinger APIs though there is a bit of a
              chicken-and-egg here:)<br />
              <br />
              I kind of like the suggestion around returning a 401 with
              data in the WWW-Authenticate header on where to get a
              token to use with the API. This would allow the client to
              start and OAuth2 flow with the Authorization Server
              specified and that would give the user a clear indication
              of what password/credentials are being requested. Once the
              client gets the token, it uses it with the webfinger call
              and now the service-configuration data is returned because
              the token is the authorization for the specified id.<br />
              <br />
              Thanks,<br />
              George<br />
              <br />
              <div>On 6/3/16 10:44 AM, Marten
                Gajda wrote:<br />
              </div>
              <blockquote type="cite">
                <div>Note that the idea behind <a href="https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03" target="_blank">https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03</a>
                  is to put the service configuration for all services
                  of a provider into a single document.<br />
                  <br />
                  So you would receive something like this:<br />
                  <br />
                  <div>{</div>
                  <div>    &quot;rel &quot; :  &quot;service-configuration&quot;,</div>
                  <div>    &quot;href &quot; : <a href="https://example.com/service-configuration" target="_blank">&quot;https://example.com/service-configuration&quot;</a></div>
                  <div>}</div>
                  <br />
                  If a user uses the same account identifier at another
                  provider the Webfinger request could return their
                  configuration too (given there is some mechanism to
                  add it and the provider actually supports that).<br />
                  <div><br />
                    {</div>
                  <div>    &quot;rel &quot; :  &quot;service-configuration&quot;,</div>
                  <div>    &quot;href &quot; : <a href="https://example.com/service-configuration" target="_blank">&quot;https://example.com/service-configuration&quot;</a></div>
                  <div>},<br />
                    {
                    <div>    &quot;rel &quot; :  &quot;service-configuration&quot;,</div>
                    <div>    &quot;href &quot; : <a href="https://acme-calendar.com/service-configuration" target="_blank">&quot;https://acme-calendar.com/service-configuration&quot;</a></div>
                    <div>}</div>
                    <br />
                    Without that it would be more difficult to setup
                    your account at <a href="http://acme-calendar.com" target="_blank">acme-calendar.com</a> with your login <a href="mailto:user@example.com" target="_blank">&quot;user@example.com&quot;</a>.
                    <a href="http://acme-calendar.com" target="_blank">acme-calendar.com</a> would have to issue some kind of
                    user-identifier like <a href="mailto:user@acme-calendar.com" target="_blank">user@acme-calendar.com</a>
                    for auto-configuration purposes, even though you
                    don&#39;t use it for authentication (because you use <a href="mailto:user@exampe.com" target="_blank">user@exampe.com</a>
                    for authentication). I think that&#39;s the idea behind
                    the `acct:` URI scheme, but I don&#39;t think that you
                    can explain to users why they need another user
                    identifier and when to use one or the other.<br />
                    But that also raises the privacy concerns I
                    mentioned earlier. If the request is not
                    authenticated, everyone could see that you have an
                    account at <a href="http://acme-calendar.com" target="_blank">acme-calendar.com</a>.<br />
                    <br />
                    Regarding SSO: There is an RFC that extends SASL
                    based authentication to support the token
                    authentication mechanisms as used by OAuth1 and
                    OAuth2, see <a href="https://tools.ietf.org/html/rfc7628" target="_blank">https://tools.ietf.org/html/rfc7628</a><br />
                    So SSO already works with IMAP, POP3 and SMTP.<br />
                    <br />
                    Cheers<br />
                    <br />
                    Marten<br />
                  </div>
                  <br />
                  <br />
                  <br />
                  Am 03.06.2016 um 15:40 schrieb Paul E. Jones:<br />
                </div>
                <blockquote type="cite">
                  
                  <div>Marten,</div>
                  <div> </div>
                  <div> </div>
                  <div style="COLOR:#000000">
                    <blockquote cite="http://575180B6.9010902@dmfs.org" type="cite">
                      <div>So how would the UI
                        work?<br />
                        <br />
                        1) User enters user identifier, most likely an
                        email address, like <a href="mailto:user@example.com" target="_blank">mailto:user@example.com</a>
                        and hits &quot;next&quot;<br />
                        <br />
                        2) Client sends a Webfinger request to <a href="https://exampe.com/.well-known/webfinger" target="_blank">https://exampe.com/.well-known/webfinger</a>?...



                        to see if there is a configuration document<br />
                        <br />
                          -&gt; response 404 Not Found<br />
                           a) Client falls back to &quot;manual setup&quot; or
                        another auto-configuration mechanism<br />
                        <br />
                          -&gt; response 401 Unauthorized</div>
                    </blockquote>
                    <div> </div>
                    <div>One should not get 401 querying the WebFinger
                      information for the user.  What should happen is
                      that the server should return a JSON object that
                      contains a link relation that might look like
                      this:</div>
                    <div>{</div>
                    <div>    &quot;rel &quot; :  &quot;mail-config&quot;,</div>
                    <div>    &quot;href &quot; : <a href="https://mailserver.example.com/config?user=paulej%40packetizer.com" target="_blank">&quot;https://mailserver.example.com/config?user=paulej%40packetizer.com&quot;</a></div>
                    <div>}</div>
                    <div> </div>
                    <div>Or something like that.  The mail client should
                      query that URI it is that one that should result
                      in a potential 401.  The JSON format that would
                      come back here would need to be something we
                      define.  It could be based on JRD, but would not
                      have to be.</div>
                    <div> </div>
                    <div>Otherwise, I think the flow looks right.</div>
                    <div> </div>
                    <div> </div>
                    <blockquote cite="http://575180B6.9010902@dmfs.org" type="cite">
                      <div><br />
                           b) Client asks for password at &quot;<a href="http://example.com" target="_blank">example.com</a>&quot;
                        and goes back to step 2 (this time with
                        authentication)<br />
                        <br />
                          -&gt; response 200 Ok<br />
                           c) client moves on to next step<br />
                        <br />
                        3) (optional) Client presents found services to
                        the user to let him select the services to set
                        up<br />
                        <br />
                        4) Client runs the setup handler for each
                        selected service<br />
                        <br />
                        <br />
                        I think in general that could work but it raises
                        two questions:<br />
                        <br />
                        1) How to make sure the user really understands
                        that he&#39;s authenticating at <a href="http://example.com" target="_blank">example.com</a> in step
                        2b? If the user tries to configure calendar sync
                        with &quot;<a href="http://acme-calendar.com" target="_blank">acme-calendar.com</a>&quot; where his login happens
                        to be <a href="mailto:user@example.com" target="_blank">mailto:user@example.com</a>
                        he might not be prepared to being asked for his
                        <a href="http://example.com" target="_blank">example.com</a> password. Maybe I&#39;m just paranoid or
                        overcautious, but I think that it might easily
                        happen that the users sends his
                        <a href="http://acme-calendar.com" target="_blank">acme-calendar.com</a> password to <a href="http://example.com" target="_blank">example.com</a> in
                        that case (since Basic authentication is still
                        the most common mechanism, the client basically
                        sends the password in plain text). </div>
                    </blockquote>
                    <div> </div>
                    <div>Yeah, that&#39;s a valid concern.  The only thing I
                      can suggest is that the Subject CN from the
                      certificate is presented to the user. 
                      Alternatively, there could be two passwords: one
                      that is the &quot;configuration password&quot; and one that
                      is the email password.  However, I don&#39;t think two
                      passwords will help us.  If I want to hack
                      somebody and can gain access to their WF config, I
                      can auto-config their email client to point to my
                      own IMAP server and just retrieve the password
                      that way.</div>
                    <div> </div>
                    <div>So, I think we have to rely on the certificate
                      presented to the mail client and the user will
                      have to know to trust it.  The mail provider can
                      tell the user &quot;when configuring email, ensure that
                      the configuration server is <a href="http://mailconfig.example.com" target="_blank">mailconfig.example.com</a>
                      and do not provide a password if that is not the
                      name of the configuration server indicated.&quot;</div>
                    <div> </div>
                    <div>If the mail config information is not protected
                      with a password, we probably would want the
                      customer to verify that the SMTP server
                      information is correct before the password is
                      provided.  These would be the steps users would
                      take if performing manual configuration, but the
                      software presents that information to the user
                      without the user having to enter it.</div>
                    <div> </div>
                    <div> </div>
                    <blockquote cite="http://575180B6.9010902@dmfs.org" type="cite">
                      <div><br />
                        2) How does the client know which credentials to
                        use to set up the individual services in step 4?
                        Should the client ask the user for the
                        credentials for each service or can it assume
                        that some of them share the same credentials? Is
                        that something an auto-configuration document
                        can help with?</div>
                    </blockquote>
                    <div> </div>
                    <div>It would be nice if there is a config indicator
                      that says &quot;SMTP server and IMAP server passwords
                      are the same&quot;, so the client does not have to ask.</div>
                    <div> </div>
                    <div>If we use a &quot;config password&quot; then we could
                      even have the server tell the client the password
                      for services, which would transparently allow
                      those to be different.  Alternatively, the client
                      will have to ask each about each one.</div>
                    <div> </div>
                    <div>For calendaring services, then yes: the client
                      would have to ask the user.  It could ask if it&#39;s
                      the same or different than the email password or
                      the config password.  For some services, the
                      authentication mechanisms will be entirely
                      different (like Google Calendar).  The mail client
                      will just have to know how to access the service. 
                      For that reason, I&#39;m a little hesitant to suggest
                      including calendaring service config along with
                      the email config data.  We could have each of
                      those services listed in the users&#39; WebFinger
                      document.  For example, I might have this entry in
                      my WF document:</div>
                    <div>{</div>
                    <div>    &quot;rel&quot; : &quot;calendar&quot;</div>
                    <div>    &quot;href&quot; : &quot;urn:whatever:google&quot;</div>
                    <div>}</div>
                    <div> </div>
                    <div>Note I did not provide a URL.  The reason is
                      that this is an entirely different service that
                      has an entirely different access method.  Maybe
                      the client can ask the user &quot;is <a href="mailto:paulej@packetizer.com" target="_blank">paulej@packetizer.com</a>
                      our user ID for your Google calendar?&quot;  In my
                      case, I don&#39;t think it is.  Certainly, it&#39;s not my
                      gmail ID.  And, I would not want to advertise that
                      to the world, necessarily.  Anyway, I think we
                      should limit the scope of what we try to do to
                      things that are standard OR we define a generic
                      URN that a client will just have to know how to
                      deal with.</div>
                    <div> </div>
                    <div> </div>
                    <blockquote cite="http://575180B6.9010902@dmfs.org" type="cite">
                      <div>Ideally the server
                        supports some kind of SSO mechanism like OpenID
                        Connect, so you don&#39;t need to enter your
                        password multiple times. But a working
                        auto-configuration is really the precondition
                        for this, because an OpenID Connect
                        implementations needs a way to discover the
                        OAuth2 scope tokens to request from the server
                        and auto-configuration is really the way to do
                        that, IMO. For this it would be helpful to have
                        some mechanism to request a broader scope from
                        the user (without allowing him to switch to a
                        different account), but that&#39;s a different topic
                        I guess.</div>
                    </blockquote>
                    <div> </div>
                    <div>I definitely like the idea of SSO.  But, I
                      struggle to see how we would use this in practice
                      with mail autoconfig since SMTP, IMAP, and POP
                      servers require a password, anyway.  If we use
                      that as a means to have those passwords provided
                      behind the scenes (as I indicated above), that
                      might be a good argument for using OpenID
                      Connect.  In that way, the ISP can also ensure
                      that passwords are REALLY complex and unknown even
                      to the user.  Not a bad practice, in that we can
                      view those passwords as complex tokens.</div>
                    <div> </div>
                    <div>Would that kind of use of OpenID Connect to
                      retrieve the password be workable?  (I&#39;ll admit I
                      don&#39;t have so much experience with OpenID
                      Connect.  I implemented OpenID 2.0, but that&#39;s not
                      ideal for what we&#39;d want to accomplish here.  I
                      don&#39;t have a good feel for how Connect might make
                      this better.)</div>
                    <div> </div>
                    <div>Paul</div>
                    <div> </div>
                  </div>
                  <br />
                  <fieldset></fieldset>
                  <br />
                  <pre>_______________________________________________
webfinger mailing list
<a href="mailto:webfinger@ietf.org" target="_blank">webfinger@ietf.org</a>
<a href="https://www.ietf.org/mailman/listinfo/webfinger" target="_blank">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
                </blockquote>
                <br />
                <br />
                <pre cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: <a href="tel:%2B49%20177%204427167" value="+491774427167" target="_blank">+49 177 4427167</a>
email: <a href="mailto:marten@dmfs.org" target="_blank">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
                <br />
                <fieldset></fieldset>
                <br />
                <pre>_______________________________________________
webfinger mailing list
<a href="mailto:webfinger@ietf.org" target="_blank">webfinger@ietf.org</a>
<a href="https://www.ietf.org/mailman/listinfo/webfinger" target="_blank">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
              </blockquote>
              <br />
            </blockquote>
            <br />
            <pre cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: <a href="tel:%2B49%20177%204427167" value="+491774427167" target="_blank">+49 177 4427167</a>
email: <a href="mailto:marten@dmfs.org" target="_blank">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
            <br />
            <fieldset></fieldset>
            <br />
            <pre>_______________________________________________
webfinger mailing list
<a href="mailto:webfinger@ietf.org" target="_blank">webfinger@ietf.org</a>
<a href="https://www.ietf.org/mailman/listinfo/webfinger" target="_blank">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
          </blockquote>
          <br />
          <pre cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: <a href="tel:%2B49%20177%204427167" value="+491774427167" target="_blank">+49 177 4427167</a>
email: <a href="mailto:marten@dmfs.org" target="_blank">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
        </blockquote>
      </div>
      <br />
      <fieldset></fieldset>
      <br />
      <pre>_______________________________________________
webfinger mailing list
<a href="mailto:webfinger@ietf.org" target="_blank">webfinger@ietf.org</a>
<a href="https://www.ietf.org/mailman/listinfo/webfinger" target="_blank">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
    </blockquote>
    <br />
    <pre cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: <a href="tel:%2B49%20177%204427167" value="+491774427167" target="_blank">+49 177 4427167</a>
email: <a href="mailto:marten@dmfs.org" target="_blank">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
  </blockquote></div>


</div></div></div><br />_______________________________________________<br />
webfinger mailing list<br />
<a href="mailto:webfinger@ietf.org">webfinger@ietf.org</a><br />
<a href="https://www.ietf.org/mailman/listinfo/webfinger" rel="noreferrer" target="_blank">https://www.ietf.org/mailman/listinfo/webfinger</a><br />
<br /></blockquote></div><br /><br clear="all" /><div><br /></div>-- <br /><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><a href="https://konklone.com" target="_blank">konklone.com</a> | <a href="https://twitter.com/konklone" target="_blank">@konklone</a><br /></div></div></div></div></div></div></div>
</div>
<p style="margin-top: 2.5em; margin-bottom: 1em; border-bottom: 1px solid #000"></p><pre class="k9mail"><hr /><br />webfinger mailing list<br />webfinger@ietf.org<br /><a href="https://www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a><br /></pre></body></html>
------4I82A019RMWI0J0NP25MATPBHCT36T--


From nobody Thu Jul 14 14:52:48 2016
Return-Path: <mmn@hethane.se>
X-Original-To: webfinger@ietfa.amsl.com
Delivered-To: webfinger@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F32A812D8B4 for <webfinger@ietfa.amsl.com>; Thu, 14 Jul 2016 14:52:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.188
X-Spam-Level: 
X-Spam-Status: No, score=-3.188 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-1.287, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gJ_eCytf7Vs5 for <webfinger@ietfa.amsl.com>; Thu, 14 Jul 2016 14:52:44 -0700 (PDT)
Received: from smtp.hethane.se (hethane.se [85.11.25.76]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BE00E12D8A9 for <webfinger@ietf.org>; Thu, 14 Jul 2016 14:52:43 -0700 (PDT)
To: Eric Mill <eric@konklone.com>
References: <em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki> <575197C1.3090102@dmfs.org> <39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com> <575492E1.2000805@dmfs.org> <57587369.20405@dmfs.org> <em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney> <5786C161.7070806@dmfs.org> <emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney> <CANBOYLWyuFcGnLE2arivxiuYgmTnNDHdDi5YpWXO6F4ruY1UdA@mail.gmail.com>
From: Mikael Nordfeldth <mmn@hethane.se>
Message-ID: <c017e113-edb9-781f-17ce-df8a7ef4623d@hethane.se>
Date: Thu, 14 Jul 2016 23:51:35 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.1.0
MIME-Version: 1.0
In-Reply-To: <CANBOYLWyuFcGnLE2arivxiuYgmTnNDHdDi5YpWXO6F4ruY1UdA@mail.gmail.com>
Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="j6lN7X15Pab1qorFOtot3nBfgHpXUJXuW"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webfinger/Q0Wd7DyrqBRI-9qZagXdF7vkjoo>
Cc: "webfinger@ietf.org" <webfinger@ietf.org>
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via WebFinger
X-BeenThere: webfinger@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Discussion of the Webfinger protocol proposal in the Applications Area <webfinger.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webfinger>, <mailto:webfinger-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webfinger/>
List-Post: <mailto:webfinger@ietf.org>
List-Help: <mailto:webfinger-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webfinger>, <mailto:webfinger-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 14 Jul 2016 21:52:47 -0000

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--j6lN7X15Pab1qorFOtot3nBfgHpXUJXuW
Content-Type: multipart/mixed; boundary="ASGXbVnKHWMeqQVrE3iDUO2SQiMhpbSqX"
From: Mikael Nordfeldth <mmn@hethane.se>
To: Eric Mill <eric@konklone.com>
Cc: "webfinger@ietf.org" <webfinger@ietf.org>
Message-ID: <c017e113-edb9-781f-17ce-df8a7ef4623d@hethane.se>
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via
 WebFinger
References: <em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki>
 <575197C1.3090102@dmfs.org> <39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com>
 <575492E1.2000805@dmfs.org> <57587369.20405@dmfs.org>
 <em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney> <5786C161.7070806@dmfs.org>
 <emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney>
 <CANBOYLWyuFcGnLE2arivxiuYgmTnNDHdDi5YpWXO6F4ruY1UdA@mail.gmail.com>
In-Reply-To: <CANBOYLWyuFcGnLE2arivxiuYgmTnNDHdDi5YpWXO6F4ruY1UdA@mail.gmail.com>

--ASGXbVnKHWMeqQVrE3iDUO2SQiMhpbSqX
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

On 2016-07-14 17:59, Eric Mill wrote:
> Is any of this relevant? Webfinger seems good and truly dead.

I beg to differ. WebFinger, RFC7033, is the primary discovery method in
GNU social and we're alive and kicking.

--=20
Mikael Nordfeldth
https://blog.mmn-o.se/
XMPP/mail: mmn@hethane.se
OpenPGP Fingerprint: AE68 9813 0B7C FCE3 B2FA  727B C7CE 635B B52E 9B31


--ASGXbVnKHWMeqQVrE3iDUO2SQiMhpbSqX--

--j6lN7X15Pab1qorFOtot3nBfgHpXUJXuW
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJXiAloAAoJEOlbeo6AYkMcU6wQAMK0N5/Q4JVyMPfkGYi2hjqT
MU7gIR/O912eVTWU+uJD5aASgd6AeDtP0Hxx7z0inkNk06k0+BzEl47DXO6M7lEP
WcY9AJA1FDP/pvdUq/PyfIrrkZme5uSJNvtClFS1W4Mxg+1rRvxNPMDfmMB1S+Hq
nYacYEfiAn4AgI//eTqudsR+mqXGf2ngOntcSXhnZf2/zGfoHU+f6EZltvO+JDnd
PwhrJhsHdWnsCO0RifRVHBXou3DJfuuhQJ7WWhTIdmxRrPMriuxjUyp//Sh6hGl9
6udl/MTaXeS96u4QX5rEhmMwXUn4fl7tYFab82DYPUse7mAE04LzOJs2tXLnK2P9
0D6LVjisY8yZCgrJP58BmS5fAS2Hk6H7gm8lL862iVTJZVp90F/+kzbYyr7psriL
mHGv2ihYyDAlEmsIhsgGpPyhYsIpLjhN9Km5CtaCCbGxfMeRgPtX8a03b0B5lnWv
Lbiy+vcAF9Iw2hjZpF7iec5Ss/P0uiLebeN80Vjf2i85sFEDW9R0fJWR5zSWYgiW
ZECvP09tjdRYX7yMouU0UnC2OAmBulvaOHtzjndSyM1bDPxlB7VYOTPoIIiMDflp
OSAQ21FItSwud3HrLa03B3r0JtOIAeSowOYBj9dq92GoBKhXX8ox62V8IeTnWVy4
ELWlsmoUCCbvQrqpbQTx
=R0lQ
-----END PGP SIGNATURE-----

--j6lN7X15Pab1qorFOtot3nBfgHpXUJXuW--


From nobody Thu Jul 14 15:09:06 2016
Return-Path: <marten@dmfs.org>
X-Original-To: webfinger@ietfa.amsl.com
Delivered-To: webfinger@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8252312D67E for <webfinger@ietfa.amsl.com>; Thu, 14 Jul 2016 15:09:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.249
X-Spam-Level: 
X-Spam-Status: No, score=-1.249 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_WEB=0.77] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=dmfs.org
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tVFQxySw1yDD for <webfinger@ietfa.amsl.com>; Thu, 14 Jul 2016 15:09:02 -0700 (PDT)
Received: from mailrelay6.public.one.com (mailrelay6.public.one.com [91.198.169.200]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5DAF212D663 for <webfinger@ietf.org>; Thu, 14 Jul 2016 15:09:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=dmfs.org; s=20140924; h=from:subject:date:message-id:to:mime-version:content-type:in-reply-to: references; bh=Cf6fKxpHj2iNxtrPMFV/jsbSJVw7q4S97jQA78oIkDI=; b=nDvg2uBNyPbI9ZE1Q0eysK0oDOg3QObtd5a6Bf3imnoP3Q7fjwVXSiaesPS00PA7tgv1C5MeYNzOA n1bK4WtDbh7CIH3l+90CqFJNO1Go5kMQKvwuG96pwX+mKDmR1qLCOVEGwR+fLn+NOVXSzrcZYCBca4 LbcKhvz6z8D1CflY=
X-HalOne-Cookie: 3b9d49238db273a36ab8a0f9a0879f255b0f2dcb
X-HalOne-ID: 8e711e2b-4a0f-11e6-9f37-b82a72d06996
Received: from smtp.dmfs.org (unknown [79.240.231.119]) by smtpfilter3.public.one.com (Halon Mail Gateway) with ESMTPSA; Thu, 14 Jul 2016 22:08:55 +0000 (UTC)
Received: from localhost.localdomain (213162068184.public.t-mobile.at [213.162.68.184]) by smtp.dmfs.org (Postfix) with ESMTPSA id 500B06A; Fri, 15 Jul 2016 00:08:54 +0200 (CEST)
Message-ID: <57880D75.5090109@dmfs.org>
Date: Fri, 15 Jul 2016 00:08:53 +0200
From: Marten Gajda <marten@dmfs.org>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: Paul E. Jones <paulej@packetizer.com>,  webfinger@ietf.org <webfinger@ietf.org>
References: <em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki> <575197C1.3090102@dmfs.org> <39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com> <575492E1.2000805@dmfs.org> <57587369.20405@dmfs.org> <em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney> <5786C161.7070806@dmfs.org> <emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney>
In-Reply-To: <emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney>
Content-Type: multipart/alternative; boundary="------------000509010708080409060603"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webfinger/m7IiNJ2PuOnrcpVuFe16KGXT_tk>
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via WebFinger
X-BeenThere: webfinger@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Discussion of the Webfinger protocol proposal in the Applications Area <webfinger.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webfinger>, <mailto:webfinger-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webfinger/>
List-Post: <mailto:webfinger@ietf.org>
List-Help: <mailto:webfinger-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webfinger>, <mailto:webfinger-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 14 Jul 2016 22:09:05 -0000

This is a multi-part message in MIME format.
--------------000509010708080409060603
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Hi Paul,

please see my comments below:

Am 14.07.2016 um 08:19 schrieb Paul E. Jones:
> Let's make sure the new draft is scoped to just mail configuration.
>  (If we want to go further with calendar, contacts, etc. then arguably
> those should be separate URLs.  My mail and calendar is not provided
> by the same provider, for example.)
If we only support mail configuration this will probably fail. I think
one of the strengths of this draft is that everything is in one place.
>
> Caching: HTTP allows one to dictate that how long cached data can
> live. I don't think we need to specify it further.  A client will pull
> the config when the user configures the client.  There's no reason to
> cache it beyond that point.  In the off chance it queries a second
> time, it's not a big deal.  It might get pulled from web cache or
> perhaps go back to the server.  It really does not matter, since this
> should not be queried over and over.  Only in the event that a config
> change is made, the client might need to re-query the config data.
>  I'm not sure if the client should automate that process or prompt the
> user "would you like me to re-validate the configuration settings?"
> Personally, I like the latter.
Sounds reasonable. I'm not sure why the current draft has this ttl
field. I'll think about that, but we probably can ditch that.
>
> Certificate pinning: Why? One fetches the mail config file.  The
> client will authenticate the certificate. Is this just to catch the
> very rare case where somebody hacks DNS and gets a fake certificate?
>  That's really a broader Internet infrastructure issue that I think we
> should solve generically.  (For example, use of notaries, DNSSEC/DANE,
> etc. Personally, I use DNSSEC/DANE, but somewhere close to zero people
> make use of that data.)
Yes, that's to prevent MITM attacks. While I believe that certificate
pinning is a good thing (if done right), I'm not sure if this document
is a good place for this. I guess there are better ways to bootstrap
certificate pinning and we probably should leave this out for now.
>
> Certificate Auth: I'm not sure what the problem is here, unless people
> want to use enterprise-issued certificates (i.e., those that are not
> from a public CA).  If that is the case, I would not want my mail
> client to insert those into my trusted certificate store.  So, would
> those be one-time uses?  Not very useful.  I'd say the IT department
> needs to install whatever root certs are needed.  A client should
> authenticate the certificates it sees, but we don't need more words
> about it other than to say the TLS connection must be authenticated.
No, this is about client authentication, i.e. the client has to provide
a client certificate signed by some specific authority. This is not
widely used and probably more for corporate or personal use cases, but
we have a significant number of users of this security feature.
At least in Java it's a real pain to distinguish a client certificate
request from any other SSLException. So it would be helpful to know in
advance if a specific client certificate is required or not.
>
> Document structure:  I think keeping this simple is really best.  I
> don't think we need multiple mail providers. If the email address is
> user@example.com, <mailto:user@example.com,%20>then I think it's
> reasonable to assume example.com is the provider.  Yes, a user could
> go enter WebFinger information for some other provider, but the
> average person will not want to do that.  That's having the user
> configure the server so it can configure the client.  Not much gained
> there.  I would have something that's no more complex than something
> like this:
>
I fully agree that we should keep it as simple as possible. However, one
of the keys to success is that we support the services and use cases
that are not covered by the existing mechanisms. That's why I believe
that the document should have a generic structure that works with pretty
much every service out there. It shouldn't be designed around email.
This is one of the reasons for me to ditch the host/port/transport
notation and just use a single URI instead. I'm not aware of any service
that can't be addresses with a URI.

Another goal should be to revert the service discovery process to some
degree. Instead of having the client to probe the provider for each
service that might be supported, the current spec reverts that and
returns a list of everything that's supported. The local "account setup
agent" then can probe the local device software for client modules or
applications that might support a specific service. Ideally this would
be supported on OS level. So you run a generic account configuration on
OS level, the OS pulls the service configuration document and calls the
installed handlers for each supported service. It there is no client for
a specific service the OS could make suggestions like "Your provider
also supports <Some service>. Search the App Store for a suitable client
app now".

That's why I believe that we should put all services into a single
document, instead of using service specific rel-types that need to be
probed by the client.

If, like in your case, calendars and email are not hosted at the same
provider, the webfinger response for your account should just contain
two provider entries, each pointing to a document that lists all the
services provided by this provider.

Cheers,

Marten



>
> Paul
>
> ------ Original Message ------
> From: "Marten Gajda" <marten@dmfs.org <mailto:marten@dmfs.org>>
> To: "webfinger@ietf.org" <webfinger@ietf.org <mailto:webfinger@ietf.org>>
> Sent: 7/13/2016 6:32:01 PM
> Subject: Re: [webfinger] [apps-discuss] Mail client configuration via
> WebFinger
>
>> Hi Paul,
>>
>> the "current draft" is still the one at
>> https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03
>> and the issues at GitHub are discussion items for the upcoming draft.
>> I wanted to clarify a few points before I start to work on the draft.
>> If you have anything to add to these points or if you have any other
>> concerns, please let me know, so we can address them.
>> Unless there is some more interest in the certificate stuff, I'm not
>> going to add this to the draft. We still can add that later on if it
>> turns out to be useful.
>>
>> Cheers,
>>
>> Marten
>>
>>
>> Am 11.07.2016 um 23:31 schrieb Paul E. Jones:
>>> Marten,
>>>
>>> Sorry to just be coming back to this after a whole month passed.
>>>
>>> What current draft?  Did you write one that I missed?  Or are these
>>> requirements for the draft you would like to see?
>>>
>>> Paul
>>>
>>> ------ Original Message ------
>>> From: "Marten Gajda" <marten@dmfs.org <mailto:marten@dmfs.org>>
>>> To: "webfinger@ietf.org" <webfinger@ietf.org
>>> <mailto:webfinger@ietf.org>>
>>> Sent: 6/8/2016 3:35:05 PM
>>> Subject: Re: [webfinger] [apps-discuss] Mail client configuration
>>> via WebFinger
>>>
>>>> All,
>>>>
>>>> I've created a GitHub repository to track open issues with the
>>>> current draft, see https://github.com/CalConnect/AUTODISCOVERY/issues
>>>> You're welcome to contribute to the discussion, either by creating
>>>> a new issue or by commenting on an existing one.
>>>>
>>>> Thanks,
>>>>
>>>> Marten
>>>>
>>>> Am 05.06.2016 um 23:00 schrieb Marten Gajda:
>>>>> I think OpenID Connect already covers the discovery of everything
>>>>> you need to do OAuth2. That involves Webfinger, but there is no
>>>>> need to protect this request, because it doesn't contain personal
>>>>> information.
>>>>> So we don't need to reinvent the OAuth2 bootstrapping sequence.
>>>>> The only minor issue I see is that you may have to ask the user
>>>>> twice to grant access. Once to authorize the client to access the
>>>>> configuration document and another time to authorize the client to
>>>>> access the individual services. The second step is necessary,
>>>>> because the scope tokens of these services are not known when the
>>>>> first authorization request is presented to the user. The problem
>>>>> with that is, there doesn't seem to be a mechanism to broaden
>>>>> scope, without allowing the user to switch to a different account.
>>>>> To get access to the individual services, the client needs to
>>>>> start another authorization code grant. But the user is always
>>>>> free to log out and log in with a different account before
>>>>> granting access.
>>>>>
>>>>> Marten
>>>>>
>>>>> Am 03.06.2016 um 20:13 schrieb George Fletcher:
>>>>>> Did a quick scan of the draft document. Given that more and more
>>>>>> systems are trying to remove the need for passwords, it seems
>>>>>> like the final solution needs to support 2FA and biometric
>>>>>> mechanisms for "HTTP authentication". I definitely would not want
>>>>>> the webfinger instance releasing my config data without my
>>>>>> "authentication". I suppose OAuth2 could be used to protect the
>>>>>> webfinger APIs though there is a bit of a chicken-and-egg here:)
>>>>>>
>>>>>> I kind of like the suggestion around returning a 401 with data in
>>>>>> the WWW-Authenticate header on where to get a token to use with
>>>>>> the API. This would allow the client to start and OAuth2 flow
>>>>>> with the Authorization Server specified and that would give the
>>>>>> user a clear indication of what password/credentials are being
>>>>>> requested. Once the client gets the token, it uses it with the
>>>>>> webfinger call and now the service-configuration data is returned
>>>>>> because the token is the authorization for the specified id.
>>>>>>
>>>>>> Thanks,
>>>>>> George
>>>>>>
>>>>>> On 6/3/16 10:44 AM, Marten Gajda wrote:
>>>>>>> Note that the idea behind
>>>>>>> https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03
>>>>>>> is to put the service configuration for all services of a
>>>>>>> provider into a single document.
>>>>>>>
>>>>>>> So you would receive something like this:
>>>>>>>
>>>>>>> {
>>>>>>>     "rel " :  "service-configuration",
>>>>>>>     "href " : "https://example.com/service-configuration"
>>>>>>> }
>>>>>>>
>>>>>>> If a user uses the same account identifier at another provider
>>>>>>> the Webfinger request could return their configuration too
>>>>>>> (given there is some mechanism to add it and the provider
>>>>>>> actually supports that).
>>>>>>>
>>>>>>> {
>>>>>>>     "rel " :  "service-configuration",
>>>>>>>     "href " : "https://example.com/service-configuration"
>>>>>>> },
>>>>>>> {
>>>>>>>     "rel " :  "service-configuration",
>>>>>>>     "href " : "https://acme-calendar.com/service-configuration"
>>>>>>> }
>>>>>>>
>>>>>>> Without that it would be more difficult to setup your account at
>>>>>>> acme-calendar.com with your login "user@example.com".
>>>>>>> acme-calendar.com would have to issue some kind of
>>>>>>> user-identifier like user@acme-calendar.com for
>>>>>>> auto-configuration purposes, even though you don't use it for
>>>>>>> authentication (because you use user@exampe.com for
>>>>>>> authentication). I think that's the idea behind the `acct:` URI
>>>>>>> scheme, but I don't think that you can explain to users why they
>>>>>>> need another user identifier and when to use one or the other.
>>>>>>> But that also raises the privacy concerns I mentioned earlier.
>>>>>>> If the request is not authenticated, everyone could see that you
>>>>>>> have an account at acme-calendar.com.
>>>>>>>
>>>>>>> Regarding SSO: There is an RFC that extends SASL based
>>>>>>> authentication to support the token authentication mechanisms as
>>>>>>> used by OAuth1 and OAuth2, see https://tools.ietf.org/html/rfc7628
>>>>>>> So SSO already works with IMAP, POP3 and SMTP.
>>>>>>>
>>>>>>> Cheers
>>>>>>>
>>>>>>> Marten
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Am 03.06.2016 um 15:40 schrieb Paul E. Jones:
>>>>>>>> Marten,
>>>>>>>>  
>>>>>>>>  
>>>>>>>>> So how would the UI work?
>>>>>>>>>
>>>>>>>>> 1) User enters user identifier, most likely an email address,
>>>>>>>>> like mailto:user@example.com and hits "next"
>>>>>>>>>
>>>>>>>>> 2) Client sends a Webfinger request to
>>>>>>>>> https://exampe.com/.well-known/webfinger?... to see if there
>>>>>>>>> is a configuration document
>>>>>>>>>
>>>>>>>>>   -> response 404 Not Found
>>>>>>>>>    a) Client falls back to "manual setup" or another
>>>>>>>>> auto-configuration mechanism
>>>>>>>>>
>>>>>>>>>   -> response 401 Unauthorized
>>>>>>>>  
>>>>>>>> One should not get 401 querying the WebFinger information for
>>>>>>>> the user.  What should happen is that the server should return
>>>>>>>> a JSON object that contains a link relation that might look
>>>>>>>> like this:
>>>>>>>> {
>>>>>>>>     "rel " :  "mail-config",
>>>>>>>>     "href " :
>>>>>>>> "https://mailserver.example.com/config?user=paulej%40packetizer.com"
>>>>>>>> }
>>>>>>>>  
>>>>>>>> Or something like that.  The mail client should query that URI
>>>>>>>> it is that one that should result in a potential 401.  The JSON
>>>>>>>> format that would come back here would need to be something we
>>>>>>>> define.  It could be based on JRD, but would not have to be.
>>>>>>>>  
>>>>>>>> Otherwise, I think the flow looks right.
>>>>>>>>  
>>>>>>>>  
>>>>>>>>>
>>>>>>>>>    b) Client asks for password at "example.com" and goes back
>>>>>>>>> to step 2 (this time with authentication)
>>>>>>>>>
>>>>>>>>>   -> response 200 Ok
>>>>>>>>>    c) client moves on to next step
>>>>>>>>>
>>>>>>>>> 3) (optional) Client presents found services to the user to
>>>>>>>>> let him select the services to set up
>>>>>>>>>
>>>>>>>>> 4) Client runs the setup handler for each selected service
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I think in general that could work but it raises two questions:
>>>>>>>>>
>>>>>>>>> 1) How to make sure the user really understands that he's
>>>>>>>>> authenticating at example.com in step 2b? If the user tries to
>>>>>>>>> configure calendar sync with "acme-calendar.com" where his
>>>>>>>>> login happens to be mailto:user@example.com he might not be
>>>>>>>>> prepared to being asked for his example.com password. Maybe
>>>>>>>>> I'm just paranoid or overcautious, but I think that it might
>>>>>>>>> easily happen that the users sends his acme-calendar.com
>>>>>>>>> password to example.com in that case (since Basic
>>>>>>>>> authentication is still the most common mechanism, the client
>>>>>>>>> basically sends the password in plain text).
>>>>>>>>  
>>>>>>>> Yeah, that's a valid concern.  The only thing I can suggest is
>>>>>>>> that the Subject CN from the certificate is presented to the
>>>>>>>> user.  Alternatively, there could be two passwords: one that is
>>>>>>>> the "configuration password" and one that is the email
>>>>>>>> password.  However, I don't think two passwords will help us. 
>>>>>>>> If I want to hack somebody and can gain access to their WF
>>>>>>>> config, I can auto-config their email client to point to my own
>>>>>>>> IMAP server and just retrieve the password that way.
>>>>>>>>  
>>>>>>>> So, I think we have to rely on the certificate presented to the
>>>>>>>> mail client and the user will have to know to trust it.  The
>>>>>>>> mail provider can tell the user "when configuring email, ensure
>>>>>>>> that the configuration server is mailconfig.example.com and do
>>>>>>>> not provide a password if that is not the name of the
>>>>>>>> configuration server indicated."
>>>>>>>>  
>>>>>>>> If the mail config information is not protected with a
>>>>>>>> password, we probably would want the customer to verify that
>>>>>>>> the SMTP server information is correct before the password is
>>>>>>>> provided.  These would be the steps users would take if
>>>>>>>> performing manual configuration, but the software presents that
>>>>>>>> information to the user without the user having to enter it.
>>>>>>>>  
>>>>>>>>  
>>>>>>>>>
>>>>>>>>> 2) How does the client know which credentials to use to set up
>>>>>>>>> the individual services in step 4? Should the client ask the
>>>>>>>>> user for the credentials for each service or can it assume
>>>>>>>>> that some of them share the same credentials? Is that
>>>>>>>>> something an auto-configuration document can help with?
>>>>>>>>  
>>>>>>>> It would be nice if there is a config indicator that says "SMTP
>>>>>>>> server and IMAP server passwords are the same", so the client
>>>>>>>> does not have to ask.
>>>>>>>>  
>>>>>>>> If we use a "config password" then we could even have the
>>>>>>>> server tell the client the password for services, which would
>>>>>>>> transparently allow those to be different.  Alternatively, the
>>>>>>>> client will have to ask each about each one.
>>>>>>>>  
>>>>>>>> For calendaring services, then yes: the client would have to
>>>>>>>> ask the user.  It could ask if it's the same or different than
>>>>>>>> the email password or the config password.  For some services,
>>>>>>>> the authentication mechanisms will be entirely different (like
>>>>>>>> Google Calendar).  The mail client will just have to know how
>>>>>>>> to access the service.  For that reason, I'm a little hesitant
>>>>>>>> to suggest including calendaring service config along with the
>>>>>>>> email config data.  We could have each of those services listed
>>>>>>>> in the users' WebFinger document.  For example, I might have
>>>>>>>> this entry in my WF document:
>>>>>>>> {
>>>>>>>>     "rel" : "calendar"
>>>>>>>>     "href" : "urn:whatever:google"
>>>>>>>> }
>>>>>>>>  
>>>>>>>> Note I did not provide a URL.  The reason is that this is an
>>>>>>>> entirely different service that has an entirely different
>>>>>>>> access method.  Maybe the client can ask the user "is
>>>>>>>> paulej@packetizer.com our user ID for your Google calendar?" 
>>>>>>>> In my case, I don't think it is.  Certainly, it's not my gmail
>>>>>>>> ID.  And, I would not want to advertise that to the world,
>>>>>>>> necessarily.  Anyway, I think we should limit the scope of what
>>>>>>>> we try to do to things that are standard OR we define a generic
>>>>>>>> URN that a client will just have to know how to deal with.
>>>>>>>>  
>>>>>>>>  
>>>>>>>>> Ideally the server supports some kind of SSO mechanism like
>>>>>>>>> OpenID Connect, so you don't need to enter your password
>>>>>>>>> multiple times. But a working auto-configuration is really the
>>>>>>>>> precondition for this, because an OpenID Connect
>>>>>>>>> implementations needs a way to discover the OAuth2 scope
>>>>>>>>> tokens to request from the server and auto-configuration is
>>>>>>>>> really the way to do that, IMO. For this it would be helpful
>>>>>>>>> to have some mechanism to request a broader scope from the
>>>>>>>>> user (without allowing him to switch to a different account),
>>>>>>>>> but that's a different topic I guess.
>>>>>>>>  
>>>>>>>> I definitely like the idea of SSO.  But, I struggle to see how
>>>>>>>> we would use this in practice with mail autoconfig since SMTP,
>>>>>>>> IMAP, and POP servers require a password, anyway.  If we use
>>>>>>>> that as a means to have those passwords provided behind the
>>>>>>>> scenes (as I indicated above), that might be a good argument
>>>>>>>> for using OpenID Connect.  In that way, the ISP can also ensure
>>>>>>>> that passwords are REALLY complex and unknown even to the
>>>>>>>> user.  Not a bad practice, in that we can view those passwords
>>>>>>>> as complex tokens.
>>>>>>>>  
>>>>>>>> Would that kind of use of OpenID Connect to retrieve the
>>>>>>>> password be workable?  (I'll admit I don't have so much
>>>>>>>> experience with OpenID Connect.  I implemented OpenID 2.0, but
>>>>>>>> that's not ideal for what we'd want to accomplish here.  I
>>>>>>>> don't have a good feel for how Connect might make this better.)
>>>>>>>>  
>>>>>>>> Paul
>>>>>>>>  
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> webfinger mailing list
>>>>>>>> webfinger@ietf.org
>>>>>>>> https://www.ietf.org/mailman/listinfo/webfinger
>>>>>>>
>>>>>>>
>>>>>>> -- 
>>>>>>> Marten Gajda
>>>>>>> CEO
>>>>>>>
>>>>>>> dmfs GmbH
>>>>>>> Schandauer Straße 34
>>>>>>> 01309 Dresden
>>>>>>> GERMANY
>>>>>>>
>>>>>>> phone: +49 177 4427167
>>>>>>> email: marten@dmfs.org
>>>>>>>
>>>>>>> Managing Director: Marten Gajda
>>>>>>> Registered address: Dresden
>>>>>>> Registered No.: AG Dresden HRB 34881
>>>>>>> VAT Reg. No.: DE303248743
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> webfinger mailing list
>>>>>>> webfinger@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/webfinger
>>>>>>
>>>>>
>>>>> -- 
>>>>> Marten Gajda
>>>>> CEO
>>>>>
>>>>> dmfs GmbH
>>>>> Schandauer Straße 34
>>>>> 01309 Dresden
>>>>> GERMANY
>>>>>
>>>>> phone: +49 177 4427167
>>>>> email: marten@dmfs.org
>>>>>
>>>>> Managing Director: Marten Gajda
>>>>> Registered address: Dresden
>>>>> Registered No.: AG Dresden HRB 34881
>>>>> VAT Reg. No.: DE303248743
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> webfinger mailing list
>>>>> webfinger@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/webfinger
>>>>
>>>> -- 
>>>> Marten Gajda
>>>> CEO
>>>>
>>>> dmfs GmbH
>>>> Schandauer Straße 34
>>>> 01309 Dresden
>>>> GERMANY
>>>>
>>>> phone: +49 177 4427167
>>>> email: marten@dmfs.org
>>>>
>>>> Managing Director: Marten Gajda
>>>> Registered address: Dresden
>>>> Registered No.: AG Dresden HRB 34881
>>>> VAT Reg. No.: DE303248743
>>>
>>>
>>> _______________________________________________
>>> webfinger mailing list
>>> webfinger@ietf.org
>>> https://www.ietf.org/mailman/listinfo/webfinger
>>
>> -- 
>> Marten Gajda
>> CEO
>>
>> dmfs GmbH
>> Schandauer Straße 34
>> 01309 Dresden
>> GERMANY
>>
>> phone: +49 177 4427167
>> email: marten@dmfs.org
>>
>> Managing Director: Marten Gajda
>> Registered address: Dresden
>> Registered No.: AG Dresden HRB 34881
>> VAT Reg. No.: DE303248743

-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: marten@dmfs.org

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743


--------------000509010708080409060603
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Paul,<br>
    <br>
    please see my comments below:<br>
    <br>
    <div class="moz-cite-prefix">Am 14.07.2016 um 08:19 schrieb Paul E.
      Jones:<br>
    </div>
    <blockquote cite="mid:emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney"
      type="cite">
      <style>blockquote.cite
{margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right: 0px; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204);}
blockquote.cite2
{margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right: 0px; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); margin-top: 3px; padding-top: 0px;}
a img
{border: 0px;}
body
{font-family: Calibri; font-size: 11pt;}</style>Let's make sure the new
      draft is scoped to just mail configuration.  (If we want to go
      further with calendar, contacts, etc. then arguably those should
      be separate URLs.  My mail and calendar is not provided by the
      same provider, for example.)</blockquote>
    If we only support mail configuration this will probably fail. I
    think one of the strengths of this draft is that everything is in
    one place. <br>
    <blockquote cite="mid:emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney"
      type="cite">
      <div><br>
      </div>
      <div>Caching: HTTP allows one to dictate that how long cached data
        can live. I don't think we need to specify it further.  A client
        will pull the config when the user configures the client.
         There's no reason to cache it beyond that point.  In the off
        chance it queries a second time, it's not a big deal.  It might
        get pulled from web cache or perhaps go back to the server.  It
        really does not matter, since this should not be queried over
        and over.  Only in the event that a config change is made, the
        client might need to re-query the config data.  I'm not sure if
        the client should automate that process or prompt the user
        "would you like me to re-validate the configuration settings?"
        Personally, I like the latter.</div>
    </blockquote>
    Sounds reasonable. I'm not sure why the current draft has this ttl
    field. I'll think about that, but we probably can ditch that. <br>
    <blockquote cite="mid:emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney"
      type="cite">
      <div><br>
      </div>
      <div>Certificate pinning: Why? One fetches the mail config file.
         The client will authenticate the certificate. Is this just to
        catch the very rare case where somebody hacks DNS and gets a
        fake certificate?  That's really a broader Internet
        infrastructure issue that I think we should solve generically.
         (For example, use of notaries, DNSSEC/DANE, etc. Personally, I
        use DNSSEC/DANE, but somewhere close to zero people make use of
        that data.)</div>
    </blockquote>
    Yes, that's to prevent MITM attacks. While I believe that
    certificate pinning is a good thing (if done right), I'm not sure if
    this document is a good place for this. I guess there are better
    ways to bootstrap certificate pinning and we probably should leave
    this out for now.<br>
    <blockquote cite="mid:emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney"
      type="cite">
      <div><br>
      </div>
      <div>Certificate Auth: I'm not sure what the problem is here,
        unless people want to use enterprise-issued certificates (i.e.,
        those that are not from a public CA).  If that is the case, I
        would not want my mail client to insert those into my trusted
        certificate store.  So, would those be one-time uses?  Not very
        useful.  I'd say the IT department needs to install whatever
        root certs are needed.  A client should authenticate the
        certificates it sees, but we don't need more words about it
        other than to say the TLS connection must be authenticated.</div>
    </blockquote>
    No, this is about client authentication, i.e. the client has to
    provide a client certificate signed by some specific authority. This
    is not widely used and probably more for corporate or personal use
    cases, but we have a significant number of users of this security
    feature.<br>
    At least in Java it's a real pain to distinguish a client
    certificate request from any other SSLException. So it would be
    helpful to know in advance if a specific client certificate is
    required or not.<br>
    <blockquote cite="mid:emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney"
      type="cite">
      <div><br>
      </div>
      <div>Document structure:  I think keeping this simple is really
        best.  I don't think we need multiple mail providers. If the
        email address is <a moz-do-not-send="true"
          href="mailto:user@example.com,%20">user@example.com, </a>then
        I think it's reasonable to assume example.com is the provider.
         Yes, a user could go enter WebFinger information for some other
        provider, but the average person will not want to do that.
         That's having the user configure the server so it can configure
        the client.  Not much gained there.  I would have something
        that's no more complex than something like this:</div>
      <br>
    </blockquote>
    I fully agree that we should keep it as simple as possible. However,
    one of the keys to success is that we support the services and use
    cases that are not covered by the existing mechanisms. That's why I
    believe that the document should have a generic structure that works
    with pretty much every service out there. It shouldn't be designed
    around email. This is one of the reasons for me to ditch the
    host/port/transport notation and just use a single URI instead. I'm
    not aware of any service that can't be addresses with a URI.<br>
    <br>
    Another goal should be to revert the service discovery process to
    some degree. Instead of having the client to probe the provider for
    each service that might be supported, the current spec reverts that
    and returns a list of everything that's supported. The local
    "account setup agent" then can probe the local device software for
    client modules or applications that might support a specific
    service. Ideally this would be supported on OS level. So you run a
    generic account configuration on OS level, the OS pulls the service
    configuration document and calls the installed handlers for each
    supported service. It there is no client for a specific service the
    OS could make suggestions like "Your provider also supports &lt;Some
    service&gt;. Search the App Store for a suitable client app now".<br>
    <br>
    That's why I believe that we should put all services into a single
    document, instead of using service specific rel-types that need to
    be probed by the client.<br>
    <br>
    If, like in your case, calendars and email are not hosted at the
    same provider, the webfinger response for your account should just
    contain two provider entries, each pointing to a document that lists
    all the services provided by this provider.<br>
    <br>
    Cheers,<br>
    <br>
    Marten<br>
    <br>
    <br>
    <br>
    <blockquote cite="mid:emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney"
      type="cite">
      <div><br>
      </div>
      <div>Paul</div>
      <div><br>
      </div>
      <div>------ Original Message ------</div>
      <div>From: "Marten Gajda" &lt;<a moz-do-not-send="true"
          href="mailto:marten@dmfs.org">marten@dmfs.org</a>&gt;</div>
      <div>To: <a class="moz-txt-link-rfc2396E" href="mailto:webfinger@ietf.org">"webfinger@ietf.org"</a> &lt;<a moz-do-not-send="true"
          href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>&gt;</div>
      <div>Sent: 7/13/2016 6:32:01 PM</div>
      <div>Subject: Re: [webfinger] [apps-discuss] Mail client
        configuration via WebFinger</div>
      <div><br>
      </div>
      <div id="x417b0e5e1e464b9" style=" color: #000000">
        <blockquote cite="5786C161.7070806@dmfs.org" type="cite"
          class="cite2"> Hi Paul,<br>
          <br>
          the "current draft" is still the one at <a
            moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03"
            style="">https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03</a>
          and the issues at GitHub are discussion items for the upcoming
          draft.<br>
          I wanted to clarify a few points before I start to work on the
          draft. If you have anything to add to these points or if you
          have any other concerns, please let me know, so we can address
          them.<br>
          Unless there is some more interest in the certificate stuff,
          I'm not going to add this to the draft. We still can add that
          later on if it turns out to be useful.<br>
          <br>
          Cheers,<br>
          <br>
          Marten<br>
          <br>
          <br>
          <div class="moz-cite-prefix">Am 11.07.2016 um 23:31 schrieb
            Paul E. Jones:<br>
          </div>
          <blockquote
            cite="mid:em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney"
            type="cite" class="cite">
            <style>#x417b0e5e1e464b9 blockquote.cite{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left-width:1px;
	border-left-style:solid;
	border-left-color:#CCC;
}
#x417b0e5e1e464b9 blockquote.cite2{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left-width:1px;
	border-left-style:solid;
	border-left-color:#CCC;
	margin-top:3px;
	padding-top:0px;
}
#x417b0e5e1e464b9 a img{
	border:0px;
}
#x417b0e5e1e464b9{
	font-family:Calibri;
	font-size:11pt;
}</style>
            <div>Marten,</div>
            <div><br>
            </div>
            <div>Sorry to just be coming back to this after a whole
              month passed.</div>
            <div><br>
            </div>
            <div>What current draft?  Did you write one that I missed?
               Or are these requirements for the draft you would like to
              see?</div>
            <div><br>
            </div>
            <div>Paul</div>
            <div><br>
            </div>
            <div>------ Original Message ------</div>
            <div>From: "Marten Gajda" &lt;<a moz-do-not-send="true"
                href="mailto:marten@dmfs.org">marten@dmfs.org</a>&gt;</div>
            <div>To: <a moz-do-not-send="true"
                class="moz-txt-link-rfc2396E"
                href="mailto:webfinger@ietf.org">"webfinger@ietf.org"</a>
              &lt;<a moz-do-not-send="true"
                href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>&gt;</div>
            <div>Sent: 6/8/2016 3:35:05 PM</div>
            <div>Subject: Re: [webfinger] [apps-discuss] Mail client
              configuration via WebFinger</div>
            <div><br>
            </div>
            <div id="x14ca4e8a6f9d44b" style=" color: #000000">
              <blockquote cite="57587369.20405@dmfs.org" type="cite"
                class="cite2"> All,<br>
                <br>
                I've created a GitHub repository to track open issues
                with the current draft, see <a moz-do-not-send="true"
                  class="moz-txt-link-freetext"
                  href="https://github.com/CalConnect/AUTODISCOVERY/issues">https://github.com/CalConnect/AUTODISCOVERY/issues</a><br>
                You're welcome to contribute to the discussion, either
                by creating a new issue or by commenting on an existing
                one.<br>
                <br>
                Thanks,<br>
                <br>
                Marten<br>
                <br>
                <div class="moz-cite-prefix">Am 05.06.2016 um 23:00
                  schrieb Marten Gajda:<br>
                </div>
                <blockquote cite="mid:575492E1.2000805@dmfs.org"
                  type="cite" class="cite"> I think OpenID Connect
                  already covers the discovery of everything you need to
                  do OAuth2. That involves Webfinger, but there is no
                  need to protect this request, because it doesn't
                  contain personal information.<br>
                  So we don't need to reinvent the OAuth2 bootstrapping
                  sequence.<br>
                  The only minor issue I see is that you may have to ask
                  the user twice to grant access. Once to authorize the
                  client to access the configuration document and
                  another time to authorize the client to access the
                  individual services. The second step is necessary,
                  because the scope tokens of these services are not
                  known when the first authorization request is
                  presented to the user. The problem with that is, there
                  doesn't seem to be a mechanism to broaden scope,
                  without allowing the user to switch to a different
                  account. To get access to the individual services, the
                  client needs to start another authorization code
                  grant. But the user is always free to log out and log
                  in with a different account before granting access.<br>
                  <br>
                  Marten<br>
                  <br>
                  <div class="moz-cite-prefix">Am 03.06.2016 um 20:13
                    schrieb George Fletcher:<br>
                  </div>
                  <blockquote
                    cite="mid:39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com"
                    type="cite" class="cite"> Did a quick scan of the
                    draft document. Given that more and more systems are
                    trying to remove the need for passwords, it seems
                    like the final solution needs to support 2FA and
                    biometric mechanisms for "HTTP authentication". I
                    definitely would not want the webfinger instance
                    releasing my config data without my
                    "authentication". I suppose OAuth2 could be used to
                    protect the webfinger APIs though there is a bit of
                    a chicken-and-egg here:)<br>
                    <br>
                    I kind of like the suggestion around returning a 401
                    with data in the WWW-Authenticate header on where to
                    get a token to use with the API. This would allow
                    the client to start and OAuth2 flow with the
                    Authorization Server specified and that would give
                    the user a clear indication of what
                    password/credentials are being requested. Once the
                    client gets the token, it uses it with the webfinger
                    call and now the service-configuration data is
                    returned because the token is the authorization for
                    the specified id.<br>
                    <br>
                    Thanks,<br>
                    George<br>
                    <br>
                    <div class="moz-cite-prefix">On 6/3/16 10:44 AM,
                      Marten Gajda wrote:<br>
                    </div>
                    <blockquote cite="mid:575197C1.3090102@dmfs.org"
                      type="cite" class="cite">
                      <div class="moz-cite-prefix">Note that the idea
                        behind <a moz-do-not-send="true"
                          class="moz-txt-link-freetext"
href="https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03">https://tools.ietf.org/html/draft-daboo-aggregated-service-discovery-03</a>
                        is to put the service configuration for all
                        services of a provider into a single document.<br>
                        <br>
                        So you would receive something like this:<br>
                        <br>
                        <div>{</div>
                        <div>    "rel " :  "service-configuration",</div>
                        <div>    "href " : <a moz-do-not-send="true"
                            class="moz-txt-link-rfc2396E"
                            href="https://example.com/service-configuration">"https://example.com/service-configuration"</a></div>
                        <div>}</div>
                        <br>
                        If a user uses the same account identifier at
                        another provider the Webfinger request could
                        return their configuration too (given there is
                        some mechanism to add it and the provider
                        actually supports that).<br>
                        <div><br>
                          {</div>
                        <div>    "rel " :  "service-configuration",</div>
                        <div>    "href " : <a moz-do-not-send="true"
                            class="moz-txt-link-rfc2396E"
                            href="https://example.com/service-configuration">"https://example.com/service-configuration"</a></div>
                        <div>},<br>
                          {
                          <div>    "rel " :  "service-configuration",</div>
                          <div>    "href " : <a moz-do-not-send="true"
                              class="moz-txt-link-rfc2396E"
                              href="https://acme-calendar.com/service-configuration">"https://acme-calendar.com/service-configuration"</a></div>
                          <div>}</div>
                          <br>
                          Without that it would be more difficult to
                          setup your account at acme-calendar.com with
                          your login <a moz-do-not-send="true"
                            class="moz-txt-link-rfc2396E"
                            href="mailto:user@example.com">"user@example.com"</a>.
                          acme-calendar.com would have to issue some
                          kind of user-identifier like <a
                            moz-do-not-send="true"
                            class="moz-txt-link-abbreviated"
                            href="mailto:user@acme-calendar.com">user@acme-calendar.com</a>
                          for auto-configuration purposes, even though
                          you don't use it for authentication (because
                          you use <a moz-do-not-send="true"
                            class="moz-txt-link-abbreviated"
                            href="mailto:user@exampe.com">user@exampe.com</a>
                          for authentication). I think that's the idea
                          behind the `acct:` URI scheme, but I don't
                          think that you can explain to users why they
                          need another user identifier and when to use
                          one or the other.<br>
                          But that also raises the privacy concerns I
                          mentioned earlier. If the request is not
                          authenticated, everyone could see that you
                          have an account at acme-calendar.com.<br>
                          <br>
                          Regarding SSO: There is an RFC that extends
                          SASL based authentication to support the token
                          authentication mechanisms as used by OAuth1
                          and OAuth2, see <a moz-do-not-send="true"
                            class="moz-txt-link-freetext"
                            href="https://tools.ietf.org/html/rfc7628">https://tools.ietf.org/html/rfc7628</a><br>
                          So SSO already works with IMAP, POP3 and SMTP.<br>
                          <br>
                          Cheers<br>
                          <br>
                          Marten<br>
                        </div>
                        <br>
                        <br>
                        <br>
                        Am 03.06.2016 um 15:40 schrieb Paul E. Jones:<br>
                      </div>
                      <blockquote
                        cite="mid:em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki"
                        type="cite" class="cite">
                        <style>#x417b0e5e1e464b9 #x14ca4e8a6f9d44b blockquote.cite{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left:1px solid #CCC ;
}
#x417b0e5e1e464b9 #x14ca4e8a6f9d44b blockquote.cite2{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left:1px solid #CCC;
	margin-top:3px;
	padding-top:0px;
}
#x417b0e5e1e464b9 #x14ca4e8a6f9d44b .plain pre,#x417b0e5e1e464b9 #x14ca4e8a6f9d44b .plain tt{
	font-family:monospace;
	font-size:100%;
	font-weight:normal;
	font-style:normal;
}
#x417b0e5e1e464b9 #x14ca4e8a6f9d44b a img{
	border:0px;
}
#x417b0e5e1e464b9 #x14ca4e8a6f9d44b{
	font-family:Calibri;
	font-size:11pt;
}
#x417b0e5e1e464b9 #x14ca4e8a6f9d44b .plain pre,#x417b0e5e1e464b9 #x14ca4e8a6f9d44b .plain tt{
	font-family:Calibri;
	font-size:11pt;
}</style>
                        <div>Marten,</div>
                        <div> </div>
                        <div> </div>
                        <div id="xb0e07aa6572b4a46adcd7f5ad2d33c48"
                          style="COLOR: #000000">
                          <blockquote class="cite2"
                            cite="575180B6.9010902@dmfs.org" type="cite">
                            <div class="moz-cite-prefix">So how would
                              the UI work?<br>
                              <br>
                              1) User enters user identifier, most
                              likely an email address, like <a
                                moz-do-not-send="true"
                                class="moz-txt-link-rfc2396E"
                                href="mailto:user@example.com">mailto:user@example.com</a>
                              and hits "next"<br>
                              <br>
                              2) Client sends a Webfinger request to <a
                                moz-do-not-send="true"
                                class="moz-txt-link-freetext"
                                href="https://exampe.com/.well-known/webfinger">https://exampe.com/.well-known/webfinger</a>?...




                              to see if there is a configuration
                              document<br>
                              <br>
                                -&gt; response 404 Not Found<br>
                                 a) Client falls back to "manual setup"
                              or another auto-configuration mechanism<br>
                              <br>
                                -&gt; response 401 Unauthorized</div>
                          </blockquote>
                          <div> </div>
                          <div>One should not get 401 querying the
                            WebFinger information for the user.  What
                            should happen is that the server should
                            return a JSON object that contains a link
                            relation that might look like this:</div>
                          <div>{</div>
                          <div>    "rel " :  "mail-config",</div>
                          <div>    "href " : <a moz-do-not-send="true"
                              class="moz-txt-link-rfc2396E"
href="https://mailserver.example.com/config?user=paulej%40packetizer.com">"https://mailserver.example.com/config?user=paulej%40packetizer.com"</a></div>
                          <div>}</div>
                          <div> </div>
                          <div>Or something like that.  The mail client
                            should query that URI it is that one that
                            should result in a potential 401.  The JSON
                            format that would come back here would need
                            to be something we define.  It could be
                            based on JRD, but would not have to be.</div>
                          <div> </div>
                          <div>Otherwise, I think the flow looks right.</div>
                          <div> </div>
                          <div> </div>
                          <blockquote class="cite2"
                            cite="575180B6.9010902@dmfs.org" type="cite">
                            <div class="moz-cite-prefix"><br>
                                 b) Client asks for password at
                              "example.com" and goes back to step 2
                              (this time with authentication)<br>
                              <br>
                                -&gt; response 200 Ok<br>
                                 c) client moves on to next step<br>
                              <br>
                              3) (optional) Client presents found
                              services to the user to let him select the
                              services to set up<br>
                              <br>
                              4) Client runs the setup handler for each
                              selected service<br>
                              <br>
                              <br>
                              I think in general that could work but it
                              raises two questions:<br>
                              <br>
                              1) How to make sure the user really
                              understands that he's authenticating at
                              example.com in step 2b? If the user tries
                              to configure calendar sync with
                              "acme-calendar.com" where his login
                              happens to be <a moz-do-not-send="true"
                                class="moz-txt-link-rfc2396E"
                                href="mailto:user@example.com">mailto:user@example.com</a>
                              he might not be prepared to being asked
                              for his example.com password. Maybe I'm
                              just paranoid or overcautious, but I think
                              that it might easily happen that the users
                              sends his acme-calendar.com password to
                              example.com in that case (since Basic
                              authentication is still the most common
                              mechanism, the client basically sends the
                              password in plain text). </div>
                          </blockquote>
                          <div> </div>
                          <div>Yeah, that's a valid concern.  The only
                            thing I can suggest is that the Subject CN
                            from the certificate is presented to the
                            user.  Alternatively, there could be two
                            passwords: one that is the "configuration
                            password" and one that is the email
                            password.  However, I don't think two
                            passwords will help us.  If I want to hack
                            somebody and can gain access to their WF
                            config, I can auto-config their email client
                            to point to my own IMAP server and just
                            retrieve the password that way.</div>
                          <div> </div>
                          <div>So, I think we have to rely on the
                            certificate presented to the mail client and
                            the user will have to know to trust it.  The
                            mail provider can tell the user "when
                            configuring email, ensure that the
                            configuration server is
                            mailconfig.example.com and do not provide a
                            password if that is not the name of the
                            configuration server indicated."</div>
                          <div> </div>
                          <div>If the mail config information is not
                            protected with a password, we probably would
                            want the customer to verify that the SMTP
                            server information is correct before the
                            password is provided.  These would be the
                            steps users would take if performing manual
                            configuration, but the software presents
                            that information to the user without the
                            user having to enter it.</div>
                          <div> </div>
                          <div> </div>
                          <blockquote class="cite2"
                            cite="575180B6.9010902@dmfs.org" type="cite">
                            <div class="moz-cite-prefix"><br>
                              2) How does the client know which
                              credentials to use to set up the
                              individual services in step 4? Should the
                              client ask the user for the credentials
                              for each service or can it assume that
                              some of them share the same credentials?
                              Is that something an auto-configuration
                              document can help with?</div>
                          </blockquote>
                          <div> </div>
                          <div>It would be nice if there is a config
                            indicator that says "SMTP server and IMAP
                            server passwords are the same", so the
                            client does not have to ask.</div>
                          <div> </div>
                          <div>If we use a "config password" then we
                            could even have the server tell the client
                            the password for services, which would
                            transparently allow those to be different. 
                            Alternatively, the client will have to ask
                            each about each one.</div>
                          <div> </div>
                          <div>For calendaring services, then yes: the
                            client would have to ask the user.  It could
                            ask if it's the same or different than the
                            email password or the config password.  For
                            some services, the authentication mechanisms
                            will be entirely different (like Google
                            Calendar).  The mail client will just have
                            to know how to access the service.  For that
                            reason, I'm a little hesitant to suggest
                            including calendaring service config along
                            with the email config data.  We could have
                            each of those services listed in the users'
                            WebFinger document.  For example, I might
                            have this entry in my WF document:</div>
                          <div>{</div>
                          <div>    "rel" : "calendar"</div>
                          <div>    "href" : "urn:whatever:google"</div>
                          <div>}</div>
                          <div> </div>
                          <div>Note I did not provide a URL.  The reason
                            is that this is an entirely different
                            service that has an entirely different
                            access method.  Maybe the client can ask the
                            user "is <a moz-do-not-send="true"
                              class="moz-txt-link-abbreviated"
                              href="mailto:paulej@packetizer.com">paulej@packetizer.com</a>
                            our user ID for your Google calendar?"  In
                            my case, I don't think it is.  Certainly,
                            it's not my gmail ID.  And, I would not want
                            to advertise that to the world,
                            necessarily.  Anyway, I think we should
                            limit the scope of what we try to do to
                            things that are standard OR we define a
                            generic URN that a client will just have to
                            know how to deal with.</div>
                          <div> </div>
                          <div> </div>
                          <blockquote class="cite2"
                            cite="575180B6.9010902@dmfs.org" type="cite">
                            <div class="moz-cite-prefix">Ideally the
                              server supports some kind of SSO mechanism
                              like OpenID Connect, so you don't need to
                              enter your password multiple times. But a
                              working auto-configuration is really the
                              precondition for this, because an OpenID
                              Connect implementations needs a way to
                              discover the OAuth2 scope tokens to
                              request from the server and
                              auto-configuration is really the way to do
                              that, IMO. For this it would be helpful to
                              have some mechanism to request a broader
                              scope from the user (without allowing him
                              to switch to a different account), but
                              that's a different topic I guess.</div>
                          </blockquote>
                          <div> </div>
                          <div>I definitely like the idea of SSO.  But,
                            I struggle to see how we would use this in
                            practice with mail autoconfig since SMTP,
                            IMAP, and POP servers require a password,
                            anyway.  If we use that as a means to have
                            those passwords provided behind the scenes
                            (as I indicated above), that might be a good
                            argument for using OpenID Connect.  In that
                            way, the ISP can also ensure that passwords
                            are REALLY complex and unknown even to the
                            user.  Not a bad practice, in that we can
                            view those passwords as complex tokens.</div>
                          <div> </div>
                          <div>Would that kind of use of OpenID Connect
                            to retrieve the password be workable?  (I'll
                            admit I don't have so much experience with
                            OpenID Connect.  I implemented OpenID 2.0,
                            but that's not ideal for what we'd want to
                            accomplish here.  I don't have a good feel
                            for how Connect might make this better.)</div>
                          <div> </div>
                          <div>Paul</div>
                          <div> </div>
                        </div>
                        <br>
                        <fieldset class="mimeAttachmentHeader"></fieldset>
                        <br>
                        <pre wrap="">_______________________________________________
webfinger mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
                      </blockquote>
                      <br>
                      <br>
                      <pre class="moz-signature" cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
                      <br>
                      <fieldset class="mimeAttachmentHeader"></fieldset>
                      <br>
                      <pre wrap="">_______________________________________________
webfinger mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
                    </blockquote>
                    <br>
                  </blockquote>
                  <br>
                  <pre class="moz-signature" cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
                  <br>
                  <fieldset class="mimeAttachmentHeader"></fieldset>
                  <br>
                  <pre wrap="">_______________________________________________
webfinger mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
                </blockquote>
                <br>
                <pre class="moz-signature" cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
              </blockquote>
            </div>
            <br>
            <fieldset class="mimeAttachmentHeader"></fieldset>
            <br>
            <pre wrap="">_______________________________________________
webfinger mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:webfinger@ietf.org">webfinger@ietf.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/webfinger">https://www.ietf.org/mailman/listinfo/webfinger</a>
</pre>
          </blockquote>
          <br>
          <pre class="moz-signature" cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
        </blockquote>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Marten Gajda
CEO

dmfs GmbH
Schandauer Straße 34
01309 Dresden
GERMANY

phone: +49 177 4427167
email: <a class="moz-txt-link-abbreviated" href="mailto:marten@dmfs.org">marten@dmfs.org</a>

Managing Director: Marten Gajda
Registered address: Dresden
Registered No.: AG Dresden HRB 34881
VAT Reg. No.: DE303248743</pre>
  </body>
</html>

--------------000509010708080409060603--


From nobody Fri Jul 15 01:36:53 2016
Return-Path: <paulej@packetizer.com>
X-Original-To: webfinger@ietfa.amsl.com
Delivered-To: webfinger@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 51C9212D985 for <webfinger@ietfa.amsl.com>; Fri, 15 Jul 2016 01:36:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.288
X-Spam-Level: 
X-Spam-Status: No, score=-3.288 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RP_MATCHES_RCVD=-1.287, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=packetizer.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bH4Qzeaf7Mab for <webfinger@ietfa.amsl.com>; Fri, 15 Jul 2016 01:36:47 -0700 (PDT)
Received: from dublin.packetizer.com (dublin.packetizer.com [75.101.130.125]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1598712D97E for <webfinger@ietf.org>; Fri, 15 Jul 2016 01:36:47 -0700 (PDT)
Received: from [192.168.1.20] (cpe-098-122-181-215.nc.res.rr.com [98.122.181.215] (may be forged)) (authenticated bits=0) by dublin.packetizer.com (8.15.2/8.15.2) with ESMTPSA id u6F8agpN009032 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 15 Jul 2016 04:36:42 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=packetizer.com; s=dublin; t=1468571802; bh=MdN/naf0wRJCVrJVSLGe129qRxAAMybNkvPPVgwCoPo=; h=From:To:Subject:Date:In-Reply-To:References:Reply-To; b=c0rjp+XgAsxeyUclTCP4Qpo+fN6iNxyEwRQQFtmbut3rxxJkoN7Bi74xYeuWVvoIj 0Vk9IoF5n2JIddUzqgPHifw/9CzCcb+KRhAepFBouwWo+Cw/lZHV0jpByDF9elIQrD liV4bNkrCTm+nVQOGEvTseYZGESzTSHwM3YBTs2o=
From: "Paul E. Jones" <paulej@packetizer.com>
To: "Marten Gajda" <marten@dmfs.org>, "webfinger@ietf.org" <webfinger@ietf.org>
Date: Fri, 15 Jul 2016 08:36:53 +0000
Message-Id: <emc4dd7b67-6273-400d-bd4d-dae0d24f4823@sydney>
In-Reply-To: <57880D75.5090109@dmfs.org>
References: <em44c60c65-2d14-46a0-adb3-a52d38d160ed@helsinki> <575197C1.3090102@dmfs.org> <39fe811e-282a-2a08-2928-c78c3947a6b9@aol.com> <575492E1.2000805@dmfs.org> <57587369.20405@dmfs.org> <em1601bf25-0972-435d-8537-b3a6d19b5b33@sydney> <5786C161.7070806@dmfs.org> <emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney> <57880D75.5090109@dmfs.org>
User-Agent: eM_Client/7.0.26482.0
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="------=_MB5B3A482C-CB43-4512-9213-0B135A18CEBC"
X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.6 (dublin.packetizer.com [10.137.60.122]); Fri, 15 Jul 2016 04:36:42 -0400 (EDT)
Archived-At: <https://mailarchive.ietf.org/arch/msg/webfinger/RgPaasKjFJccAhU4Q0ySwcUDzOo>
Subject: Re: [webfinger] [apps-discuss] Mail client configuration via WebFinger
X-BeenThere: webfinger@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
Reply-To: "Paul E. Jones" <paulej@packetizer.com>
List-Id: Discussion of the Webfinger protocol proposal in the Applications Area <webfinger.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webfinger>, <mailto:webfinger-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webfinger/>
List-Post: <mailto:webfinger@ietf.org>
List-Help: <mailto:webfinger-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webfinger>, <mailto:webfinger-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 15 Jul 2016 08:36:52 -0000

--------=_MB5B3A482C-CB43-4512-9213-0B135A18CEBC
Content-Type: text/plain; format=flowed; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Marten,

>
>Am 14.07.2016 um 08:19 schrieb Paul E. Jones:
>>Let's make sure the new draft is scoped to just mail configuration. =20
>>(If we want to go further with calendar, contacts, etc. then arguably=20
>>those should be separate URLs.  My mail and calendar is not provided=20
>>by the same provider, for example.)
>If we only support mail configuration this will probably fail. I think=20
>one of the strengths of this draft is that everything is in one place.

But, everything is in one place in the sense that WebFinger is the one=20
place.  The type of information required to configure contacts and=20
calendar are quite different than email.  So why produce a JSON document=
=20
that tries to blend all three?

The only thing I'm suggesting is to define the link relations.  In the=20
future, there might be another (e.g., tasks).

>>Certificate Auth: I'm not sure what the problem is here, unless people=
=20
>>want to use enterprise-issued certificates (i.e., those that are not=20
>>from a public CA).  If that is the case, I would not want my mail=20
>>client to insert those into my trusted certificate store.  So, would=20
>>those be one-time uses?  Not very useful.  I'd say the IT department=20
>>needs to install whatever root certs are needed.  A client should=20
>>authenticate the certificates it sees, but we don't need more words=20
>>about it other than to say the TLS connection must be authenticated.
>No, this is about client authentication, i.e. the client has to provide=
=20
>a client certificate signed by some specific authority. This is not=20
>widely used and probably more for corporate or personal use cases, but=20
>we have a significant number of users of this security feature.
>At least in Java it's a real pain to distinguish a client certificate=20
>request from any other SSLException. So it would be helpful to know in=20
>advance if a specific client certificate is required or not.

Oh!  I totally had this backward.  The challenge I see with using client=
=20
certificates is that one of the benefits to using WebFinger is that I=20
don't have to manually configure my email clients I have on my 6=20
different clients.  Even in the enterprise, having a mobile device and=20
computer is more common.  So, I would not be opposed to this, but I'm=20
not sure it would be used much, particularly since the user is already=20
authenticating with other mechanisms.  If the expectation is the user's=20
device will also authenticate with the mail server using the same=20
certificate, I guess this might be required.

>>Document structure:  I think keeping this simple is really best.  I=20
>>don't think we need multiple mail providers. If the email address is=20
>>user@example.com, then I think it's reasonable to assume example.com=20
>>is the provider.  Yes, a user could go enter WebFinger information for=
=20
>>some other provider, but the average person will not want to do that. =
=20
>>That's having the user configure the server so it can configure the=20
>>client.  Not much gained there.  I would have something that's no more=
=20
>>complex than something like this:
>>
>I fully agree that we should keep it as simple as possible. However,=20
>one of the keys to success is that we support the services and use=20
>cases that are not covered by the existing mechanisms. That's why I=20
>believe that the document should have a generic structure that works=20
>with pretty much every service out there. It shouldn't be designed=20
>around email. This is one of the reasons for me to ditch the=20
>host/port/transport notation and just use a single URI instead. I'm not=
=20
>aware of any service that can't be addresses with a URI.

Those are just properties of the mail service.  The next thing will have=
=20
its own set of properties.  The JRD sent by WebFinger is a document=20
along the lines of what you describe: very generic.  And, that was=20
viewed as good.  There is really very little one can convey: a subject,=20
some properties, and a set of links with associated properties.

But, it gets really tricky trying to define something complex with a=20
JRD, and that's intended.  Folks in the WG did not want it to do more=20
than what it does.  And I think the same philosophy should be extended=20
to the services like mail, calendar, contacts, tasks, or whatever.  If=20
each one is defined for the specific purpose they serve, the documents=20
will be clean and clear.


>Another goal should be to revert the service discovery process to some=20
>degree. Instead of having the client to probe the provider for each=20
>service that might be supported, the current spec reverts that and=20
>returns a list of everything that's supported. The local "account setup=
=20
>agent" then can probe the local device software for client modules or=20
>applications that might support a specific service. Ideally this would=20
>be supported on OS level. So you run a generic account configuration on=
=20
>OS level, the OS pulls the service configuration document and calls the=
=20
>installed handlers for each supported service. It there is no client=20
>for a specific service the OS could make suggestions like "Your=20
>provider also supports <Some service>. Search the App Store for a=20
>suitable client app now".

That's an interesting idea, but I would still prefer to keep the config=20
in different resources.  Everything you describe could be done with=20
naming conventions or properties in the JRD.  For example, a link might=20
have a "rel" value of "mail-config" and an "href" value.  This might not=
=20
mean much, but there could also be a property that indicates that it is=20
an "auto-configuration" link, perhaps the name of the service (e.g, =20
"Email"), etc.


>That's why I believe that we should put all services into a single=20
>document, instead of using service specific rel-types that need to be=20
>probed by the client.

Another reason not to do it: even within the same organization,=20
different departments might manage different services. You run into=20
challenges trying to get people to coordinate.

Another reason is that folks in the IETF like to have things broken into=
=20
granular pieces.  That's why WF is more-or-less just a directory of=20
links.

>If, like in your case, calendars and email are not hosted at the same=20
>provider, the webfinger response for your account should just contain=20
>two provider entries, each pointing to a document that lists all the=20
>services provided by this provider.

In my case, I would expect paulej@packetizer.com to return only the=20
email service, since I don't have a calendar service there.  I would=20
select the "Add Account" option in my email software and enter another=20
user ID to get the calendar.  Yeah, I could have this in a single WF=20
reply, but the problem is that the average user isn't going to be adding=
=20
such entries to his or her account.

Of course, we do need to allow for the possibility that the IT=20
department will have one group running email and another handling=20
contacts / corporate directory services.  So, a company might very well=20
have two links in the JRD returned by WF.  And, that goes to my point,=20
again, that there's no point trying to define an all-encompasing=20
document.

To be clear, though: I'm not opposed to having a generic document that=20
tries to be flexible enough to convey just about anything.  I'm OK with=20
that.  I just don't think that we should have a single document that=20
carries information for more than one service.  I just don't see the=20
benefit in doing that vs. having two or three different link relations=20
-- one for each service to be configured.  That said, I do not see that=20
it's very useful to have a generic document format vs. a specialized=20
one.  After all, we still have to define the exactly contents of the=20
documents, generic or specialized.

Paul

--------=_MB5B3A482C-CB43-4512-9213-0B135A18CEBC
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><head>
   =20
  <style>blockquote.cite
{margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:=
 0px; border-left-width: 1px; border-left-style: solid; border-left-color:=
 rgb(204, 204, 204);}
blockquote.cite2
{margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:=
 0px; border-left-width: 1px; border-left-style: solid; border-left-color:=
 rgb(204, 204, 204); margin-top: 3px; padding-top: 0px;}
a img
{border: 0px;}
body
{font-family: Calibri; font-size: 11pt;}
</style></head>
  <body background=3D""><div>Marten,</div><div><br></div><div id=3D"xdfae95=
614ddc4b3" style=3D" color: #000000"><blockquote cite=3D"57880D75.5090109@d=
mfs.org" type=3D"cite" class=3D"cite2">
    <br>
    <div class=3D"moz-cite-prefix">Am 14.07.2016 um 08:19 schrieb Paul E.
      Jones:<br>
    </div>
    <blockquote cite=3D"mid:emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney"=
 type=3D"cite" class=3D"cite">
      <style>#xdfae95614ddc4b3 blockquote.cite{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left-width:1px;
	border-left-style:solid;
	border-left-color:#CCC;
}
#xdfae95614ddc4b3 blockquote.cite2{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left-width:1px;
	border-left-style:solid;
	border-left-color:#CCC;
	margin-top:3px;
	padding-top:0px;
}
#xdfae95614ddc4b3 a img{
	border:0px;
}
#xdfae95614ddc4b3{
	font-family:Calibri;
	font-size:11pt;
}</style>Let's make sure the new
      draft is scoped to just mail configuration. &nbsp;(If we want to go
      further with calendar, contacts, etc. then arguably those should
      be separate URLs. &nbsp;My mail and calendar is not provided by the
      same provider, for example.)</blockquote>
    If we only support mail configuration this will probably fail. I
    think one of the strengths of this draft is that everything is in
    one place.&nbsp;</blockquote><div id=3D"xdfae95614ddc4b3" style=3D" =
color: #000000"><br></div><div id=3D"xdfae95614ddc4b3" style=3D" color: =
#000000">But, everything is in one place in the sense that WebFinger is =
the one place. &nbsp;The type of information required to configure contacts=
 and calendar are quite different than email. &nbsp;So why produce a JSON=
 document that tries to blend all three?</div><div id=3D"xdfae95614ddc4b3"=
 style=3D" color: #000000"><br></div><div id=3D"xdfae95614ddc4b3" style=3D=
" color: #000000">The only thing I'm suggesting is to define the link relat=
ions. &nbsp;In the future, there might be another (e.g., tasks).</div><div=
 id=3D"xdfae95614ddc4b3" style=3D" color: #000000">&nbsp;</div><blockquote=
 cite=3D"57880D75.5090109@dmfs.org" type=3D"cite" class=3D"cite2">
    <blockquote cite=3D"mid:emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney"=
 type=3D"cite" class=3D"cite">
      <div>Certificate Auth: I'm not sure what the problem is here,
        unless people want to use enterprise-issued certificates (i.e.,
        those that are not from a public CA). &nbsp;If that is the case,=
 I
        would not want my mail client to insert those into my trusted
        certificate store. &nbsp;So, would those be one-time uses? &nbsp;No=
t very
        useful. &nbsp;I'd say the IT department needs to install whatever
        root certs are needed. &nbsp;A client should authenticate the
        certificates it sees, but we don't need more words about it
        other than to say the TLS connection must be authenticated.</div>
    </blockquote>
    No, this is about client authentication, i.e. the client has to
    provide a client certificate signed by some specific authority. This
    is not widely used and probably more for corporate or personal use
    cases, but we have a significant number of users of this security
    feature.<br>
    At least in Java it's a real pain to distinguish a client
    certificate request from any other SSLException. So it would be
    helpful to know in advance if a specific client certificate is
    required or not.</blockquote><div id=3D"xdfae95614ddc4b3" style=3D" =
color: #000000"><br></div><div id=3D"xdfae95614ddc4b3" style=3D" color: =
#000000">Oh! &nbsp;I totally had this backward. &nbsp;The challenge I see=
 with using client certificates is that one of the benefits to using WebFin=
ger is that I don't have to manually configure my email clients I have on=
 my 6 different clients. &nbsp;Even in the enterprise, having a mobile devi=
ce and computer is more common. &nbsp;So, I would not be opposed to this,=
 but I'm not sure it would be used much, particularly since the user is =
already authenticating with other mechanisms. &nbsp;If the expectation is=
 the user's device will also authenticate with the mail server using the=
 same certificate, I guess this might be required.&nbsp;</div><div id=3D=
"xdfae95614ddc4b3" style=3D" color: #000000"><br></div><blockquote cite=3D=
"57880D75.5090109@dmfs.org" type=3D"cite" class=3D"cite2"><blockquote cite=
=3D"mid:emdb968062-c47f-4fb3-b4b8-ba787cfb56eb@sydney" type=3D"cite" class=
=3D"cite"><div>Document structure: &nbsp;I think keeping this simple is =
really
        best. &nbsp;I don't think we need multiple mail providers. If the
        email address is <a moz-do-not-send=3D"true" href=3D"mailto:user@ex=
ample.com,%20" style=3D"font-size: 11pt;">user@example.com, </a>then
        I think it's reasonable to assume example.com is the provider.
        &nbsp;Yes, a user could go enter WebFinger information for some =
other
        provider, but the average person will not want to do that.
        &nbsp;That's having the user configure the server so it can configu=
re
        the client. &nbsp;Not much gained there. &nbsp;I would have somethi=
ng
        that's no more complex than something like this:</div>
      <br>
    </blockquote>
    I fully agree that we should keep it as simple as possible. However,
    one of the keys to success is that we support the services and use
    cases that are not covered by the existing mechanisms. That's why I
    believe that the document should have a generic structure that works
    with pretty much every service out there. It shouldn't be designed
    around email. This is one of the reasons for me to ditch the
    host/port/transport notation and just use a single URI instead. I'm
    not aware of any service that can't be addresses with a URI.</blockquot=
e><div id=3D"xdfae95614ddc4b3" style=3D" color: #000000"><br></div><div =
id=3D"xdfae95614ddc4b3" style=3D" color: #000000">Those are just properties=
 of the mail service. &nbsp;The next thing will have its own set of propert=
ies. &nbsp;The JRD sent by WebFinger is a document along the lines of what=
 you describe: very generic. &nbsp;And, that was viewed as good. &nbsp;Ther=
e is really very little one can convey: a subject, some properties, and =
a set of links with associated properties.</div><div id=3D"xdfae95614ddc4b3=
" style=3D" color: #000000"><br></div><div id=3D"xdfae95614ddc4b3" style=
=3D" color: #000000">But, it gets really tricky trying to define something=
 complex with a JRD, and that's intended. &nbsp;Folks in the WG did not =
want it to do more than what it does. &nbsp;And I think the same philosophy=
 should be extended to the services like mail, calendar, contacts, tasks,=
 or whatever. &nbsp;If each one is defined for the specific purpose they=
 serve, the documents will be clean and clear.</div><div id=3D"xdfae95614dd=
c4b3" style=3D" color: #000000"><br></div><div id=3D"xdfae95614ddc4b3" styl=
e=3D" color: #000000"><br></div><blockquote cite=3D"57880D75.5090109@dmfs.o=
rg" type=3D"cite" class=3D"cite2">Another goal should be to revert the serv=
ice discovery process to
    some degree. Instead of having the client to probe the provider for
    each service that might be supported, the current spec reverts that
    and returns a list of everything that's supported. The local
    "account setup agent" then can probe the local device software for
    client modules or applications that might support a specific
    service. Ideally this would be supported on OS level. So you run a
    generic account configuration on OS level, the OS pulls the service
    configuration document and calls the installed handlers for each
    supported service. It there is no client for a specific service the
    OS could make suggestions like "Your provider also supports &lt;Some
    service&gt;. Search the App Store for a suitable client app now".</bloc=
kquote><div id=3D"xdfae95614ddc4b3" style=3D" color: #000000"><br></div><di=
v id=3D"xdfae95614ddc4b3" style=3D" color: #000000">That's an interesting=
 idea, but I would still prefer to keep the config in different resources.=
 &nbsp;Everything you describe could be done with naming conventions or =
properties in the JRD. &nbsp;For example, a link might have a "rel" value=
 of "mail-config" and an "href" value. &nbsp;This might not mean much, but=
 there could also be a property that indicates that it is an "auto-configur=
ation" link, perhaps the name of the service (e.g, &nbsp;"Email"), etc.</di=
v><div id=3D"xdfae95614ddc4b3" style=3D" color: #000000"><br></div><br><blo=
ckquote cite=3D"57880D75.5090109@dmfs.org" type=3D"cite" class=3D"cite2">Th=
at's why I believe that we should put all services into a single
    document, instead of using service specific rel-types that need to
    be probed by the client.</blockquote><div id=3D"xdfae95614ddc4b3" style=
=3D" color: #000000"><br></div><div id=3D"xdfae95614ddc4b3" style=3D" color=
: #000000">Another reason not to do it: even within the same organization,=
 different departments might manage different services. You run into challe=
nges trying to get people to coordinate.</div><div id=3D"xdfae95614ddc4b3"=
 style=3D" color: #000000"><br></div><div id=3D"xdfae95614ddc4b3" style=3D=
" color: #000000">Another reason is that folks in the IETF like to have =
things broken into granular pieces. &nbsp;That's why WF is more-or-less =
just a directory of links.</div><div id=3D"xdfae95614ddc4b3" style=3D" colo=
r: #000000"><br></div><blockquote cite=3D"57880D75.5090109@dmfs.org" type=
=3D"cite" class=3D"cite2">If, like in your case, calendars and email are=
 not hosted at the
    same provider, the webfinger response for your account should just
    contain two provider entries, each pointing to a document that lists
    all the services provided by this provider.</blockquote><div id=3D"xdfa=
e95614ddc4b3" style=3D" color: #000000"><br></div><div id=3D"xdfae95614ddc4=
b3" style=3D" color: #000000">In my case, I would expect <a href=3D"mailto:=
paulej@packetizer.com">paulej@packetizer.com</a>&nbsp;to return only the=
 email service, since I don't have a calendar service there. &nbsp;I would=
 select the "Add Account" option in my email software and enter another =
user ID to get the calendar. &nbsp;Yeah, I could have this in a single WF=
 reply, but the problem is that the average user isn't going to be adding=
 such entries to his or her account.</div><div id=3D"xdfae95614ddc4b3" styl=
e=3D" color: #000000"><br></div><div id=3D"xdfae95614ddc4b3" style=3D" colo=
r: #000000">Of course, we do need to allow for the possibility that the =
IT department will have one group running email and another handling contac=
ts / corporate directory services. &nbsp;So, a company might very well have=
 two links in the JRD returned by WF. &nbsp;And, that goes to my point, =
again, that there's no point trying to define an all-encompasing document.<=
/div><div id=3D"xdfae95614ddc4b3" style=3D" color: #000000"><br></div><div=
 id=3D"xdfae95614ddc4b3" style=3D" color: #000000">To be clear, though: =
I'm not opposed to having a generic document that tries to be flexible enou=
gh to convey just about anything. &nbsp;I'm OK with that. &nbsp;I just don'=
t think that we should have a single document that carries information for=
 more than one service. &nbsp;I just don't see the benefit in doing that=
 vs. having two or three different link relations -- one for each service=
 to be configured. &nbsp;That said, I do not see that it's very useful to=
 have a generic document format vs. a specialized one. &nbsp;After all, =
we still have to define the exactly contents of the documents, generic or=
 specialized.</div><div id=3D"xdfae95614ddc4b3" style=3D" color: #000000"><=
br></div><div id=3D"xdfae95614ddc4b3" style=3D" color: #000000">Paul</div><=
div id=3D"xdfae95614ddc4b3" style=3D" color: #000000"><br></div></div>


<style>#xdfae95614ddc4b3 #x417b0e5e1e464b9 blockquote.cite{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left-width:1px;
	border-left-style:solid;
	border-left-color:#CCC;
}
#xdfae95614ddc4b3 #x417b0e5e1e464b9 blockquote.cite2{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left-width:1px;
	border-left-style:solid;
	border-left-color:#CCC;
	margin-top:3px;
	padding-top:0px;
}
#xdfae95614ddc4b3 #x417b0e5e1e464b9 a img{
	border:0px;
}
#xdfae95614ddc4b3 #x417b0e5e1e464b9{
	font-family:Calibri;
	font-size:11pt;
}</style><style>#xdfae95614ddc4b3 #x417b0e5e1e464b9 #x14ca4e8a6f9d44b block=
quote.cite{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left:1px solid #CCC ;
}
#xdfae95614ddc4b3 #x417b0e5e1e464b9 #x14ca4e8a6f9d44b blockquote.cite2{
	margin-left:5px;
	margin-right:0px;
	padding-left:10px;
	padding-right:0px;
	border-left:1px solid #CCC;
	margin-top:3px;
	padding-top:0px;
}
#xdfae95614ddc4b3 #x417b0e5e1e464b9 #x14ca4e8a6f9d44b .plain pre,#xdfae9561=
4ddc4b3 #x417b0e5e1e464b9 #x14ca4e8a6f9d44b .plain tt{
	font-family:monospace;
	font-size:100%;
	font-weight:normal;
	font-style:normal;
}
#xdfae95614ddc4b3 #x417b0e5e1e464b9 #x14ca4e8a6f9d44b a img{
	border:0px;
}
#xdfae95614ddc4b3 #x417b0e5e1e464b9 #x14ca4e8a6f9d44b{
	font-family:Calibri;
	font-size:11pt;
}
#xdfae95614ddc4b3 #x417b0e5e1e464b9 #x14ca4e8a6f9d44b .plain pre,#xdfae9561=
4ddc4b3 #x417b0e5e1e464b9 #x14ca4e8a6f9d44b .plain tt{
	font-family:Calibri;
	font-size:11pt;
}</style></body></html>
--------=_MB5B3A482C-CB43-4512-9213-0B135A18CEBC--

