| 4D v18On 4D Mobile Authentication database method | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v18
 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 ifEste 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:=$resultNeste 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
	Modificado: 4D v18
	Renomear: 4D v18
	Manual de linguagem 4D ( 4D v18)
	
	
	
 Adicionar um comentário
Adicionar um comentário