code: def _create_access_token(self, subject_identifier, auth_req, granted_scope, current_scope=None):
          # type: (str, Mapping[str, Union[str, List[str]]], str, Optional[str]) -> se_leg_op.access_token.AccessToken
          
          access_token = AccessToken(rand_str(), self.access_token_lifetime)
  
          scope = current_scope or granted_scope
          logger.debug('creating access token for scope=%s', scope)
  
          authz_info = {
              'iat': int(time.time()),
              'exp': int(time.time()) + self.access_token_lifetime,
              'sub': subject_identifier,
              'client_id': auth_req['client_id'],
              'aud': [auth_req['client_id']],
              'scope': scope,
              'granted_scope': granted_scope,
              'token_type': access_token.BEARER_TOKEN_TYPE,
              self.KEY_AUTHORIZATION_REQUEST: auth_req
          }
          self.access_tokens[access_token.value] = authz_info
  
          logger.debug('new access_token=%s to client_id=%s for sub=%s valid_until=%s',
                       access_token.value, auth_req['client_id'], subject_identifier, authz_info['exp'])
          return access_token
docs: Creates an access token bound to the subject identifier, client id and requested scope.