The information in this Annex provides a normative description of the Authentication and Authorization framework based on the OpenID Connect 1.0 standard. Characterization of the ID token, access token, how to obtain tokens, how to validate tokens, and how to use the refresh token is explained.
The OpenID Connect 1.0 standard provides the source of the information contained in this Annex. This Annex profiles the OpenID Connect standard and includes the ID token and the access token, as well as the definition of VAL specific scopes for key management, VAL services, configuration management, and group management. This profile is compliant with OpenID Connect.
Before a SIM-C can obtain ID tokens and access tokens (required to access VAL resource servers) it shall first be registered with the SIM-S of the service provider as required by OpenID Connect 1.0. The method by which this is done is not specified by this profile. For native SIM-C, the following information shall be registered:
-
The client is issued a client identifier. The client identifier represents the client's registration with the authorization server, and enables the SIM-S to reference parameters associated with that client's registration when being requested for an access token by the SIM-C.
-
Registration of the client's redirect URIs.
Other information about the SIM-C such as (for example): application name, website, description, logo image, legal terms to be consented to, may optionally be registered.
To protect against leakage or other compromise, access token lifetimes are typically short lived (though it is ultimately a matter of security policy & configuration by the service provider). Some client types can be issued longer-lived refresh tokens, which enable them to refresh the access token and avoid having to prompt the user for authentication again when the access token expires. Refresh tokens are available only to clients utilizing the authorization code grant type.
Figure A.5.1-1 shows how Native SIM-C can use the refresh token as a grant type to obtain new access tokens.
To obtain an access token from the SIM-S using a refresh token, the SIM-C makes an access token request to the token endpoint of the SIM-S. The SIM-C does this by adding the following parameters using the
"application/x-www-form-urlencoded" format, with a character encoding of UTF-8 in the HTTP request entity-body. The access token request standard parameters are shown in
Table A.5.2-1.
Parameter |
Values |
grant_type |
REQUIRED. The value shall be set to "refresh_token".
|
Scope | Space-delimited set of permissions that the SIM-C requests. Note that the scopes requested using this grant type shall be of equal to or lesser than scope of the original scopes requested by the SIM-C as part of the original authorization request. |
If the SIM-C was provided with client credentials by the SIM-S, then the client shall authenticate with the token endpoint of the SIM-S utilizing the client credential (shared secret or public-private key pair) established during the client registration phase.
In response to the access token request (above) the token endpoint on the SIM-S will return an access token to the SIM-C, and optionally another refresh token in an access token response message.
The access token response standard parameters are shown in
Table A.5.3-1.
Parameter |
Values |
access_token | REQUIRED. This is the issued access token. |
token_type |
REQUIRED. This field shall be "bearer"
|
expires_in | REQUIRED. The lifetime in seconds of the access token. |
Id_token | OPTIONAL. This is the issued id token. |
Refresh_token | OPTIONAL. This is the issued refresh token. |
It is possible to configure the SIM-S to confirm that the user account is still valid each time the refresh token is presented, and to revoke the refresh token if not. This security practice is RECOMMENDED.
Connect for VAL shall initially support the bearer access token type. Access tokens of type
"bearer" shall be communicated from the VAL or SEAL Clients in UE to VAL resource servers by including the access token in the HTTP Authorization Header, per
RFC 6750.
The access token is opaque to the VAL or SEAL Clients in UE, meaning that the client does not have any knowledge of the access token itself. The client will be given some metadata corresponding to the access token, such as its expiration time, so that it does not send an expired access token to VAL resource servers. If the access token is presented to a VAL resource server and the scope is invalid or the token is expired or revoked, the VAL resource server should return an error message indicating such to the VAL or SEAL Clients in UE.
In order to limit the time validity of a token, the
"exp" and
"expires_in" parameters may be used as a method of access token revocation. If either the
"exp" or
"expires_in" parameter is used as a method of access token revocation, then the following applies:
Within the standard claims of an access token, the
"exp" parameter shall be used by the authorising server to determine whether or not the token is valid. If the current time is beyond the time specified by the
"exp" parameter, the associated token shall no longer be considered valid and any requests made with an expired token shall be rejected by the authorising server.
Within the standard claims of an access token response, token exchange response or token response message, the
"expires_in" parameter shall be used by the UE client(s) to determine validity of the associated token. If the current time is beyond the time specified by the
"expires_in" parameter, the associated token shall no longer be considered valid and no client requests shall be made using the expired token. A refresh token may be used per
clause A.5 to obtain a new access token.
The support of Transport Layer Security (TLS) between the SIM-C in the VAL UE and the SIM-S is mandatory. The profile for TLS implementation and usage shall follow the provisions given in
TS 33.310,
Annex E.
If PSK TLS based authentication is supported, the SIM-C in the VAL UE and the SIM-S shall support the TLS version, PSK ciphersuites and TLS Extensions as specified in the TLS profile given in
TS 33.310,
Annex E. The usage of pre-shared key ciphersuites for TLS is specified in the TLS profile given in
TS 33.310,
Annex E.