To ensure security of the interfaces between CAPIF entities within a trusted domain, namely CAPIF-3, CAPIF-4, CAPIF-5, and CAPIF-6:
TLS shall be used to provide integrity protection, replay protection and confidentiality protection. The support of TLS is mandatory. Security profiles for TLS implementation and usage shall follow the provisions given in TS 33.310, Annex E.
Certificate based mutual authentication shall be performed between the CAPIF entities using TLS. Certificate based authentication shall follow the profiles given in clauses 6.1.3a and 6.1.4a of TS 33.310. The structure of the PKI used for the certificate is out of scope of the present document.
As specified in TS 23.222, the CAPIF core function shall receive updates to AEF authentication and authorization method from API publishing function. In case that the AEF updates its authentication and authorization method and API invoker uses the old authentication and authorization method to invoke the service API, the AEF shall send a failure response to the API invoker with an indicator that indicates the authentication and authorization method used by the API invoker is incorrect. The API invoker shall contact the CAPIF core function to get the updated authentication and authorization method. Then the API invoker shall invoke the service API using the updated authentication and authorization method.
The API invoker shall send Offboard API invoker request message to the CAPIF core function, including the CAPIF core function specific API invoker ID which was assigned by the CAPIF core function during the onboarding procedure.
The CAPIF core function shall verify the API invoker ID received in step 2 and check that the corresponding profile exists for this API invoker. With successful verification of the API invoker ID and its profile, the CAPIF core function shall cancel the enrolment of the API invoker and delete the API invoker profile. This includes deletion of API invoker certificate, service API authentication and authorization information, and onboard secret (if applicable). Depending on the operator policy, the CAPIF core function may retain the information of the offboarded API invoker.
The API invoker shall delete the information, such as API invoker ID, Service API authentication / authorization information, API invoker certificate, Onboard_Secret (if applicable).
The API exposing function shall delete the security related information associated with this API invoker depending on the method that was used previously to authenticate the API invoker, e.g. AEF PSK (TLS-PSK method as described in subclause 6.5.2.1), root certificate to validate the API invoker certificate (PKI method as described in subclause 6.5.2.2), access token (OAuth 2.0 method as described in subclause 6.5.2.3 of the present document, respectively).
The API exposing function shall return Event notification acknowledge message to indicate that the security related information associated with this API invoker is successfully deleted and thus the API invoker no longer an acknowledged user.
To ensure security of the interfaces between API Exposing functions (Topology hiding entities and destination AEF handling service APIs), namely CAPIF-7 and CAPIF-7e:
Security procedures as specified in clause 6.4 of this specification for CAPIF-2 reference point shall be used for secure communication, authentication and authorization, between the AEFs belonging to same trust domain over CAPIF-7 reference point.
Security procedures as specified in the clause 6.5 of this specification for CAPIF-2e reference point shall be used for secure communication, authentication and authorization, between the AEFs belonging to different trust domains over CAPIF-7e reference point.
To ensure security of the interfaces between CAPIF entities between different trusted domains (CCF domain and API Provider Domain), namely CAPIF-3e, CAPIF-4e, CAPIF-5e, and CAPIF-6e:
TS 33.210 shall be applied to secure messages on the reference points unless specified otherwise; and
TS 33.310 may be applied regarding the use of certificates with the security mechanisms of TS 33.210 unless otherwise specified in the present document.
SEG as specified in TS 33.210 may be used in the trusted domain to terminate the IPsec tunnel.
TLS shall be used to provide integrity protection, replay protection and confidentiality protection.
Authentication of CCF shall be based on the CCF's certificates following the profiles specified in clauses 6.1.3a and 6.1.4a of TS 33.310.
Authentication of ROF is left to implementation.
The authorization function shall support finer level authorization as specified in TS 23.222. In both RNAA and non-RNAA scenarios, finer level service API access authorization can be used to limit access to specific services, specific service operations and/or resources.
To enable finer level service API access, the authorization request or access token request (from API invoker to the CCF/Authorization Server) includes the requested service, service operations and/or resource(s) at the respective granularity. For RNAA, the request may also include the resource owner ID.
If the API invoker is authorized, the CCF responds to the API invoker with an access token including finer level authorization information, or an authorization code.
The following procedures are adapted to support finer level authorization:
Clause 6.5.3.2 on Authorization using OAuth client credential flow:
The access token request message may also include details on finer level authorization.
Clause 6.5.3.3 on Authorization using authorization code (optional PKCE) flow:
The authorization request may also include finer level authorization information.
The CCF shall also check the finer level authorization if included in the request.
The CAPIF provider A and CAPIF provider B host the CAPIF in their trust domains as specified in clause 6.2.2 of TS 23.222. The designated CAPIF core function of the CAPIF provider A interconnects with the designated CAPIF core function of the CAPIF provider B over CAPIF-6/6e interface.
The following clauses 6.13.2 and 6.13.3 details security aspects of the scenario where, the API invoker is onboarded to CCF-B of the CAPIF provider B and the target AEF is registered to CCF-A of CAPIF provider A.
For security method negotiation procedure in CAPIF interconnection, clause 6.3.1.2 shall be followed with the following enhancement:
The API invoker shall send the security method request to the CCF-B.
In case where CCF-B is in possession of the security method(s) as specified in clause 8.25.3.1 of TS 23.222, CCF-B shall select a security method to be used over CAPIF-2/2e reference point for each AEF based on the access scenarios and AEF capabilities.
In case where CCF-B is not in possession of the security method(s), based on the AEF details received from the API invoker, CCF-B identifies the CCF-A where the AEF is registered and sends the request to CCF-A to either get the supported list of security method(s) of AEF or to get a selected security method. The request to CCF-A shall include AEF details and may include the API invoker ID and security method supported by API invoker (e.g., to enable CCF-A to select the security method). The CCF-A shall provide to CCF-B either the list of supported security methods of AEF or the selected security method. If the list of supported security methods of AEF is received, the CCF-B shall select a security method to be used over CAPIF-2/2e reference point for each AEF based on the access scenarios and AEF capabilities.
The CCF-B shall send Security Method Response message to the API invoker indicating the selected security method for each AEF.
For the authentication and authorization between the API invoker onboarded to CCF-B in CAPIF provider B and AEF registered to the CCF-A in CAPIF provider A, the procedures as defined in clause 6.5.2 shall be followed with the enhancements as specified in this clause.
The API invoker in CAPIF provider domain B shall include the API invoker ID in the authentication initiation request message sent to the target AEF in CAPIF provider domain A for CAPIF interconnection.
Based on the AEF details available at the API invoker, which indicates the AEF belongs to CCF-A, the authentication initiation request message shall include the information for identification of the CCF-B.
The AEF in CAPIF provider domain shall request for security information (AEFPSK) from CCF-A to perform authentication and secure connection establishment with the API invoker, if the AEF does not have a security information. The request shall include the API invoker ID and the CCF-B ID (if received from the API invoker).
When CCF-A receives the request message for security information from the AEF, CCF-A fetches the security information related to the chosen security method (TLS-PSK: AEFPSK), based on API invoker ID and CCF-B ID.
If the CCF-A does not have security information of the API invoker locally available, CCF-A shall request the security information from CCF-B over CAPIF-6/6e reference point based on the received API invoker ID, and the available AEF details (including the service API interface information). The CCF-B shall provide the TLS-PSK related security information (AEFPSK) to CCF-A.
The CCF-A shall provide the received security information to the AEF.
After sending the authentication initiation response, API invoker in CAPIF provider domain B and AEF in CAPIF provider domain A establish a TLS connection using the security information obtained.
After successful authentication of API invoker and AEF, the AEF shall authorize the API invoker's service API invocation request based on authorization information obtained from CCF-A. If CCF-A does not have sufficient information for authorization, CCF-A shall fetch additional information related to the API invoker from CCF-B based on the business relationship.
The API invoker onboarded to CCF-B and the AEF registered to CCF-A shall follow the procedure in subclause 6.13.3.1 with the following adaptation to establish dedicated secure session over CAPIF-2e using TLS based on certificate based mutual authentication.
For fetching the security information related to the chosen security method (TLS-PKI) the CCF-B includes only the API invoker ID.
The CCF-B shall provide the security information (API invoker's root CA certificate) to the AEF via CCF-A, for allowing the AEF to validate the API invoker's certificate.
The API invoker shall send the access token request message to the onboarded CCF-B, CCF-B determines that the service API requested is provided by the AEFs in CAPIF provider domain A. In interconnection scenario, the parameter 'scope' in Access token request message is required.
The CCF-B sends the access token request message to the CCF in CAPIF provider domain A with the information as specified in Annex C.3.2. In interconnection scenario, the Onboard_secret is not included in the access token request message to the CCF-A. The CCF-A generates and provides an access token and returns it in an Access Token Response message to the API invoker via CCF-B as specified in clause 6.5.2.3.
On CAPIF-2e, the API invoker authenticates to the AEF by establishing a TLS session with the AEF as specified in clause 6.13.3.1 or 6.13.3.2.
With successful authentication to the AEF on CAPIF-2e, the API invoker shall initiate invocation of a 3GPP northbound API with the AEF including the access token in northbound API invocation request as per OAuth 2.0. The AEF verifies the integrity of the access token by verifying the CCF's signature to validate the access permission for the requested service API as specified in clause 6.5.2.3.
The nested API invocation scenario is a scenario where an API invocation towards a first API exposing function (AEF-1) triggers that this API exposing function (AEF-1) requests an API invocation towards a second API exposing function (AEF-2), i.e., AEF-1 becomes API Invoker towards AEF-2. Both belong to the same API provider domain. In this scenario, the CAPIF may reduce the authorization information inquiries for a nested API invocation using procedure described in this clause.
The authorization of API invocation triggered towards the second API exposing function uses token exchange procedure as specified in RFC 8693, where the access token of the API invoker to be used towards AEF-1 is used as the subject token as per the RFC 8693. AEF-1 before triggering API invocation towards AEF-2, invokes the token exchange request towards the CCF by sending the subject token to receive a new access token. AEF-1 uses the received new access token towards AEF-2 for nested API invocation.
AEF-1 sends a token exchange request message to CCF, to get a token to invoke the service API in AEF-2. The token exchange request message contains grant_type, the access token as the subject_token, optionally an actor_token, and optionally scope for the desired scope of the requested token. The grant-type is set as the token-exchange.
The CCF validates whether the requesting AEF-1 is allowed for accessing the requested service API of AEF-2. Also, the CCF validates the access token in the request message that is provided by the API invoker to AEF-1. After successful validation, the CCF generates a new access token to allow AEF-1 to invoke the service API on AEF-2. The CCF checks whether the received token is an RNAA token and if so issues the new token as an RNAA token which includes the AEF ID in the (act) actor claim optionally, the API invoker ID, the resource owner ID and the scope, in addition to the standard access token claims as specified in clause C.2.2. The CCF responds to AEF-1 with the token exchange response message including the newly issued access token and optionally the scope (if required) for service API invocation on AEF-2.
AEF-2 checks whether the API invoker is authorized to invoke the requested service API based on the received token and if allowed, AEF-2 sends a service API invocation response.