Blame view

node_modules/hawk/example/usage.js 2.1 KB
f7563de62   Palak Handa   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  // Load modules
  
  var Http = require('http');
  var Request = require('request');
  var Hawk = require('../lib');
  
  
  // Declare internals
  
  var internals = {
      credentials: {
          dh37fgj492je: {
              id: 'dh37fgj492je',                                             // Required by Hawk.client.header
              key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
              algorithm: 'sha256',
              user: 'Steve'
          }
      }
  };
  
  
  // Credentials lookup function
  
  var credentialsFunc = function (id, callback) {
  
      return callback(null, internals.credentials[id]);
  };
  
  
  // Create HTTP server
  
  var handler = function (req, res) {
  
      Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
  
          var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!');
          var headers = {
              'Content-Type': 'text/plain',
              'Server-Authorization': Hawk.server.header(credentials, artifacts, { payload: payload, contentType: 'text/plain' })
          };
  
          res.writeHead(!err ? 200 : 401, headers);
          res.end(payload);
      });
  };
  
  Http.createServer(handler).listen(8000, '127.0.0.1');
  
  
  // Send unauthenticated request
  
  Request('http://127.0.0.1:8000/resource/1?b=1&a=2', function (error, response, body) {
  
      console.log(response.statusCode + ': ' + body);
  });
  
  
  // Send authenticated request
  
  credentialsFunc('dh37fgj492je', function (err, credentials) {
  
      var header = Hawk.client.header('http://127.0.0.1:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'and welcome!' });
      var options = {
          uri: 'http://127.0.0.1:8000/resource/1?b=1&a=2',
          method: 'GET',
          headers: {
              authorization: header.field
          }
      };
  
      Request(options, function (error, response, body) {
  
          var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body });
          console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)'));
          process.exit(0);
      });
  });