2017-02-05 3 views
0

Ich versuche, einen grundlegenden Test zu schreiben, um sicherzustellen, dass meine Minioinstallation korrekt funktioniert. Ich schrieb einen Test, der ihrem Beispiel folgt, eine presigned POST policy zu verwenden, und es funktioniert gut, aber ich kann nicht scheinen, ein Arbeitsbeispiel eines vordefinierten PUT zu erstellen. Ich habe eine 403 Forbidden mit einer Ursache:minio presigned setzen mit superagenten Ergebnissen in einem 403

cause="Signature does not match" 
source="[objecthandlers.go:468:objectAPIHandlers.PutObjectHandler()]" 

Hier ist der Testcode. Ich habe die Minio-Javascript-API angekündigt und verwende Band als Test-Kabelbaum. Ein ähnlicher Code für die POST-Richtlinie funktioniert einwandfrei.

EDIT: Dies ist ein wichtiger Teil, der die Quelle des Problems war:

var minio = new Minio.Client({ 
    endPoint: 'minioTest',  // <- the problem 
    port: 9000, 
    secure: false, 
    accessKey: 'DONALDJTRUMP', 
    secretKey: 'DONALDJTRUMP' 
}); 

test('should be able to PUT to a presigned URL', function(assert) { 

    const filename = 'signedtest2.txt'; 

    return minio.presignedPutObjectAsync(bucket, filename, 60) 
    .then(url => { 
    assert.ok(url.length > 200, 'URL is non empty'); 
    console.log(url); 
    return agent 
    .put(url) 
    .set('Content-Type', 'text/plain') 
    .attach('file', 'test/data/test.txt'); 
    }).then(r => { 
    assert.ok(r.ok); 
    console.log(JSON.stringify(r, null, 2)); 
    }).catch(err => { 
    assert.fail('got error', err); 
    console.log(err); 
    }); 
}); 

Was mache ich falsch, dass ich eine 403 Forbidden bekommt?

Antwort

2

entweder SuperAgent, Minio-js oder oder der Minio-Server hat keine Großbuchstaben im Hostnamen (EndPoint). Leider benutze ich Andockfenster, das Hostnamen automatisch zuweist und das erlaubt, wenn Sie camelCase für Containernamen verwenden, und ich schneide einfach den Containernamen aus.

diese Zeile zu ändern Fall zu senken, löst das Problem:

endPoint: 'miniotest',  // <- this must be lower case 

Host-Namen sind case insensitive so sollte es nicht .. Ich habe die Komponente nicht identifiziert wichtig es ist, aber etwas Nötigung wahrscheinlich Fall zu senken wenn die Signatur generiert und validiert wird und sie nicht übereinstimmen.

Ich bemerke, dass ich den Behälter nicht weg von camelCase ändern musste.

1

@paul Wir haben dieses Problem behoben und es ist in der Quelle behoben. Bitte upgraden.

Verwandte Themen