4

Ich habe ein API-Gateway, wo ich die Authentifizierung festlegen, um AWS_IAM zu verwenden. Dies erfordert, dass ich jede Anfrage mit der AWS V4-Signatur unterzeichne und den HMAC in der Kopfzeile anhefte. Ich habe Bibliotheken gefunden, um eine Anfrage mit der V4-Signatur in Nodejs zu signieren. Aber ich kann keine Bibliothek finden, um für mich zu unterschreiben. Auch die aws-sdk für .NET hat dies für ihren eigenen Anwendungsfall abstrahiert. Gibt es eine Bibliothek da draußen (ich habe eine schnelle Google-Suche durchgeführt und keine Ergebnisse gefunden)? Oder muss ich das hmac selbst schreiben?Gibt es eine .NET-Bibliothek, die eine Anfrage mit AWS V4 Signature signieren kann?

+0

Ist die [Standardbibliothek] (https : //docs.python.org/2/library/hmac.html#module-hmac) trifft dies nicht zu? – gravity

+0

Die Implementierung wird definitiv die Standard-.net-Bibliothek verwenden, um die eigentliche HMAC durchzuführen, aber das Rezept, wie der Schlüssel generiert wird und was zu hmac gehört. https://github.com/mhart/aws4/blob/master/aws4.js ist die nodejs-Implementierung, die eine Anfrage für die aws v4-Signatur signiert. –

Antwort

5

können Sie lesen, wie die Unterschrift gemacht wird und Sie können (wenn Sie möchten). Ich würde empfehlen, das AWS SDK für .NET einzuziehen und die Funktionalität aus dem SDK zu verwenden, um die Signatur tatsächlich auszuführen.

Hier wird bilden die Unterzeichner des SDK:

https://github.com/aws/aws-sdk-net/blob/6c3be79bdafd5bfff1ab0bf5fec17abc66c7b516/sdk/src/Core/Amazon.Runtime/Internal/Auth/AWS4Signer.cs

Sie können es anpassen müssen (dh es kennt AWS-Dienste und Endpunkte in der Standardeinstellung)

+1

Ihre Bibliothek wird den Prozess beschleunigen, aber ich muss immer noch die Standard-HttpRequestMessage in ihr IRequest-Format schuhen oder zumindest einen Wrapper schreiben, um ähnliche Parameter zurückzugeben. –

+3

Wir (API Gateway) sind uns der Notwendigkeit einer offiziellen .NET SDK-Unterstützung bewusst und haben entsprechend Prioritäten gesetzt. In der Zwischenzeit würde ich vorschlagen, wie @Mircea vorgeschlagen und entweder 1) Implementieren Sie Ihren eigenen Unterzeichner gemäß http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html oder 2) Wiederverwendung Stücke des vorhandenen .NET AWS SDK –