Number Verification (0.3.1)

Service Enabling Network Function API to verify that the provided mobile phone number is the one used in the device. It verifies that the user is using a device with the same mobile phone number as it is declared. It also makes it possible for a Service provider to verify the number itself by returning the phone number associated to the authenticated user's access token.

In this API phone number term refers to the mobile phone number

API Functionality

This enables a Service Provider (SP) to verify the phone number of the mobile device being used to access their service where the mobile device is accessing the service provider over a mobile network (WiFi connections are out of this API scope). This can happen either by getting the comparison result or receiving the phone number of the device that is used, so they can verify it themselves.

Resources and Operations overview

This API currently provides two endpoints where both require a 3-legged token and authentication via mobile network (excluding for example by SMS/OTP or user/password as an authentication method):

  • The first one checks if the user mobile phone number matches the phone number associated with the mobile device. It can receive either a hashed or a plain text phone number as input and it compares the received input with the authenticated user's phone number associated to the access token in order to respond true/false.
  • The next one retrieves the phone number associated to the user's token and returns it so the verification can be made by the service provider.

Sequence Diagram

Number Verification API uses the standard OAuth2 Authorization Code grant. The following diagram will help to clarify the end-to-end process, including previous steps prior to this API call.

UML Sequence Diagram

Additional details:

  • (1): Authentication must be automatic without any user interactions. Authentication methods such as SMS OTP or user/password are incompatible, as the goal is to validate the mobile phone number that is accessing the App. So it is required to be authentication via mobile network and without the user being involved. the use of parameter prompt=none, as described in OIDC Connect, ensures no user interaction.

  • (2): The way in which the phone_number is retrieved depends on the implementation. For example, access token may be a self contained encrypted JWT, so API can decrypt and identify phone_number. Some other implementations might request the phone_number associated to the token from Authserver.

Languages
Servers
Mock server
https://developers.opgw.u.com.my/_mock/number-verification/number_verification/
Sandbox server (uses test data)
https://api-sandbox.opgw.u.com.my/number-verification-service/number-verification/v0/

Phone number verify

API operation to verify a phone number received as input. It can be received either in plain text or hashed format.

Operations

Verifies if the received hashed/plain text phone number matches the phone number associated with the access token

Request

Verifies if the specified phone number (plain text or hashed format) matches the one that the user is currently using.

  • The number verification will be done for the user that has authenticated via mobile network and so their sub is in the access token
  • It returns true/false depending on if the hashed phone number received as input matches the authenticated user's device phone number associated to the access token
Headers
x-correlatorstring

Correlation id for the different services

Bodyapplication/jsonrequired
One of:

Payload to verify the phone number

phoneNumberstring

A phone number belonging to the user in E.164 format (starting with country code). Optionally prefixed with '+'.

Example: "+346661113334"
curl -i -X POST \
  https://developers.opgw.u.com.my/_mock/number-verification/number_verification/verify \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'x-correlator: string' \
  -d '{
    "phoneNumber": "+346661113334"
  }'

Responses

OK

Headers
x-correlatorstring

Correlation id for the different services

Bodyapplication/json
devicePhoneNumberVerifiedboolean(DevicePhoneNumberVerified)required

Number verification. True, if it matches

Response
application/json
{ "devicePhoneNumberVerified": true }

Phone number share

API operation to return the phone number associated to the access token.

Operations