Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
On 4D Mobile Authentication database method
|
$1, $2, $3, $4 -> On 4D Mobile Authentication database method -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
$1 | Texto |
![]() |
Nome de usuário | |||||
$2 | Texto |
![]() |
Senha | |||||
$3 | Booleano |
![]() |
True = modo Digest, False = modo Basic | |||||
$4 | Texto |
![]() |
Endereço IP do caller | |||||
Resultado | Booleano |
![]() |
True = pedido aceito, False = pedido rejeitado | |||||
O On 4D Mobile Authentication database method lhe permite controlar de forma personalizada a abertura das sessões REST em 4D. Este método banco de dados é automaticamente chamado quando uma nova sessão é aberta por uma datastore remota (com o comando Open datastore )
Quando a solicitação de abertura de sessão REST é recebida, os identificadores de conexão estão no cabeçalho da solicitação. O On 4D Mobile Authentication database method é chamado para que possa avaliar estes identificadores. Pode utilizar a lista de usuários da base 4D ou pode utilizar sua própria tabela de identificadores.
Importante: Quando On 4D Mobile Authentication database method está definido (ou seja, quando contém código), 4D lhe delega plenamente o controle das solicitações REST: qualquer ajuste realizado utilizando o menu "Leitura/Escritura " da página Web/4D Mobile das Propriedades da base se ignora (ver o manual de Desenho).
O método base recebe dois parâmetros de tipo de texto ($1 e $2) e um valor booleano ($3), passado por 4D, e devolve um booleano, $0. Deve declarar estes parâmetros da seguinte maneira:
// Método base On 4D Mobile Authentication</p> <p>C_TEXT($1;$2)
C_BOOLEAN($0;$3)
... // Código para o método
$1 contem o nome do usuário e $2 a senha utilizada para a conexão.
A senha ($2) pode ser recebida em claro ou em forma hash, dependendo do modo utilizado para a petição. Este modo é indicado pelo parâmetro $3 para permitir realizar o processo apropriado:
Quando o pedido de conexão REST provém do comando Open datastore, a senha se envia sempre em forma de hash.
O endereço IP da chamada ($4) é útil quando quiser filtrar certos endereços IP por exemplo.
Quando os pedidos são enviados desde um navegador ou desde qualquer cliente web diferente a Wakanda Server, é responsabilidade do programador gerenciar a autenticação da página HTML/JavaScript original incluindo nos cabeçalhos HTTP os campos "username-4D" e "password-4D". Neste caso, a senha deve ser enviada em claro a 4D (utilizar SSL para evitar o risco de intercepção de um terceiro).
Deve controlar os identificadores da conexão 4D Mobile no método base. Geralmente, se comprova o nome e a senha utilizando uma tabela de usuários personalizada. Se os identificadores são válidos, passe True em $0. A solicitação é aceita; 4D a executa e devolve o resultado em JSON.
Caso contrário, passe False em $0, neste caso, a conexão é rejeitada e o servidor devolve um erro de autenticação ao remetente.
Se o usuário é referenciado na lista de usuários 4D da base, pode comprovar a senha diretamente através da seguinte instrução:
$0:=Validate password($1;$2;$3)
O comando Validate password foi estendido para aceitar um nome de usuário como primeiro parâmetro, assim como um parâmetro opcional que indica se a senha se expressa em forma hash.
Se deseja utilizar sua própria lista de usuários externos para a lista da base 4D, pode guardar suas senhas em forma hash utilizando o mesmo algoritmo que o utilizado por 4D quando se envia a solicitação de conexão a On 4D Mobile Authentication database method em $2. Para gerar o hash para uma senha utilizando este método, pode escrever:
$HashedPasswd :=Generate digest($ClearPasswd ;4D digest)
O comando Generate digest aceita 4D digest como algoritmo de hashing, correspondente ao método utilizado por 4D para sua gestão interna de palavras chaves.
Este exemplo só aceita o usuário "admin" com a senha "123" que não corresponde a um usuário 4D:
//On REST Authentication database method
C_TEXT($1;$2)
C_BOOLEAN($0;$3)
//$1: usuário
//$2: senha
//$3: modo digest
If($1="admin")
If($3)
$0:=($2=Generate digest("123";4D digest))
Else
$0:=($2="123")
End if
Else
$0:=False
End if
Este exemplo exclui uma IP (as senhas são hashed com o algoritmo digest de 4D em Usuarios da dataclass):
// Método banco de dados 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") //IP excluído
$user:=ds.Users.query("name=:1";$name).first()
// As senhas são hashed com o algoritmo digest de 4D nos Usuarios de dataclass
If($user#Null)
If($digest &($user.password=$password))
$result:=True
End if
End if
End if
$0:=$result
Neste exemplo, manejamos igualmente os 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()
// Senhas são hashed na classe de dados Users
If($user#Null)
If($digest &($user.password=$password))
$result:=True
End if
Else // Gerar os usuários 4D
$result:=Validate password($name;$password;$digest)
End if
$0:=$result
Produto: 4D
Tema: Métodos banco de dados
Número
3367
Criado por: 4D v14
Renomear: 4D v14 R3 (On 4D Mobile Authentication database method)
Modificado: 4D v18
Renomear: 4D v18 (On 4D Mobile Authentication database method)
Manual de linguagem 4D ( 4D v19)
Manual de linguagem 4D ( 4D v19.1)
Manual de linguagem 4D ( 4D v19.4)
Manual de linguagem 4D ( 4D v19.5)
Manual de linguagem 4D ( 4D v19.6)
Manual de linguagem 4D ( 4D v19.7)
Manual de linguagem 4D ( 4D v19.8)