Return-Path: <dave.tonge@moneyhub.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id E1A1D3A0F14
 for <oauth@ietfa.amsl.com>; Wed,  3 Jun 2020 06:32:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.749
X-Spam-Level: 
X-Spam-Status: No, score=-1.749 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249,
 HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001,
 URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key)
 header.d=momentumft.co.uk
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 qSEDgk9wqW71 for <oauth@ietfa.amsl.com>;
 Wed,  3 Jun 2020 06:32:30 -0700 (PDT)
Received: from mail-ot1-x32f.google.com (mail-ot1-x32f.google.com
 [IPv6:2607:f8b0:4864:20::32f])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id 1A10C3A0EE4
 for <oauth@ietf.org>; Wed,  3 Jun 2020 06:32:30 -0700 (PDT)
Received: by mail-ot1-x32f.google.com with SMTP id e5so1829510ote.11
 for <oauth@ietf.org>; Wed, 03 Jun 2020 06:32:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=momentumft.co.uk; s=google;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=2UtASniKMcM/z7PC1EO6R3tebRK5gXpurKtrfWc3Qfo=;
 b=Bfw5Do7seI5As5CVbGXF/X7V9FTYbBSs19xrLZmDnUWyCjX4aICPipScIrSNtHC3mm
 DvfTGcD78rnhVKH71te2w4Cog4bE9DBvcO/40lsgyPvhzJNYZZhvwjkieoYOxn+H0/Oz
 92vSl80ct6ZtKJWlspl7SLrZyMbkaRsBbX0AQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=2UtASniKMcM/z7PC1EO6R3tebRK5gXpurKtrfWc3Qfo=;
 b=ByFxwUdM7HYg1k8WrhrkFfe4FVBasXQZEIsCY5rnJypofh94EGYDYlBSG507t1twMj
 nM7oX11kWhuf7Mpj/Cf4bO7RQUiWn9Oa5NRKBfS+2vv1ZfH7ci9DEd9CMFQvdqwlfBGx
 H5woWRWzLGcAK7fKlQow21ArBQ42tumB75HYyF67gFuJVjF3SvIAuikdQRQvMykQK2hQ
 WqVCAamPp+3OOkQaHYz7q0O31oAoXpvW8XshwU3bqhUp6HnnFhaSu8YOfJfusaPV/4xG
 Sx9ROrfoc1i7NLkDN++2J5yGSRN7ncNU64PLj0TmC4eNRIEJIHTbmIajqSvMkUCnWyVk
 25Yw==
X-Gm-Message-State: AOAM530TAu9n+P22/Zt3eEQoKWRRWmXvdblYewdmQot2WiulEfCyKxBw
 BjbCefbYwomsb/8HwP76DlpuYW4Q6LCIaW4d2XjDlKemCuKoFNpw
X-Google-Smtp-Source: ABdhPJy00/bX8qULXSJ6lbg37V+m3Z81Che7gIIqxJ6yjJ7qwLmt67muzftBRAV89vXE4C+ASQqq1XypYGsS5kximCA=
X-Received: by 2002:a9d:6349:: with SMTP id y9mr17484otk.260.1591191149076;
 Wed, 03 Jun 2020 06:32:29 -0700 (PDT)
MIME-Version: 1.0
References: <mailman.1608.1590473008.8861.oauth@ietf.org>
 <CAOW4vyONovS7SLPnTpoGVoi5T92M7tMDbQ4N4o3hGodQRssqSQ@mail.gmail.com>
In-Reply-To: <CAOW4vyONovS7SLPnTpoGVoi5T92M7tMDbQ4N4o3hGodQRssqSQ@mail.gmail.com>
From: Dave Tonge <dave.tonge@momentumft.co.uk>
Date: Wed, 3 Jun 2020 15:32:17 +0200
Message-ID: <CAP-T6TT3yo8NhLOGhk3XmPDJJaR6nccjigGSM=VuauysekhV2g@mail.gmail.com>
To: Francis Pouatcha <fpo=40adorsys.de@dmarc.ietf.org>
Cc: OAuth WG <oauth@ietf.org>,
 Openid-specs Fapi <openid-specs-fapi@lists.openid.net>
Content-Type: multipart/alternative; boundary="00000000000035f71e05a72e0f2b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/-XxMK_G5I-v9XWm3BrnUoHK-bsQ>
Subject: Re: [OAUTH-WG] Issuers, Discovery Docs & Brands
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>,
 <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>,
 <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 03 Jun 2020 13:32:33 -0000

--00000000000035f71e05a72e0f2b
Content-Type: text/plain; charset="UTF-8"

Thank you for the replies to this message.

I agree that the best deployment option is: 1 brand = 1 issuer = 1
discovery doc, however that is not always possible.

I'd like to understand Francis what particular issue you see from allowing
an AS to specify multiple authorization_endpoints?
I can see that to avoid user confusion it would be necessary for the Client
to record which endpoint they redirected the user to, in case they need the
user to re-authorize - but I can't see any particular security issue?

No matter which authorization_endpoint the user was sent to, after the user
is redirected back to the Client's redirect_uri the process is the same as
if there had been 1 authorization_endpoint.

I am in favour of Vladimir's suggestion of:

"alternative_authorization_endpoints": {
    "banking": {
      "authorization_endpoint": "https://loadsamoney/business/auth",
      "description": "loadsmoney business banking customers",
      "logo_url": "https://loadsamoney/business/logo.png"
    },
    "personal": {
      "authorization_endpoint": "https://loadsamoney/consumer/auth",
      "description": "loadsmoney personal customers",
      "logo_url": "https://loadsamoney/consumer/logo.png"
    }
  }

Dave


On Wed, 27 May 2020 at 16:09, Francis Pouatcha <fpo=
40adorsys.de@dmarc.ietf.org> wrote:

>
>>
>> Message: 1
>> Date: Tue, 26 May 2020 09:03:16 +0300
>> From: Vladimir Dzhuvinov <vladimir@connect2id.com>
>> To: oauth@ietf.org
>> Subject: Re: [OAUTH-WG] Issuers, Discovery Docs & Brands
>> Message-ID: <2fc4c4ee-8627-936a-baf4-872c0f18eca6@connect2id.com>
>> Content-Type: text/plain; charset="utf-8"
>>
>> My understanding of the branding concept was to present different UIs to
>> resource owners during login and authorization, while keeping the OP /
>> AS the same, meaning identical issuer. In a spec it would be helpful to
>> spell out what branding means (and what not).
>>
> Let us call this varian the AS-Brand.
> As an RO, I sign in for AS-Brand-A and my token is usable under the
> context of AS-Brand-B because both share the same issuer.  This kills
> transparency at the RO site.
>
> I support: One AS-Brand <-> One Issuer.
>
> Regards
> /Francis
>
>>
>> Regarding a token being issued for "personal" vs "business" and
>> confusion - the usage of the token is normally defined by its scope and
>> audience (RS) and if this rule is observed (and it's not relied solely
>> on the issuer URI for that) then clients shouldn't get confused here.
>>
>> Vladimir
>>
>> On 23/05/2020 06:26, Francis Pouatcha wrote:
>> > - I will go for Option 1 even if we have the same runtime instance
>> > producing tokens under different?issuer uris.
>> > - Option 2 might expose security risk as many clients rely on
>> > the?issuer to associate the? token with authorization context. By no
>> > way shall a token issued for "personal" be valid for "business".
>> > Therefore considering?the?use of the?same issuer here might lead to
>> > confusion at the?RP.
>> > - In order to avoid confusion, AS must make?sure each "brand"
>> > uses?separated key material to produce the token.
>> >
>> > BTW:
>> > The term brand as used in the context of most Open Banking initiatives
>> > refers to entities consuming the Interface provided by TPPs (Third
>> > Party Providers).. TPPs play the roles of RPs in the oAuth2 context.
>> >
>> > Unless I misunderstood this thread we are using a brand here to refer
>> > to an AS virtual host (issuer-uri).
>> >
>> > Going forward, we need?to?agree on choosing another term to refer to
>> > issuers, and leave the term "Brand" for consumers of TPP-interfaces.
>> >
>> > The core brand problem we will be facing in open banking is for having
>> > the AS display the "consumer-brand" logo to the RO in the consent
>> screen.
>> >
>> >
>> >     >> On 22 May 2020, at 08:52, Vladimir Dzhuvinov
>> >     <vladimir@connect2id.com <mailto:vladimir@connect2id.com>> wrote:
>> >     >>
>> >     >> With that said it makes sense to devise a structure which can
>> >     accommodate UI driven as well as automatic choice.
>> >     >>
>> >     >>? ? ? ? The UI driven chooser will need a human readable
>> >     description and other UI hints. This can work for instance with
>> >     "classic" OIDC Discovery.
>> >     >>
>> >     >>? ? ? ? The "auto" chooser will need some sort of an ID. For a
>> >     bank chooser this means providing the issuer URI and an optional
>> >     brand ID and both must get registered together. Or, one could
>> >     define a standard brand ID (label) for banking operations and if
>> >     the "alternative_authorization_endpoints" is present look for it
>> >     in the structure, else fall back to the default
>> >     "authorization_endpoint".
>> >     >> Here is one possible layout which has IDs and UI hints:
>> >     >>
>> >     >> {
>> >     >>? ?...
>> >     >>? ?"alternative_authorization_endpoints": {
>> >     >>? ? ?"banking": {
>> >     >>? ? ? ?"authorization_endpoint":
>> >     >> "https://loadsamoney/business/auth"
>> >     >> ,
>> >     >>? ? ? ?"description": "loadsmoney business banking customers",
>> >     >>? ? ? ?"logo_url":
>> >     >> "https://loadsamoney/business/logo.png"
>> >     >>
>> >     >>? ? ?},
>> >     >>? ? ?"personal": {
>> >     >>? ? ? ?"authorization_endpoint":
>> >     >> "https://loadsamoney/consumer/auth"
>> >     >> ,
>> >     >>? ? ? ?"description": "loadsmoney personal customers",
>> >     >>? ? ? ?"logo_url":
>> >     >> "https://loadsamoney/consumer/logo.png"
>> >     >>
>> >     >>? ? ?}
>> >     >>? ?}
>> >     >> }
>> >     >>
>> >     >>
>> >     >>
>> >     >> On 22/05/2020 09:59, Torsten Lodderstedt wrote:
>> >     >>> I think an id or label per endpoint set would be needed to
>> >     determine the set of endpoints to be used by a certain client.
>> >     >>>
>> >     >>> On the conceptual side, I?m asking myself how the complete
>> >     process is supposed to work. Who is deciding what issuer/endpoint
>> >     set combination to use. I assume in an open banking scenario,
>> >     there will always be some kind of bank chooser. Will this chooser
>> >     provide the client with issuer and brand id?
>> >     >>>
>> >     >>>
>> >     >>>> On 22. May 2020, at 08:10, Vladimir Dzhuvinov
>> >     <vladimir@connect2id.com <mailto:vladimir@connect2id.com>>
>> >     >>>>? wrote:
>> >     >>>>
>> >     >>>> A mapping like the one you propose can definitely work. Since
>> >     the user will be making the choice which endpoint to take with the
>> >     client app, having the logo_uri is a good idea. If the branded
>> >     endpoints differ somehow in policy one could also allow inclusion
>> >     of the op_policy_uri and op_tos_uri params from Discovery.
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >
>> https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery
>> >     >>>>
>> >     >>>>
>> >     >>>> Vladimir
>> >     >>>>
>> >     >>>> On 20/05/2020 19:16, Joseph Heenan wrote:
>> >     >>>>
>> >     >>>>> Thanks for your thoughts Vladimir!
>> >     >>>>>
>> >     >>>>> The client_id based solution I wasn?t previously aware of -
>> >     unfortunately it doesn?t solve the problem for app2app, as the
>> >     mobile OS selects the app to use based purely on the URL (and in
>> >     at least the iOS case will not offer the user a choice if multiple
>> >     apps claim to handle the same url).
>> >     >>>>>
>> >     >>>>> I think some kind of mapping like you suggest will work and
>> >     fallback, I wonder about a structure in the authorization server
>> >     metadata something like this:
>> >     >>>>>
>> >     >>>>> {
>> >     >>>>>? ?...
>> >     >>>>>? ?"alternative_authorization_endpoints": [
>> >     >>>>>? ? ?{
>> >     >>>>>? ? ? ?"authorization_endpoint":
>> >     >>>>> "https://loadsamoney/business/auth"
>> >     >>>>> ,
>> >     >>>>>? ? ? ?"description": "loadsmoney business banking customers",
>> >     >>>>>? ? ? ?"logo_url":
>> >     >>>>> "https://loadsamoney/business/logo.png"
>> >     >>>>>
>> >     >>>>>? ? ?},
>> >     >>>>>? ? ?{
>> >     >>>>>? ? ? ?"authorization_endpoint":
>> >     >>>>> "https://loadsamoney/consumer/auth"
>> >     >>>>> ,
>> >     >>>>>? ? ? ?"description": "loadsmoney personal customers",
>> >     >>>>>? ? ? ?"logo_url":
>> >     >>>>> "https://loadsamoney/consumer/logo.png"
>> >     >>>>>
>> >     >>>>>? ? ?}
>> >     >>>>>? ?]
>> >     >>>>> }
>> >     >>>>>
>> >     >>>>> And as you say, the existing authorization_endpoint can be a
>> >     fallback for clients that are unaware of the new spec or prefer
>> >     the simpler option of just using a single authorization endpoint.
>> >     Supporting the new spec would allow a better UX though so there?s
>> >     advantages to client to do so.
>> >     >>>>>
>> >     >>>>>> Speaking of mTLS, I'm not sure how the
>> >     "mtls_endpoint_aliases" can be sensibly combined with the proposed
>> >     multi-brand spec.
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>> I think that particular part is not really an issue as mtls
>> >     isn?t used at the authorization endpoint.
>> >     >>>>>
>> >     >>>>> Thanks
>> >     >>>>>
>> >     >>>>> Joseph
>> >     >>>>>
>> >     >>>>>
>> >     >>>>>
>> >     >>>>>> On 20 May 2020, at 16:07, Vladimir Dzhuvinov
>> >     <vladimir@connect2id.com <mailto:vladimir@connect2id.com>>
>> >     >>>>>>? wrote:
>> >     >>>>>>
>> >     >>>>>> Hi Dave,
>> >     >>>>>>
>> >     >>>>>> In the absence of such a "multi-brand" spec we have tackled
>> >     this issue in the past by letting the "brand" be encoded in the
>> >     client_id. An alternative scenario is to do a "brand" lookup by
>> >     client_id. Then let the AS render the "branded" authZ endpoint.
>> >     >>>>>>
>> >     >>>>>> You're probably aware the mTLS spec is allowing for
>> >     endpoint aliases, so this is not the first time such as need has
>> >     occurred:
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>> https://tools.ietf.org/html/rfc8705#section-5
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>> One could devise a similar JSON object with mappings
>> >     "label" - "authorization_endpoint".
>> >     >>>>>>
>> >     >>>>>> Clients that are aware of the new spec will look it up,
>> >     those that are not will fall back to the std
>> "authorization_endpoint".
>> >     >>>>>>
>> >     >>>>>> Speaking of mTLS, I'm not sure how the
>> >     "mtls_endpoint_aliases" can be sensibly combined with the proposed
>> >     multi-brand spec.
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>> Vladimir
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>> On 20/05/2020 15:07, Dave Tonge wrote:
>> >     >>>>>>
>> >     >>>>>>> Dear OAuth WG
>> >     >>>>>>>
>> >     >>>>>>> We have an issue in the OpenID FAPI Working Group that we
>> >     believe affects the wider OAuth community.
>> >     >>>>>>>
>> >     >>>>>>> In summary: what is the recommended approach to discovery
>> >     (RFC8414) for Authorization Servers who support multiple "brands" .
>> >     >>>>>>>
>> >     >>>>>>> If brands are completely separate, then it seems sensible
>> >     that each brand must have its own `issuer` and therefore its own
>> >     discovery document at the correct location (i.e. brand 1 would
>> >     have an issuer of
>> >     >>>>>>> "https://as/brand1" and a discovery document available at?
>> >     https://as/.well-known/oauth-authorization-server/brand1
>> >     >>>>>>> ).
>> >     >>>>>>>
>> >     >>>>>>> However in the real world it is not always so simple. We
>> >     have many existing implementations in UK open banking that support
>> >     multiple authorization endpoints. Here is an example (thanks to
>> >     @Joseph Heenan )
>> >     >>>>>>>
>> >     >>>>>>>
>> >     >>>>>>>> Bank ?loadsamoney? has one idp and, for internet banking,
>> >     one ?login page? for both business and personal customers.
>> >     >>>>>>>>
>> >     >>>>>>>> They have separate mobile apps for business/personal, and
>> >     are required to support app2app. This means they will definitely
>> >     be exposing multiple authorization endpoints (as there?s a 1:1
>> >     mapping of authorization endpoints to mobile apps) - the choice is
>> >     how they do this.
>> >     >>>>>>>>
>> >     >>>>>>>> Their choices are:
>> >     >>>>>>>>
>> >     >>>>>>>> 1. Multiple discovery endpoints (one for business, one
>> >     for personal), each with a different authorization endpoint,
>> >     multiple issuers (if their vendor allows this)
>> >     >>>>>>>> 2. Single discovery endpoint, single issuer, multiple
>> >     authorization endpoints listed in one discovery doc (one for
>> >     business, one for personal) some of which are hardcoded by the 3rd
>> >     party
>> >     >>>>>>>> 3. Multiple discovery endpoints each with a different
>> >     authorization endpoint, same issuer in all cases (breaks RFC8414
>> >     and OIDC Discovery)
>> >     >>>>>>>>
>> >     >>>>>>> Option 3 is invalid and that leaves us with options 1 and 2.
>> >     >>>>>>> Option 1 can be problematic as often it is in reality the
>> >     same `issuer` behind the scenes.
>> >     >>>>>>>
>> >     >>>>>>> We would like to get feedback on this issue and
>> >     potentially an extension to RFC8414 to allow the definition of
>> >     multiple authorization endpoints.
>> >     >>>>>>>
>> >     >>>>>>> Thanks in advance
>> >     >>>>>>>
>> >     >>>>>>> Dave Tonge
>> >     >>>>>>> Co-Chair FAPI WG
>> >     >>>>>>> Open ID Foundation
>> >     >>>>>>>
>> >     >>>>>>>
>> >     >>>>>>>
>> >     >>>> --
>> >     >>>> Vladimir Dzhuvinov
>> >
>
>
> --
> Francis Pouatcha
> Co-Founder and Technical Lead at adorys
> https://adorsys-platform.de/solutions/
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>


--

--00000000000035f71e05a72e0f2b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:trebuchet ms,sans-serif">Thank you for the replies to this message=
.</div><div class=3D"gmail_default" style=3D"font-family:trebuchet ms,sans-=
serif"><br></div><div class=3D"gmail_default" style=3D"font-family:trebuche=
t ms,sans-serif">I agree that the best deployment option is: 1 brand =3D 1 =
issuer =3D 1 discovery doc, however that is not always possible.</div><div =
class=3D"gmail_default" style=3D"font-family:trebuchet ms,sans-serif"><br><=
/div><div class=3D"gmail_default" style=3D"font-family:trebuchet ms,sans-se=
rif">I&#39;d like to understand Francis what particular issue you see from =
allowing an AS to specify multiple authorization_endpoints?</div><div class=
=3D"gmail_default" style=3D"font-family:trebuchet ms,sans-serif">I can see =
that to avoid user confusion it would be necessary=C2=A0for the Client to r=
ecord which endpoint they redirected the user to, in case they need the use=
r to re-authorize - but I can&#39;t see any particular security issue?</div=
><div class=3D"gmail_default" style=3D"font-family:trebuchet ms,sans-serif"=
><br></div><div class=3D"gmail_default" style=3D"font-family:trebuchet ms,s=
ans-serif">No matter which authorization_endpoint the user was sent to, aft=
er the user is redirected back to the Client&#39;s redirect_uri the process=
 is the same as if there had been 1 authorization_endpoint.=C2=A0</div><div=
 class=3D"gmail_default" style=3D"font-family:trebuchet ms,sans-serif"><br>=
</div><div class=3D"gmail_default" style=3D"font-family:trebuchet ms,sans-s=
erif">I am in favour of Vladimir&#39;s suggestion of:</div><div class=3D"gm=
ail_default" style=3D"font-family:trebuchet ms,sans-serif"><br></div><div c=
lass=3D"gmail_default" style=3D"font-family:trebuchet ms,sans-serif">&quot;=
alternative_authorization_endpoints&quot;: {<br>=C2=A0 =C2=A0 &quot;banking=
&quot;: {<br>=C2=A0 =C2=A0 =C2=A0 &quot;authorization_endpoint&quot;: &quot=
;<a href=3D"https://loadsamoney/business/auth">https://loadsamoney/business=
/auth</a>&quot;,<br>=C2=A0 =C2=A0 =C2=A0 &quot;description&quot;: &quot;loa=
dsmoney business banking customers&quot;,<br>=C2=A0 =C2=A0 =C2=A0 &quot;log=
o_url&quot;: &quot;<a href=3D"https://loadsamoney/business/logo.png">https:=
//loadsamoney/business/logo.png</a>&quot;<br>=C2=A0 =C2=A0 },<br>=C2=A0 =C2=
=A0 &quot;personal&quot;: {<br>=C2=A0 =C2=A0 =C2=A0 &quot;authorization_end=
point&quot;: &quot;<a href=3D"https://loadsamoney/consumer/auth">https://lo=
adsamoney/consumer/auth</a>&quot;,<br>=C2=A0 =C2=A0 =C2=A0 &quot;descriptio=
n&quot;: &quot;loadsmoney personal customers&quot;,<br>=C2=A0 =C2=A0 =C2=A0=
 &quot;logo_url&quot;: &quot;<a href=3D"https://loadsamoney/consumer/logo.p=
ng">https://loadsamoney/consumer/logo.png</a>&quot;<br>=C2=A0 =C2=A0 }<br>=
=C2=A0 }<br></div><div class=3D"gmail_default" style=3D"font-family:trebuch=
et ms,sans-serif"><br></div><div class=3D"gmail_default" style=3D"font-fami=
ly:trebuchet ms,sans-serif">Dave</div><div class=3D"gmail_default" style=3D=
"font-family:trebuchet ms,sans-serif"><br></div></div><br><div class=3D"gma=
il_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, 27 May 2020 at 16:0=
9, Francis Pouatcha &lt;fpo=3D<a href=3D"mailto:40adorsys.de@dmarc.ietf.org=
" target=3D"_blank">40adorsys.de@dmarc.ietf.org</a>&gt; wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div class=
=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br><br>
Message: 1<br>
Date: Tue, 26 May 2020 09:03:16 +0300<br>
From: Vladimir Dzhuvinov &lt;<a href=3D"mailto:vladimir@connect2id.com" tar=
get=3D"_blank">vladimir@connect2id.com</a>&gt;<br>
To: <a href=3D"mailto:oauth@ietf.org" target=3D"_blank">oauth@ietf.org</a><=
br>
Subject: Re: [OAUTH-WG] Issuers, Discovery Docs &amp; Brands<br>
Message-ID: &lt;<a href=3D"mailto:2fc4c4ee-8627-936a-baf4-872c0f18eca6@conn=
ect2id.com" target=3D"_blank">2fc4c4ee-8627-936a-baf4-872c0f18eca6@connect2=
id.com</a>&gt;<br>
Content-Type: text/plain; charset=3D&quot;utf-8&quot;<br>
<br>
My understanding of the branding concept was to present different UIs to<br=
>
resource owners during login and authorization, while keeping the OP /<br>
AS the same, meaning identical issuer. In a spec it would be helpful to<br>
spell out what branding means (and what not).<br></blockquote><div>Let us c=
all this varian the AS-Brand.=C2=A0</div><div>As an RO, I sign=C2=A0in for =
AS-Brand-A and my token is usable under the context of AS-Brand-B because b=
oth share the same issuer.=C2=A0 This kills transparency=C2=A0at the RO sit=
e.</div><div><br></div><div>I support: One AS-Brand &lt;-&gt; One Issuer.</=
div><div><br></div><div>Regards</div><div>/Francis</div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><br>
Regarding a token being issued for &quot;personal&quot; vs &quot;business&q=
uot; and<br>
confusion - the usage of the token is normally defined by its scope and<br>
audience (RS) and if this rule is observed (and it&#39;s not relied solely<=
br>
on the issuer URI for that) then clients shouldn&#39;t get confused here.<b=
r>
<br>
Vladimir<br>
<br>
On 23/05/2020 06:26, Francis Pouatcha wrote:<br>
&gt; - I will go for Option 1 even if we have the same runtime instance<br>
&gt; producing tokens under different?issuer uris.<br>
&gt; - Option 2 might expose security risk as many clients rely on<br>
&gt; the?issuer to associate the? token with authorization context. By no<b=
r>
&gt; way shall a token issued for &quot;personal&quot; be valid for &quot;b=
usiness&quot;.<br>
&gt; Therefore considering?the?use of the?same issuer here might lead to<br=
>
&gt; confusion at the?RP.<br>
&gt; - In order to avoid confusion, AS must make?sure each &quot;brand&quot=
;<br>
&gt; uses?separated key material to produce the token.<br>
&gt;<br>
&gt; BTW:<br>
&gt; The term brand as used in the context of most Open Banking initiatives=
<br>
&gt; refers to entities consuming the Interface provided by TPPs (Third<br>
&gt; Party Providers).. TPPs play the roles of RPs in the oAuth2 context.<b=
r>
&gt;<br>
&gt; Unless I misunderstood this thread we are using a brand here to refer<=
br>
&gt; to an AS virtual host (issuer-uri).<br>
&gt;<br>
&gt; Going forward, we need?to?agree on choosing another term to refer to<b=
r>
&gt; issuers, and leave the term &quot;Brand&quot; for consumers of TPP-int=
erfaces.<br>
&gt;<br>
&gt; The core brand problem we will be facing in open banking is for having=
<br>
&gt; the AS display the &quot;consumer-brand&quot; logo to the RO in the co=
nsent screen.<br>
&gt;<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; On 22 May 2020, at 08:52, Vladimir Dzhuvin=
ov<br>
&gt;=C2=A0 =C2=A0 =C2=A0&lt;<a href=3D"mailto:vladimir@connect2id.com" targ=
et=3D"_blank">vladimir@connect2id.com</a> &lt;mailto:<a href=3D"mailto:vlad=
imir@connect2id.com" target=3D"_blank">vladimir@connect2id.com</a>&gt;&gt; =
wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; With that said it makes sense to devise a =
structure which can<br>
&gt;=C2=A0 =C2=A0 =C2=A0accommodate UI driven as well as automatic choice.<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ? ? The UI driven chooser will need a h=
uman readable<br>
&gt;=C2=A0 =C2=A0 =C2=A0description and other UI hints. This can work for i=
nstance with<br>
&gt;=C2=A0 =C2=A0 =C2=A0&quot;classic&quot; OIDC Discovery.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ? ? The &quot;auto&quot; chooser will n=
eed some sort of an ID. For a<br>
&gt;=C2=A0 =C2=A0 =C2=A0bank chooser this means providing the issuer URI an=
d an optional<br>
&gt;=C2=A0 =C2=A0 =C2=A0brand ID and both must get registered together. Or,=
 one could<br>
&gt;=C2=A0 =C2=A0 =C2=A0define a standard brand ID (label) for banking oper=
ations and if<br>
&gt;=C2=A0 =C2=A0 =C2=A0the &quot;alternative_authorization_endpoints&quot;=
 is present look for it<br>
&gt;=C2=A0 =C2=A0 =C2=A0in the structure, else fall back to the default<br>
&gt;=C2=A0 =C2=A0 =C2=A0&quot;authorization_endpoint&quot;.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; Here is one possible layout which has IDs =
and UI hints:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; {<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ?...<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ?&quot;alternative_authorization_endpoint=
s&quot;: {<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ?&quot;banking&quot;: {<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ? ?&quot;authorization_endpoint&quot;:<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; &quot;<a href=3D"https://loadsamoney/busin=
ess/auth" rel=3D"noreferrer" target=3D"_blank">https://loadsamoney/business=
/auth</a>&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; ,<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ? ?&quot;description&quot;: &quot;loads=
money business banking customers&quot;,<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ? ?&quot;logo_url&quot;:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; &quot;<a href=3D"https://loadsamoney/busin=
ess/logo.png" rel=3D"noreferrer" target=3D"_blank">https://loadsamoney/busi=
ness/logo.png</a>&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ?},<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ?&quot;personal&quot;: {<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ? ?&quot;authorization_endpoint&quot;:<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; &quot;<a href=3D"https://loadsamoney/consu=
mer/auth" rel=3D"noreferrer" target=3D"_blank">https://loadsamoney/consumer=
/auth</a>&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; ,<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ? ?&quot;description&quot;: &quot;loads=
money personal customers&quot;,<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ? ?&quot;logo_url&quot;:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; &quot;<a href=3D"https://loadsamoney/consu=
mer/logo.png" rel=3D"noreferrer" target=3D"_blank">https://loadsamoney/cons=
umer/logo.png</a>&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ? ?}<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;? ?}<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; }<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt; On 22/05/2020 09:59, Torsten Lodderstedt w=
rote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt; I think an id or label per endpoint se=
t would be needed to<br>
&gt;=C2=A0 =C2=A0 =C2=A0determine the set of endpoints to be used by a cert=
ain client.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt; On the conceptual side, I?m asking mys=
elf how the complete<br>
&gt;=C2=A0 =C2=A0 =C2=A0process is supposed to work. Who is deciding what i=
ssuer/endpoint<br>
&gt;=C2=A0 =C2=A0 =C2=A0set combination to use. I assume in an open banking=
 scenario,<br>
&gt;=C2=A0 =C2=A0 =C2=A0there will always be some kind of bank chooser. Wil=
l this chooser<br>
&gt;=C2=A0 =C2=A0 =C2=A0provide the client with issuer and brand id?<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt; On 22. May 2020, at 08:10, Vladimi=
r Dzhuvinov<br>
&gt;=C2=A0 =C2=A0 =C2=A0&lt;<a href=3D"mailto:vladimir@connect2id.com" targ=
et=3D"_blank">vladimir@connect2id.com</a> &lt;mailto:<a href=3D"mailto:vlad=
imir@connect2id.com" target=3D"_blank">vladimir@connect2id.com</a>&gt;&gt;<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;? wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt; A mapping like the one you propose=
 can definitely work. Since<br>
&gt;=C2=A0 =C2=A0 =C2=A0the user will be making the choice which endpoint t=
o take with the<br>
&gt;=C2=A0 =C2=A0 =C2=A0client app, having the logo_uri is a good idea. If =
the branded<br>
&gt;=C2=A0 =C2=A0 =C2=A0endpoints differ somehow in policy one could also a=
llow inclusion<br>
&gt;=C2=A0 =C2=A0 =C2=A0of the op_policy_uri and op_tos_uri params from Dis=
covery.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0<a href=3D"https://openid.net/specs/openid-connect-=
discovery-1_0.html#IssuerDiscovery" rel=3D"noreferrer" target=3D"_blank">ht=
tps://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery</a=
><br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt; Vladimir<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt; On 20/05/2020 19:16, Joseph Heenan=
 wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; Thanks for your thoughts Vladi=
mir!<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; The client_id based solution I=
 wasn?t previously aware of -<br>
&gt;=C2=A0 =C2=A0 =C2=A0unfortunately it doesn?t solve the problem for app2=
app, as the<br>
&gt;=C2=A0 =C2=A0 =C2=A0mobile OS selects the app to use based purely on th=
e URL (and in<br>
&gt;=C2=A0 =C2=A0 =C2=A0at least the iOS case will not offer the user a cho=
ice if multiple<br>
&gt;=C2=A0 =C2=A0 =C2=A0apps claim to handle the same url).<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; I think some kind of mapping l=
ike you suggest will work and<br>
&gt;=C2=A0 =C2=A0 =C2=A0fallback, I wonder about a structure in the authori=
zation server<br>
&gt;=C2=A0 =C2=A0 =C2=A0metadata something like this:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; {<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ?...<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ?&quot;alternative_authorizat=
ion_endpoints&quot;: [<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ? ?{<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ? ? ?&quot;authorization_endp=
oint&quot;:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; &quot;<a href=3D"https://loads=
amoney/business/auth" rel=3D"noreferrer" target=3D"_blank">https://loadsamo=
ney/business/auth</a>&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; ,<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ? ? ?&quot;description&quot;:=
 &quot;loadsmoney business banking customers&quot;,<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ? ? ?&quot;logo_url&quot;:<br=
>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; &quot;<a href=3D"https://loads=
amoney/business/logo.png" rel=3D"noreferrer" target=3D"_blank">https://load=
samoney/business/logo.png</a>&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ? ?},<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ? ?{<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ? ? ?&quot;authorization_endp=
oint&quot;:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; &quot;<a href=3D"https://loads=
amoney/consumer/auth" rel=3D"noreferrer" target=3D"_blank">https://loadsamo=
ney/consumer/auth</a>&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; ,<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ? ? ?&quot;description&quot;:=
 &quot;loadsmoney personal customers&quot;,<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ? ? ?&quot;logo_url&quot;:<br=
>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; &quot;<a href=3D"https://loads=
amoney/consumer/logo.png" rel=3D"noreferrer" target=3D"_blank">https://load=
samoney/consumer/logo.png</a>&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ? ?}<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;? ?]<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; }<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; And as you say, the existing a=
uthorization_endpoint can be a<br>
&gt;=C2=A0 =C2=A0 =C2=A0fallback for clients that are unaware of the new sp=
ec or prefer<br>
&gt;=C2=A0 =C2=A0 =C2=A0the simpler option of just using a single authoriza=
tion endpoint.<br>
&gt;=C2=A0 =C2=A0 =C2=A0Supporting the new spec would allow a better UX tho=
ugh so there?s<br>
&gt;=C2=A0 =C2=A0 =C2=A0advantages to client to do so.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; Speaking of mTLS, I&#39;m =
not sure how the<br>
&gt;=C2=A0 =C2=A0 =C2=A0&quot;mtls_endpoint_aliases&quot; can be sensibly c=
ombined with the proposed<br>
&gt;=C2=A0 =C2=A0 =C2=A0multi-brand spec.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; I think that particular part i=
s not really an issue as mtls<br>
&gt;=C2=A0 =C2=A0 =C2=A0isn?t used at the authorization endpoint.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; Thanks<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt; Joseph<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; On 20 May 2020, at 16:07, =
Vladimir Dzhuvinov<br>
&gt;=C2=A0 =C2=A0 =C2=A0&lt;<a href=3D"mailto:vladimir@connect2id.com" targ=
et=3D"_blank">vladimir@connect2id.com</a> &lt;mailto:<a href=3D"mailto:vlad=
imir@connect2id.com" target=3D"_blank">vladimir@connect2id.com</a>&gt;&gt;<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;? wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; Hi Dave,<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; In the absence of such a &=
quot;multi-brand&quot; spec we have tackled<br>
&gt;=C2=A0 =C2=A0 =C2=A0this issue in the past by letting the &quot;brand&q=
uot; be encoded in the<br>
&gt;=C2=A0 =C2=A0 =C2=A0client_id. An alternative scenario is to do a &quot=
;brand&quot; lookup by<br>
&gt;=C2=A0 =C2=A0 =C2=A0client_id. Then let the AS render the &quot;branded=
&quot; authZ endpoint.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; You&#39;re probably aware =
the mTLS spec is allowing for<br>
&gt;=C2=A0 =C2=A0 =C2=A0endpoint aliases, so this is not the first time suc=
h as need has<br>
&gt;=C2=A0 =C2=A0 =C2=A0occurred:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"https://tools.i=
etf.org/html/rfc8705#section-5" rel=3D"noreferrer" target=3D"_blank">https:=
//tools.ietf.org/html/rfc8705#section-5</a><br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; One could devise a similar=
 JSON object with mappings<br>
&gt;=C2=A0 =C2=A0 =C2=A0&quot;label&quot; - &quot;authorization_endpoint&qu=
ot;.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; Clients that are aware of =
the new spec will look it up,<br>
&gt;=C2=A0 =C2=A0 =C2=A0those that are not will fall back to the std &quot;=
authorization_endpoint&quot;.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; Speaking of mTLS, I&#39;m =
not sure how the<br>
&gt;=C2=A0 =C2=A0 =C2=A0&quot;mtls_endpoint_aliases&quot; can be sensibly c=
ombined with the proposed<br>
&gt;=C2=A0 =C2=A0 =C2=A0multi-brand spec.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; Vladimir<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt; On 20/05/2020 15:07, Dave =
Tonge wrote:<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; Dear OAuth WG<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; We have an issue in th=
e OpenID FAPI Working Group that we<br>
&gt;=C2=A0 =C2=A0 =C2=A0believe affects the wider OAuth community.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; In summary: what is th=
e recommended approach to discovery<br>
&gt;=C2=A0 =C2=A0 =C2=A0(RFC8414) for Authorization Servers who support mul=
tiple &quot;brands&quot; .<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; If brands are complete=
ly separate, then it seems sensible<br>
&gt;=C2=A0 =C2=A0 =C2=A0that each brand must have its own `issuer` and ther=
efore its own<br>
&gt;=C2=A0 =C2=A0 =C2=A0discovery document at the correct location (i.e. br=
and 1 would<br>
&gt;=C2=A0 =C2=A0 =C2=A0have an issuer of<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; &quot;<a href=3D"https=
://as/brand1" rel=3D"noreferrer" target=3D"_blank">https://as/brand1</a>&qu=
ot; and a discovery document available at?<br>
&gt;=C2=A0 =C2=A0 =C2=A0<a href=3D"https://as/.well-known/oauth-authorizati=
on-server/brand1" rel=3D"noreferrer" target=3D"_blank">https://as/.well-kno=
wn/oauth-authorization-server/brand1</a><br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; ).<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; However in the real wo=
rld it is not always so simple. We<br>
&gt;=C2=A0 =C2=A0 =C2=A0have many existing implementations in UK open banki=
ng that support<br>
&gt;=C2=A0 =C2=A0 =C2=A0multiple authorization endpoints. Here is an exampl=
e (thanks to<br>
&gt;=C2=A0 =C2=A0 =C2=A0@Joseph Heenan )<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Bank ?loadsamoney?=
 has one idp and, for internet banking,<br>
&gt;=C2=A0 =C2=A0 =C2=A0one ?login page? for both business and personal cus=
tomers.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; They have separate=
 mobile apps for business/personal, and<br>
&gt;=C2=A0 =C2=A0 =C2=A0are required to support app2app. This means they wi=
ll definitely<br>
&gt;=C2=A0 =C2=A0 =C2=A0be exposing multiple authorization endpoints (as th=
ere?s a 1:1<br>
&gt;=C2=A0 =C2=A0 =C2=A0mapping of authorization endpoints to mobile apps) =
- the choice is<br>
&gt;=C2=A0 =C2=A0 =C2=A0how they do this.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Their choices are:=
<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1. Multiple discov=
ery endpoints (one for business, one<br>
&gt;=C2=A0 =C2=A0 =C2=A0for personal), each with a different authorization =
endpoint,<br>
&gt;=C2=A0 =C2=A0 =C2=A0multiple issuers (if their vendor allows this)<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2. Single discover=
y endpoint, single issuer, multiple<br>
&gt;=C2=A0 =C2=A0 =C2=A0authorization endpoints listed in one discovery doc=
 (one for<br>
&gt;=C2=A0 =C2=A0 =C2=A0business, one for personal) some of which are hardc=
oded by the 3rd<br>
&gt;=C2=A0 =C2=A0 =C2=A0party<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 3. Multiple discov=
ery endpoints each with a different<br>
&gt;=C2=A0 =C2=A0 =C2=A0authorization endpoint, same issuer in all cases (b=
reaks RFC8414<br>
&gt;=C2=A0 =C2=A0 =C2=A0and OIDC Discovery)<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; Option 3 is invalid an=
d that leaves us with options 1 and 2.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; Option 1 can be proble=
matic as often it is in reality the<br>
&gt;=C2=A0 =C2=A0 =C2=A0same `issuer` behind the scenes.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; We would like to get f=
eedback on this issue and<br>
&gt;=C2=A0 =C2=A0 =C2=A0potentially an extension to RFC8414 to allow the de=
finition of<br>
&gt;=C2=A0 =C2=A0 =C2=A0multiple authorization endpoints.<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; Thanks in advance<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; Dave Tonge<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; Co-Chair FAPI WG<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt; Open ID Foundation<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt; --<br>
&gt;=C2=A0 =C2=A0 =C2=A0&gt;&gt;&gt;&gt; Vladimir Dzhuvinov<br>
&gt;</blockquote></div><div><br></div>-- <br><div dir=3D"ltr"><div dir=3D"l=
tr"><div><div dir=3D"ltr"><div><div dir=3D"ltr"><div><div dir=3D"ltr"><div>=
<div>Francis Pouatcha</div><div>Co-Founder and Technical Lead at adorys</di=
v><div><a href=3D"https://adorsys-platform.de/solutions/" target=3D"_blank"=
>https://adorsys-platform.de/solutions/</a></div></div></div></div></div></=
div></div></div></div></div></div>
_______________________________________________<br>
OAuth mailing list<br>
<a href=3D"mailto:OAuth@ietf.org" target=3D"_blank">OAuth@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/oauth" rel=3D"noreferrer" =
target=3D"_blank">https://www.ietf.org/mailman/listinfo/oauth</a><br>
</blockquote></div><br clear=3D"all"><div><br></div>-- <br><div dir=3D"ltr"=
><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div d=
ir=3D"ltr"><div dir=3D"ltr"><div style=3D"font-size:1em;font-weight:bold;li=
ne-height:1.4"><div style=3D"color:rgb(97,97,97);font-family:&quot;Open San=
s&quot;;font-size:14px;font-weight:normal;line-height:21px"><div style=3D"f=
ont-family:Arial,Helvetica,sans-serif;font-size:0.925em;line-height:1.4;col=
or:rgb(220,41,30);font-weight:bold"><div style=3D"font-size:14px;font-weigh=
t:normal;color:rgb(51,51,51);font-family:lato,&quot;open sans&quot;,arial,s=
ans-serif;line-height:normal"><div style=3D"color:rgb(0,164,183);font-weigh=
t:bold;font-size:1em;line-height:1.4"><div style=3D"font-weight:400;color:r=
gb(51,51,51);line-height:normal"><div style=3D"color:rgb(0,164,183);font-we=
ight:bold;font-size:1em;line-height:1.4"><br></div></div></div></div></div>=
</div></div></div></div></div></div></div></div></div>
</div>

--00000000000035f71e05a72e0f2b--

