Mein Ziel: Lassen Sie eine mobile App verwenden, bei der sich keine Benutzer anmelden müssen. Lassen Sie diese nicht authentifizierten Benutzer meinen Server erreichen.Wie validiere ich nicht authentifizierte Benutzer von einer mobilen App auf einem Server?
Was ich habe: Mein Server verwendet das AWS API Gateway/AWS Lambda-Setup. Die benutzerdefinierte Autorisierung, die ich für AWS API Gateway verwendet habe, wurde mit dieser example entwickelt. Ich habe auch den Code aus diesem Beispiel unter (A) eingefügt.
Meine Frage: Aus dem Codeblock unter (A), habe ich den Eindruck ich JWT verwendet werden soll. Wie kann ich JWT verwenden, um nicht authentifizierte Benutzer zu validieren, wenn diese Tokens ablaufen? Wenn JWT nicht das Beste ist, was wäre das?
Danke!
(A)
var nJwt = require('njwt');
var AWS = require('aws-sdk');
var signingKey = "CiCnRmG+t+ BASE 64 ENCODED ENCRYPTED SIGNING KEY Mk=";
exports.handler = function(event, context) {
console.log('Client token: ' + event.authorizationToken);
console.log('Method ARN: ' + event.methodArn);
var kms = new AWS.KMS();
var decryptionParams = {
CiphertextBlob : new Buffer(signingKey, 'base64')
}
kms.decrypt(decryptionParams, function(err, data) {
if (err) {
console.log(err, err.stack);
context.fail("Unable to load encryption key");
} else {
key = data.Plaintext;
try {
verifiedJwt = nJwt.verify(event.authorizationToken, key);
console.log(verifiedJwt);
// parse the ARN from the incoming event
var apiOptions = {};
var tmp = event.methodArn.split(':');
var apiGatewayArnTmp = tmp[5].split('/');
var awsAccountId = tmp[4];
apiOptions.region = tmp[3];
apiOptions.restApiId = apiGatewayArnTmp[0];
apiOptions.stage = apiGatewayArnTmp[1];
policy = new AuthPolicy(verifiedJwt.body.sub, awsAccountId, apiOptions);
if (verifiedJwt.body.scope.indexOf("admins") > -1) {
policy.allowAllMethods();
} else {
policy.allowMethod(AuthPolicy.HttpVerb.GET, "*");
policy.allowMethod(AuthPolicy.HttpVerb.POST, "https://stackoverflow.com/users/" + verifiedJwt.body.sub);
}
context.succeed(policy.build());
} catch (ex) {
console.log(ex, ex.stack);
context.fail("Unauthorized");
}
}
});
};
Wenn Ihre Benutzer nicht authentifiziert sind, wie erwarten Sie, dass sie ein JWT erhalten? –
Entschuldigung, ich bin immer noch sehr neu in der Internetsicherheit. Wenn Tokens nicht die Antwort sind, gibt es eine andere Sicherheitsmaßnahme, die ich verwenden könnte, damit ich nicht zulassen kann, dass irgendjemand meinen Server trifft? – dawgPeter