Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v19.8
Método base On 4D Mobile Authentication

Método base On 4D Mobile Authentication 


 

$1, $2, $3, $4 -> Método base On 4D Mobile Authentication -> Resultado 
Parámetro Tipo   Descripción
$1  Texto in Nombre de usuario
$2  Texto in Contraseña
$3  Booleano in True = modo Digest, False = modo Basic
$4  Texto in Dirección IP del llamante
Resultado  Booleano in True = petición aceptada, False = petición rechazada

El Método base On 4D Mobile Authentication le ofrece controlar de forma personalizada la apertura de las sesiones 4D REST en 4D. Este método base se llama automáticamnete cuando se abre una nueva sesión por un datastore remoto (con el comando Open datastore)

Cuando la solicitud de apertura de sesión REST se recibe, los identificadores de conexión se ofrecen en el encabezado de la solicitud. El Método base On 4D Mobile Authentication se llama para que pueda evaluar estos identificadores. Puede utilizar la lista de usuarios de la base 4D o puede utilizar su propia tabla de identificadores.

Importante: cuando Método base On 4D Mobile Authentication está definido (es decir, cuando contiene al menos un caracter), 4D le delega plenamente el control de REST: cualquier ajuste realizado utilizando el menú "Lectura/Escritura" de la página Web/Rest Resource de las Propiedades de la base se ignora.

El método base recibe dos parámetros de tipo de texto ($1 y $2)  y un valor booleano ($3), pasado por 4D, y devuelve un booleano, $0. Debe declarar estos parámetros de la siguiente manera:

  //Método base On 4D Mobile Authentication
 C_TEXT($1;$2)
 C_BOOLEAN($0;$3)
 ... // Código para el método

$1 contiene el nombre del usuario y $2 la contraseña utilizada para la conexión. 

La contraseña ($2) puede recibirse en claro o en forma hash, dependiendo del modo utilizado para la petición. Este modo es indicado por el parámetro $3 para permitirle realizar el procesamiento apropiado:

  • Si la contraseña se envía en claro (modo Basic), $3 devuelve False.
  • If it is sent in hashed form (modo Digest), $3 devuelve True.

Cuando la solicitud de conexión REST proviene del comando Open datastore, la contraseña se envía siempre en forma de hash.

La dirección IP de la llamada ($4) es útil cuando desea filtrar algunas direcciones IP, por ejemplo.


Debe marcar los identificadores de la conexión REST en el método base. Por lo general, se marca el nombre, la contraseña y/o la dirección IP utilizando una tabla de usuarios personalizada. Si los identificadores son válidos, pase True en $0. La solicitud se acepta; 4D la ejecuta y devuelve el resultado en JSON.
De lo contrario, pase False en $0, en este caso, la conexión se rechaza y el servidor devuelve un error de autenticación al remitente de la petición.

Si el usuario es referenciado en la lista de usuarios 4D de la base, puede comprobar la contraseña directamente a través de la siguiente instrucción:

 $0:=Validate password($1;$2;$3)

El comando Validate password acepta un nombre de usuario como primer parámetro, así como un parámetro opcional que indica si la contraseña se expresa en forma hash.

Si desea utilizar su propia lista de usuarios externos para la lista de la base 4D, puede guardar sus contraseñas en forma hash utilizando el mismo algoritmo que el utilizado por 4Dr cuando se envía la solicitud de conexión a Método base On 4D Mobile Authentication en $2. Para generar el hash para una contraseña utilizando este método, puede escribir:

 $HashedPasswd :=Generate digest($ClearPasswd ;4D digest)

El comando Generate digest acepta 4D digest como algoritmo de hashing, correspondiente al método utilizado por 4D para su gestión interna de palabras claves.

Este ejemplo sólo acepta el usuario "admin" con la contraseña "123" que no corresponde a un usuario 4D:

  //Método base On REST Authentication</p> <p>C_TEXT($1;$2)
 C_BOOLEAN($0;$3)
  //$1: user
  //$2: password
  //$3: digest mode
 If($1="admin")
    If($3)
       $0:=($2=Generate digest("123";4D digest))
    Else
       $0:=($2="123")
    End if
 Else
    $0:=False
 End if

Este ejemplo excluye una IP (la contraseñas son hashed con el algoritmo digest de 4D en los Usuarios del dataclass):

  // Método base On REST Authentication
 C_TEXT($1;$name;$2;$password)
 C_TEXT($4;$ip)
 C_BOOLEAN($0;$result;$3;$digest)
 C_OBJECT($user)
 
 $name:=$1
 $password:=$2
 $digest:=$3
 $ip:=$4
 
 $result:=False
 
 If($ip#"123.45.67.89") //Excluded IP
    $user:=ds.Users.query("name=:1";$name).first()
  // Las contraseñas son hashed con el algoritmo digest de 4D en los Usuarios del dataclass
    If($user#Null)
       If($digest &($user.password=$password))
          $result:=True
       End if
    End if
 End if
 
 $0:=$result

En este ejemplo, manejamos igualmente los usuarios 4D:

  //Método base Sur authentification REST
 C_TEXT($1;$name;$2;$password)
 C_BOOLEAN($0;$result;$3;$digest)
 C_OBJECT($user)
 
 $name:=$1
 $password:=$2
 $digest:=$3
 
 $result:=False
 
 $user:=ds.Users.query("name=:1";$name).first()
  // Passwords are hashed in Users dataclass
 If($user#Null)
    If($digest &($user.password=$password))
       $result:=True
    End if
 Else // Generar los usuarios 4D
    $result:=Validate password($name;$password;$digest)
 End if
 $0:=$result

 
PROPIEDADES 

Producto: 4D
Tema: Métodos base
Número 3367

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v14
Renombrar: 4D v14 R3 (On 4D Mobile Authentication database method)
Modificado: 4D v18
Renombrar: 4D v18 (On 4D Mobile Authentication database method)

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v19)
Manual de lenguaje 4D ( 4D v19.1)
Manual de lenguaje 4D ( 4D v19.4)
Manual de lenguaje 4D ( 4D v19.5)
Manual de lenguaje 4D ( 4D v19.6)
Manual de lenguaje 4D ( 4D v19.7)
Manual de lenguaje 4D ( 4D v19.8)