The first case looks better to me as well. It would require a chooser that 
provides both the issuer url and the brand id. 

BTW: I would prefer a more generic term in order to facilitate other use cases. 
I think it could be useful to have a discriminator for selecting a set of 
endpoints. For example, an AS could then support different versions or flavours 
of OAuth/OpenID in the same deployment. Just thinking aloud :-)

> On 22. May 2020, at 10:32, Joseph Heenan <[email protected]> wrote:
> 
> Thanks Vladimir/Torsten.
> 
> I agree, it would make sense to have some form of static id for each entry. 
> My first attempt started out similar but for some reason I decided to 
> simplify…
> 
> On the conceptual side for choosers (and biased towards how the UK 
> openbanking ecosystem works as that’s what I know best), what this allows for 
> is:
> 
> client chooser -> authorisation endpoint
> 
> Where the list is:
> 
> “Bank a”
> “Loadsamoney personal”
> “Loadsamoney business”
> “Bank c"
> 
> 
> Instead of the only ’standards compliant’ way to do app2app in this case 
> today of:
> 
> client chooser -> AS interstitial chooser on authorization endpoint -> real 
> authorization endpoint
> 
> Where the first chooser is:
> 
> “Bank a”
> “Loadsamoney”
> “Bank c”
> 
> And the second:
> 
> “Personal"
> “Business"
> 
> The first case is much better, particularly for the real multi-brand case 
> where the end user might not even associate the two bank brandnames with each 
> other.
> 
> What actually happens today is the first case (single RP chooser), but based 
> on banks emailing around lists of alternative authorization endpoints to the 
> RP, or publishing the details on obscure developer portals - which destroys 
> much of the convenience / agility / security the server metadata RFC was 
> trying achieve.
> 
> The issue of how the RP finds the server metadata document is unchanged from 
> today. (In the UK, we have a centralised directory that lists them.)
> 
> Joseph
> 
> 
> 
>> On 22 May 2020, at 08:52, Vladimir Dzhuvinov <[email protected]> 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 <[email protected]>
>>>>  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 <[email protected]>
>>>>>>  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
>>>> 
>>>> _______________________________________________
>>>> OAuth mailing list
>>>> 
>>>> [email protected]
>>>> https://www.ietf.org/mailman/listinfo/oauth
>> -- 
>> Vladimir Dzhuvinov
>> 
> 

_______________________________________________
OAuth mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to