Ich habe das Gefühl, ich nehme hier verrückte Pillen. Normalerweise schweben für eine bestimmte Aufgabe immer eine Million Bibliotheken und Samples im Web. Ich versuche, die Authentifizierung mit einem Google "Service Account" mithilfe von JSON Web Tokens (JWT) wie hier beschrieben zu implementieren .
Es gibt jedoch nur Client-Bibliotheken in PHP, Python und Java. Selbst bei der Suche nach JWT-Beispielen außerhalb der Google-Authentifizierung gibt es nur Grillen und Entwürfe zum JWT-Konzept. Ist das wirklich so neu und möglicherweise ein von Google entwickeltes System?
Das Java-Sample, das mir am nächsten kommt, sieht ziemlich intensiv und einschüchternd aus. Es muss etwas in C # geben, mit dem ich zumindest anfangen könnte. Jede Hilfe dabei wäre toll!
Antworten:
Vielen Dank an alle. Ich habe eine Basisimplementierung eines Json-Web-Tokens gefunden und diese mit der Google-Variante erweitert. Ich habe es immer noch nicht vollständig geklappt, aber es ist zu 97% da. Dieses Projekt hat seinen Dampf verloren, also wird dies hoffentlich jemand anderem helfen, einen guten Vorsprung zu erlangen:
Hinweis: Änderungen, die ich an der Basisimplementierung vorgenommen habe (ich kann mich nicht erinnern, wo ich sie gefunden habe), sind:
Und dann meine google-spezifische JWT-Klasse:
quelle
Nachdem all diese Monate nach der ursprünglichen Frage vergangen sind, ist es nun erwähnenswert, dass Microsoft eine eigene Lösung entwickelt hat. Siehe http://blogs.msdn.com/b/vbertocci/archive/2012/11/20/introducing-the-developer-preview-of-the-json-web-token-handler-for-the-microsoft-net -framework-4-5.aspx für Details.
quelle
Ich habe es nie benutzt, aber es gibt eine JWT-Implementierung auf NuGet.
Paket: https://nuget.org/packages/JWT
Quelle: https://github.com/johnsheehan/jwt
.NET 4.0-kompatibel: https://www.nuget.org/packages/jose-jwt/
Sie können auch hier gehen: https://jwt.io/ und auf "Bibliotheken" klicken.
quelle
Hier ist ein Arbeitsbeispiel:
http://zavitax.wordpress.com/2012/12/17/logging-in-with-google-service-account-in-c-jwt/
Das Sammeln der über das Internet verstreuten Teile hat einige Zeit in Anspruch genommen. Die Dokumente sind ziemlich unvollständig ...
quelle
Dies ist meine Implementierung der (Google) JWT-Validierung in .NET. Es basiert auf anderen Implementierungen in Stack Overflow- und GitHub-Gists.
Beachten Sie, dass Sie zur Verwendung einen Verweis auf das NuGet-Paket hinzufügen müssen
System.Net.Http.Formatting.Extension
. Ohne dies erkennt der Compiler dieReadAsAsync<>
Methode nicht.quelle
IssuerSigningKeys
wenn dasIssuerSigningKeyResolver
zur Verfügung gestellt wird?Schauen Sie sich die Google Client Library für .NET an .
quelle
Es wäre besser, Standard- und berühmte Bibliotheken zu verwenden, als den Code von Grund auf neu zu schreiben.
Mit diesen Bibliotheken können Sie ein JWT-Token generieren und mit RS256 wie folgt signieren.
ps: Der private RSA-Schlüssel sollte das folgende Format haben:
----- RSA PRIVATE KEY BEGINNEN ----- {Base64-formatierter Wert} ----- END RSA PRIVATE KEY -----
quelle
Hier ist ein weiteres REST- Beispiel für Google Service-Konten, die auf G Suite- Benutzer und -Gruppen zugreifen und sich über JWT authentifizieren . Dies war nur durch Reflexion von Google-Bibliotheken möglich, da die Google-Dokumentation dieser APIs mehr als schrecklich ist . Jeder, der mit dem Codieren in MS-Technologien vertraut ist, wird es schwer haben, herauszufinden, wie alles in den Google-Diensten zusammenpasst.
quelle
Hier ist die Liste der Klassen und Funktionen:
quelle