|
@@ -1,6 +1,8 @@
|
|
|
var passport = require('passport-strategy')
|
|
|
, siwe = require('siwe')
|
|
|
+ , url = require('url')
|
|
|
, util = require('util')
|
|
|
+ , utils = require('./utils')
|
|
|
, SessionStore = require('./store/session');
|
|
|
|
|
|
function Strategy(options, verify) {
|
|
@@ -22,6 +24,8 @@ function Strategy(options, verify) {
|
|
|
util.inherits(Strategy, passport.Strategy);
|
|
|
|
|
|
Strategy.prototype.authenticate = function(req, options) {
|
|
|
+ //console.log(req.body);
|
|
|
+
|
|
|
var message = req.body.message
|
|
|
, signature = req.body.signature;
|
|
|
|
|
@@ -37,6 +41,16 @@ Strategy.prototype.authenticate = function(req, options) {
|
|
|
return self.fail({ message: 'Invalid message' }, 403);
|
|
|
}
|
|
|
|
|
|
+ var origin = utils.originalOrigin(req);
|
|
|
+ if (origin !== siweMessage.uri) {
|
|
|
+ return self.fail({ message: 'URI mismatch' }, 403);
|
|
|
+ }
|
|
|
+
|
|
|
+ var domain = url.parse(origin).host;
|
|
|
+ if (domain !== siweMessage.domain) {
|
|
|
+ return self.fail({ message: 'Domain mismatch' }, 403);
|
|
|
+ }
|
|
|
+
|
|
|
this._store.verify(req, siweMessage.nonce, function(err, ok, info) {
|
|
|
if (!ok) {
|
|
|
return self.fail(info, 403);
|