-
Notifications
You must be signed in to change notification settings - Fork 34
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
Document when FE flow is applicable with regards to involved devices #256
base: main
Are you sure you want to change the base?
Changes from all commits
235b570
c55cebf
b26eb5b
0572372
5813965
e0b5efe
cc4cfbe
c92703c
fd508c1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -58,6 +58,7 @@ The list below introduces several key concepts: | |
- `Resource Server`: the server that exposes protected resources to Applications. The Resource Server requires a valid access token to be provided before allowing access to the protected resource. | ||
- `Scope`: the OpenID Connect scope which maps one or more protected resources, some scopes may require processing of Personal Data. | ||
- `Subscriber`: the mobile subscriber of the Operator. The Subscriber is usually also the End-User, but this is not always the case. For example, a parent may be the Subscriber of a mobile subscription for their child, the End-User. | ||
- `Target Device`: the device that is the primary resource (target) affected by an API call, and for which Consent may need to be obtained from the Resource Owner. | ||
- `Three-Legged Access Token`: an access token that involves three parties: the Resource Owner (User), the Authorization Server (operated by the Operator or Aggregator), and the client (the ASP's Application). In CAMARA, Three-Legged Access Tokens are typically created using the OIDC Authorization Code flow or Client-Initiated Backchannel Authentication (CIBA) flow. | ||
- `Two-Legged Access Token`: an access token that involves two parties, the Authorization Server (operated by the Operator or Aggregator), and the client (the ASP's Application); the Two-Legged Access Token does not include a Resource Owner (User). The Authorization Server does not autenticate a User, nor can User Consent be captured or validated for Two-Legged Access Tokens; therefore Two-Legged Access Tokens must only be used for CAMARA APIs that do not process Personal Data. | ||
|
||
|
@@ -84,6 +85,7 @@ This section describes the authorization flows that can be used to access CAMARA | |
Note: In cases where Personal Data is processed by a CAMARA API, and Users can exercise their rights through mechanisms such as opt-in and/or opt-out, the use of Three-Legged Access Tokens is mandatory. | ||
|
||
#### Authorization Code Flow (Frontend Flow) | ||
The Authorization Code Flow is only applicable if the Consumption Device that initiates the process of obtaining a Three-Legged Access Token from the Authorization Server is also the Target Device of the intended CAMARA API call(s). | ||
Comment on lines
87
to
+88
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The applicability of the Authorization Code Flow is described in the Something like...
|
||
|
||
```mermaid | ||
sequenceDiagram | ||
|
@@ -180,12 +182,14 @@ The Application on the Consumption Device must be able to handle browser redirec | |
- Check if User Consent is required as the lawful basis associated with the declared Scope and Purpose. | ||
- If necessary, it will be checked in the operator's consent master whether user consent has already been given to the application for the user identifier and declared purpose. | ||
- If NOT granted, the operator performs the consent capture. Since the authorization code grant involves the interaction with application front-end, consent can be captured directly from the user through the application browser. | ||
- Covered scenarios: | ||
- Covered scenarios: | ||
- On-net (with mobile connection) & application front-end (with embedded browser) | ||
- Off-net scenarios using refresh_token, as long as there was a connection when the first access_token was requested. | ||
- Note: The Consumption Device must be equal to the Target Device of subsequent API call(s). | ||
|
||
|
||
#### CIBA flow (Backend flow) | ||
The CIBA flow is applicable if the Consumption Device is equal to or different from the Target Device of the intended CAMARA API call(s). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. CIBA is necessary if Consumption Device and Authentication Device are different. If Consumption Device and Authentication Device are the same, then OIDC Authentication Code Flow SHOULD be used. The API Provider MUST send a message to the authentication device, identified by login_hint, because otherwise there would be no authentication at all. Note: In cases where personal data is processed by the API and users can exercise their rights through mechanisms such as opt-in and/or opt-out, the use of three-legged access tokens is mandatory. This ensures that the API remains in compliance with privacy regulations, upholding the principles of transparency and user-centric privacy-by-design. User consent cannot be checked based on the login_hint value alone and without sending a message, because then CIBA would be a two-legged flow while according the the note above a three-legged flow is mandatory. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Relation between consumption device and authentication device:
The API invoker cannot know whether consumption device and authentication device are different. The API invoker in general has no awareness at all about authentication devices. The API invoker only knows the target device and potentially also the consumption device. Who is the legal responsbile (authorization device) of the target device is only known to the backend - the telco operator. The OIDC Authentication Code Flow protocol does not foresee to communicate whether the consumption device is the authentication device or not. It would be beneficial to get this information in the response, but this is not the case today. CIBA flow:
Comment on lines
191
to
+192
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The applicability of the CIBA Flow is described in the Something like...
|
||
|
||
```mermaid | ||
sequenceDiagram | ||
|
@@ -282,12 +286,13 @@ If some use case(s) for an API point to "Off-net" scenarios and where Consumptio | |
- Check if user consent is required by lawful basis associated with the declared purpose. | ||
- If necessary, it will be checked **in the operator's consent master** whether user consent has already been given to the application for the user identifier and declared purpose. | ||
- If NOT granted, **the operator’s consent capture procedure is triggered**. Out-of-band consent capture as part of asynchronous CIBA flow (e.g. push notification with fallback to SMS, etc...). **Operators can choose the consent capture mechanism that best suits their capabilities, preferences and needs**. | ||
- Covered scenarios: | ||
- Covered scenarios: | ||
- No front-end developer software in user device | ||
- Back-end services (e.g. bank BE anti-fraud validation using MSISDN). | ||
- Off-net scenarios (no mobile connection) | ||
- Device connected to WiFi | ||
- Device without UI (IoT) | ||
- Note: Consumption device and target device of subsequent API call(s) can be different, access token is generated for the target device | ||
jpengar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
#### Client Credentials | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps we should also add a definition of an
Authentication Device
. The one in the CIBA standard looks good to me:The device on which the user will authenticate/authorize the request, often a smartphone.
Ref: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#terminology