-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replace Frontend Flow to unify consent collection and reduce latency #197
Comments
Please see https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics#name-implicit-grant
Does your proposal address the concerns raised by OAuth 2.0 Security Best Current Practice?
I do not see how your proposal implements "freely given, specific, informed and unambiguous" better than authorization code flow. The user credentials at the CSP can easily be stolen in a javascript-based webview inside a mobile app. I see that doing user consent "right", secure and GDPR compliant, leads to flows that mobile app product owners do not like. |
|
I agree on the process to unify or standardize consent collection. However, the problem statement is still not clear to me. Could you please explain it with details?
Few related topics to this issue:
|
Some comments from my side:
|
Lots of comments to respond to :D Some of the intricacies of the pain points are true only when there's an aggregator involved. On Redirects: An aggregator cannot expose access tokens provided by a CSP to the ASP, as this would allow the ASP to circumvent the aggregator for the resource APIs; as such, an aggregator must issue their own access tokens. In order to achieve this, the aggregator must be part of the Authorization Code Flow's redirects to capture the The Implicit Flow does not require the aggregator to be present in the redirects, as the On Consent Collection
ASPs are very proud of their applications and their user experience, they will not use an API which forces every login journey to be disrupted. ASPs are not looking for a Google/Meta/etc. experience, they are not using the CSP as their identity provider, only to augment and secure their platform; displaying a browser window (even within their application) is generally not acceptable during the login process. The vast majority of CSPs and regulatory areas will not require consent collection for login (fraud prevention) purposes, so loading a browser window inside their application for the exception is a serious pitfall - instead they are calling the authorization endpoint from an API client (which will never launch a browser window, and will not allow for consent collection in this flow). There will be a time where the ASP will have to prepare the end-user for potential consent-collection and disruption to the UX, but it is not every time that they log in.
I don't think this would be true in practice, the minimum
The identity of the end-user device is captured at the moment
The |
The redirection to the aggregator in the implicit flow will be necessary anyway. The application would need to know which operator to forward the IP authentication request to, and as far as I know, only the aggregators have access to that information. Regarding authentication/authorization decoupling, you acknowledge that there is a risk, and to mitigate it, you transfer certain responsibilities to the application. This means that the operator is not verifying the number and capturing consent in a 100% secure way. The |
If you ask me, I think CAMARA should stick to the existing standard solution based on Auth Code flow. And continue to work on issues like #145 for using a standard solution for an Operator Token. Which seems to me to be the right solution for this and a solution that guarantees privacy and security (based on EAP-AKA, Entitlement Server, etc...). Since I have similar concerns about the proposed alternative to those raised by @garciasolero above. |
#145 is absolutely the way to go to obtain a non-trackable identity (carrier) token longer term (rather than Implicit Flow) that can then be used to obtain an access token, but AFAIK it also will not provide a way of collecting consent from the Operator before returning the identity. |
What does "returning the identity" mean? How consent is collected is not specified in any protocol or flow. OIDC assumes a web-page for consent collection presented by the openid provider to the authenticated user. What do people in this thread mean by "implicit flow"? Just to be sure, do you mean OAuth2 implicit grant? You know that implicit flow has severe security drawbacks, right? Clients should use OIDC authorization code flow with PKCE instead. Are our current or expected clients using implicit flow? Are we assuming they use implicit flow? |
I still don't see what "Different to all other CAMARA APIs, consent collection in the frontend flow" means. OIDC is not a Camara API. OIDC and CIBA and client credentials flow are no Camara network API. |
The proposal refers to the OIDC Implicit Flow, with only As I mentioned earlier, I think the main problem lies in combining this flow with the CIBA flow and postponing the user's consent to later stages. Without user interaction, personal information is already returned to the application in the |
This proposal was intended to remove the Authorisation Code Flow because it requires too many redirects from the end-user device, which have proved to be far too slow for ASPs in practice. |
Problem description
The frontend flow uses a completely different mechanism for consent collection than all other CAMARA APIs (that use CIBA). Including consent capture within the frontend flow is also difficult/impossible to implement in practice, as the ASP loads the authorization URL within an API client, rather than in a browser. The frontend flow is also proving to be very slow due to the number of redirects over the mobile network that are required to generate an
auth_code
.Possible evolution
Ideally we want a single way of collecting consent across all APIs, this would likely be using the CIBA flow.
The identity of the end-user for CIBA APIs is currently provided using a
login_hint
. In order to support 'frontend' use cases where the end-user's identity needs to be guaranteed we can use a cryptographically secureid_token
, supplied to CIBA using theid_token_hint
parameter.Obtaining the
id_token
can be achieved using the OIDC Implicit Flow (with strictresponse_type
ofid_token
ONLY) - otherresponse_type
s MUST NOT be used.As already proposed for the Frontend Flow, the Implicit Flow can also be extended to use signed requests to ensure the call has been requested by a registered application - this along with state/nonce parameters have been left out for brevity.
The text was updated successfully, but these errors were encountered: