Jump to content
Sign in to follow this  
Crepusculo de aço

Autenticação via token Web Services

Recommended Posts

Boa galera, estou desenvolvendo um Web Services e estou tendo problemas com a camada de segurança, já fiz a implementação da autenticação via Digest, agora só falta o tal do token que não sei como gera isso, gostaria de mais informação sobre token com Digest.
se vocês tiverem uma documentação pratica exemplos eu agradeço.

o sistema vai funcionar assim:
Cliente HTML5
estou usando o pluguin digest-ajax para autenticação

$(".frm_voce").submit(function (e) {
 e.preventDefault();
 var url = "http://server.php";
 $.ajaxDigest(url, {
 username: 'admin',
 password: 'pass'
 }).done(function (data, textStatus, jqXHR) {
   alert("OK");
 }).fail(function (jqXHR, textStatus, errorThrown) {
   alert("Erro");
 }

 });

Servidor PHP

$username = 'admin1';
$password = 'pass';
$realm = 'exemplo';

$nonce = md5(uniqid());
$opaque = md5(uniqid());
$valid = false;

$headers = getallheaders();

if (array_key_exists('Authorization', $headers)) {
    $authHeader = substr($headers['Authorization'],  strlen('Digest'));
   
    $parsed = array();
    foreach (explode(',', $authHeader) as $pair) {
  
        $vals = explode('=', $pair);
        $parsed[trim($vals[0])] = trim($vals[1], '" ');
    }

    $A1 = md5("$username:" . $parsed['realm'] . ":$password");
    $A2 = md5($_SERVER['REQUEST_METHOD'] . ':' . $parsed['uri']);
    $response = md5("$A1:" . $parsed['nonce'] . ":$A2");

    $valid = ($response == $parsed['response']);
}

if (!$valid) {
    header('HTTP/1.1 401 Unauthorized');
    header('Content-Type: text/html');
    header(sprintf('WWW-Authenticate: Digest realm="%s", nonce="%s", opaque="%s"', $realm, $nonce, $opaque));
    echo 'erro.';
    exit();
}
else {
    print 'ok';
}

Onde entra o tal do token nisso tudo?
Como é armazenado o mesmo lado cliente e do lado servidor?
Obrigado



Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By Fernando Rafael
      Olá a todos, atualmente estou quebrando a cabeça com 3 campos da geração do XML de NFCE/NFE, são eles:   <SignatureValue> ,  <DigestValue>   e  <X509Certificate>, como  faço para gerar esses 3 campos?
       
      Procurei na internet, mas não achei nada que me ajude, gostaria de fazer 100% com php e de preferência  manualmente (sem a utilização de classes prontas na qual é difícil de entender o código).
       
      Já tenho o certificado em PFX, e já gerei um certificado do tipo PEM.
       
      OBS 1: não precisam explicar ou mandar códigos de como inserir o conteúdo gerado nas tags <SignatureValue>  e  <X509Certificate>.
       
      OBS 2: O campo <DigestValue>  notei em alguns fóruns que é um retorno da Sefaz, é correto isso?
       
      ,
    • By fkmello
      Estou estudando Rest e JSON no Delphi e pra isso estou usando a API do Cartola FC pra estudo, porém, tem alguns dados que precisa estar logado para conseguir consumir e eu não estou sabendo pegar o Token e fazer o login na API do Cartola FC (globo.com)... 
       
      Gostaria de uma luz por onde seguir... Provavelmente é burrice minha... KKK, pois é a primeira vez que estou mexendo com isso, então desculpe se falei alguma besteira... Kkk
    • By Marcio_123
      ola pessoal bom dia blzzz,
       
      to fazendo uma integração via web services na minha pagina php, alguem teria algo ai sobre o assunto para ajuda.
       
      Uso o Postman para chamar o conteudo web services, minha duvida é como passar esse conteudo para minha pagina personalizada.
       
      valeuuuu
    • By Flavio Medeiros Cordeiro
      Olá Pessoal,

      Como estou iniciando no PHP, ainda tenho algumas duvidas e não encontrei em nenhum lugar algo especifico.

      Estou precisando criar a rotina para resetar senha do usuário através de token.
       
      Quem puder ajudar e disponibilizar a rotina, fico agradecido.
       
      Abraço.
    • By littleyoshii
      Olá a todos! De antemão gostaria de me desculpar, sou novo no mundo da programação e talvez não saiba explicar de forma clara minha dúvida, mas vou tentar da melhor maneira possível.
       
      Recentemente encontrei um aplicativo (extensão do chrome) que basicamente me ajudaria em alguns sites de apostas (o site apenas aposta itens de um jogo, nada que envolva dinheiro real). O aplicativo basicamente ficaria apostando pontos para a pessoa em uma roleta de forma pré programada por quem esta apostando, por exemplo, apostar de forma aleatória, ou apenas em uma cor, etc. O aplicativo é gratuito, mas também existe um modo pago que é uma versão melhorada com alguns recursos a mais.
       

       
      Após clicar no botão "Premium"
       


      Após entrar em contato com o dono do aplicativo, enviar o numero da minha ID e comprar a versão paga, ele me enviou um link, e este link continha minha ID juntamente com um token de segurança.



      E após clicar neste link, eu fui redirecionado para uma pagina de cadastro que me pedia para inserir um password, e assim eu pudesse logar no aplicativo usando a versão paga.

      Minha dúvida é a seguinte, eu gostaria de criar meu próprio aplicativo, e implantar este mesmo sistema nele, onde eu geraria um link com uma ID especifica de um usuário, feita para aquele usuário apenas. Eu sei que é necessário um banco de dados, mas não sei qual plataforma usar para esta situação, que tipo de programação usar, e que linguagem de programação usar, seja php, java, etc. (Não sei absolutamente nada haha não se irritem comigo, prometo que vou melhorar)

      Não sei se vai ajudar, mas mandei a seguinte mensagem ao dono do aplicativo;

      hello Jalapenos! sorry interrupt you, i just wanna ask u some things about programming, for exemple, if I create any application for chrome or website with some paid resource like your app, how I could create this system like your, whit one link and token to allow some specifc "id" to create a password and use the paid resource? I need a data base or something?

      Em seguida ele me respondeu;

      hello Bruno, yes I have a database I use ajax calls in the extension. Database not linked with app. Website and database and extension interacts with website by ajax calls.


      Ele também me enviou um arquivo especifico do código fonte do aplicativo, não sei se pode ajudar em algo mas aqui vai;

      var premium; function premiumSet(a, b) { $("#premium_error").html("..."); $.ajax({ url: "http://x2bot.xyz/ajax/premium.php?a="+a+"&b="+b, cache: false }).done(function(html) { if (html == 1) { localStorage.setItem("x2bot_account_id", a); localStorage.setItem("x2bot_account_pw", b); checkPremiumCookies(); thisButtonToggle(); } else { $("#premium_error").html("Error: Wrong password or steam id"); } }); } function checkPremiumCookies() { if (localStorage.getItem("x2bot_account_id") == null && localStorage.getItem("x2bot_account_pw") == null) { premium = false; } else { premium = true; } } Me desculpem mais uma vez pela confusão, mas gostaria de receber uma luz e umas dicas, pois não faço ideia por onde começar, se eu devo criar primeiro o aplicativo, ou o banco de dados, se um site é mesmo necessário ou não, e como criar esses links específicos com hash de senha para cada ID individual.

      Muito obrigado pela atenção! :lol:
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.