Adds validation for id_token and access_token (#2878)

* ADds validation for id_token and access_token

* nit
This commit is contained in:
Florent Vilmart
2016-10-17 12:44:24 -04:00
committed by GitHub
parent 60d506615d
commit d8ba9e8b7d

View File

@@ -2,11 +2,10 @@
var https = require('https');
var Parse = require('parse/node').Parse;
// Returns a promise that fulfills iff this user id is valid.
function validateAuthData(authData) {
return request("tokeninfo?id_token="+authData.access_token)
function validateIdToken(id, token) {
return request("tokeninfo?id_token="+token)
.then((response) => {
if (response && response.sub == authData.id) {
if (response && response.sub == id) {
return;
}
throw new Parse.Error(
@@ -15,7 +14,34 @@ function validateAuthData(authData) {
});
}
// Returns a promise that fulfills iff this app id is valid.
function validateAuthToken(id, token) {
return request("tokeninfo?access_token="+token)
.then((response) => {
if (response && response.user_id == id) {
return;
}
throw new Parse.Error(
Parse.Error.OBJECT_NOT_FOUND,
'Google auth is invalid for this user.');
});
}
// Returns a promise that fulfills if this user id is valid.
function validateAuthData(authData) {
if (authData.id_token) {
return validateIdToken(authData.id, authData.id_token);
} else {
return validateAuthToken(authData.id, authData.access_token).then(() => {
// Validation with auth token worked
return;
}, () => {
// Try with the id_token param
return validateIdToken(authData.id, authData.access_token);
});
}
}
// Returns a promise that fulfills if this app id is valid.
function validateAppId() {
return Promise.resolve();
}