[Openid-specs-mobile-profile] UQ critique by Tom Jones FW: [Openid-specs-fapi] Initial review of MODRNA Client initiated Backchannel Authentication Flow 1.0
Axel.Nennker at telekom.de
Axel.Nennker at telekom.de
Fri May 26 15:56:06 UTC 2017
Below some harsh but unspecific critique on our UQ spec by an FAPI member.
From: Openid-specs-fapi [mailto:openid-specs-fapi-bounces at lists.openid.net] On Behalf Of Tom Jones via Openid-specs-fapi
Sent: Freitag, 26. Mai 2017 17:45
To: Dave Tonge <dave.tonge at momentumft.co.uk>; Financial API Working Group List <openid-specs-fapi at lists.openid.net>
Subject: Re: [Openid-specs-fapi] Initial review of MODRNA Client initiated Backchannel Authentication Flow 1.0
I don't believe that the questioning spec meets any of:
1. its own requirements, e.g. non-repudiation
2. strong ID of the client, the OP, the end user or the user agent are not specified.
3. So far as I can tell the acr that it does use requires a level of sophistication by the user that is not even conceivable e. g. "Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific" (from OpenID Connect core).
4. The end user's consent to the questioning process is not even considered as important, let alone solved.
5. Since the spec doesn't deal with strong IDs, I doubt it should even have been approved by Open ID in the first place.
On Fri, May 26, 2017 at 3:59 AM, Dave Tonge via Openid-specs-fapi <openid-specs-fapi at lists.openid.net<mailto:openid-specs-fapi at lists.openid.net>> wrote:
We discussed on the last call that it would be good to review the MODRNA backchannel auth and user questioning specs from a FAPI perspective.
I've started to go through them both and here are my initial thoughts on the Backchannel Authentication spec<http://openid.net/specs/openid-connect-modrna-client-initiated-backchannel-authentication-1_0.html#rfc.section.4.1>:
The definition for Consumption Device states that it is “most probably a browser”. It is envisaged that this will often not be the case, for payment APIs, e.g. the flow could be initiated via a POS device.
Spelling mistake - “inmediatly” -> “immediately”
4.1 Authentication Request
Client Authentication - this should be restricted to the methods listed in FAPI (i.e. private_key_jwt or MTLS)
Client_notification_token - this is a bearer token used by the OP when notifying the client via the `client_notification_endpoint`. In the FAPI spec we are moving away from bearer tokens to either sender contained tokens or OATB tokens. While this token is used for OP -> client rather than client -> OP should we still consider constraining the tokens?
A simpler approach may be to ensure that the OP signs any payload sent to the `client_notification_endpoint`. Currently, these payloads (error or success) are plain JSON payloads. The success payload contains an `id_token`, but this token contains claims about the identity of the user rather than acting as a detached signature for the access token (and refresh token)
Binding_message - as I understand it the binding message is shown to the user on both the consumption and the authentication device. The spec then relies on the user checking that both messages are the same. If the spec were to be used for payments then I would suggest that the binding message is shown on the consumption device and entered by the user on the authentication device. This would be more secure than relying on the user to cross-check both messages are the same.
For example, this spec could be used to support bank payments at a petrol station - the user could enter their phone number into the POS device, they would then receive a notification from their banking app asking them to authorise a payment. However what is to prevent someone entering the user’s phone number at the same time at the same petrol station when paying for fuel of the same amount. If the POS device displayed a 6 digit pin to the user, and the user entered that pin as part of the authorization flow in their banking app, then all parties would have a higher degree of confidence about the transaction.
The binding message should be required and not optional for payments.
4.2.1 Authentication Request Validation
The authentication request is a plain JSON payload, but because this is happening over a channel protected by client authentication this should be sufficient.
5. OpenID Provider Obtains End-user Consent/Authorization
The spec is focussed on user authentication rather than a user authorising a specific action, e.g. making a payment. The wording in this section could be confusing to those implementing it for a financial API.
In order to support fine-grained authorisation, the spec would need to support the OIDC claims parameter and guidance would need to be provided to implementers on example flows for payments and account information access.
6.1 Token Request Using Polling Mechanism
The spec should refer back to OIDC Core - 3.1.3 - token endpoint - as all the verification steps described there should be performed.
In addition, it should be made clear in the spec that the `auth_req_id` MUST be bound to the client to which it was issued. At the moment it would seem that any client could send any `auth_req_id`.
6.2 Successful Token Polling Response
To conform with FAPI, the tokens returned in this response should be bound to the client either using MTLS or OATB.
6.3.1 Succesful Token Notification
As per the notes on client_notification_token, I suggest that this payload is signed to ensure source authentication and integrity.
· No mention of what happens if the client notification endpoint is down (e.g. retries)
* No mention of what acknowledgement the client should give to the OP when it receives a notification
I believe that this spec could be useful for Financial APIs, however, it is more coupled to OIDC than the current FAPI drafts. It could be that we have to draft a new part to the FAPI spec that references this spec, but is more in line with the rest of the FAPI draft and geared towards the use-case of financial APIs.
I have started a review of the user questioning API and will send that to the list shortly. However, on initial inspection, it doesn't result in access tokens being issued to the client and would, therefore, be unsuitable for "account information" access.
This was my first review of the MODRNA specs and I may well have misinterpreted some of the specs. I hope that members of this group or are also members of the MODRNA group will help to correct any mistakes I may have made.
10 Temple Back, Bristol, BS1 6FL
t: +44 (0)117 280 5120<tel:+44%20117%20280%205120>
Moneyhub Enterprise is a trading style of Momentum Financial Technology Limited which is authorised and regulated by the Financial Conduct Authority ("FCA"). Momentum Financial Technology is entered on the Financial Services Register (FRN 561538) at fca.org.uk/register<http://fca.org.uk/register>. Momentum Financial Technology is registered in England & Wales, company registration number 06909772 © . Momentum Financial Technology Limited 2016. DISCLAIMER: This email (including any attachments) is subject to copyright, and the information in it is confidential. Use of this email or of any information in it other than by the addressee is unauthorised and unlawful. Whilst reasonable efforts are made to ensure that any attachments are virus-free, it is the recipient's sole responsibility to scan all attachments for viruses. All calls and emails to and from this company may be monitored and recorded for legitimate purposes relating to this company's business. Any opinions expressed in this email (or in any attachments) are those of the author and do not necessarily represent the opinions of Momentum Financial Technology Limited or of any other group company.
Openid-specs-fapi mailing list
Openid-specs-fapi at lists.openid.net<mailto:Openid-specs-fapi at lists.openid.net>
-------------- next part --------------
An HTML attachment was scrubbed...
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
More information about the Openid-specs-mobile-profile