Czuję, że biorę tutaj szalone tabletki. Zwykle w Internecie jest zawsze milion bibliotek i próbek do dowolnego zadania. Próbuję zaimplementować uwierzytelnianie za pomocą „konta usługi” Google przy użyciu tokenów sieciowych JSON (JWT), jak opisano tutaj .
Jednak istnieją tylko biblioteki klienckie w PHP, Python i Java. Nawet szukając przykładów JWT poza uwierzytelnianiem Google, istnieją tylko świerszcze i szkice na temat koncepcji JWT. Czy to naprawdę takie nowe i prawdopodobnie zastrzeżony system Google?
Próbka Java, która jest najbliższa, jaką udało mi się zinterpretować, wygląda dość intensywnie i onieśmielająco. W C # musi być coś, od czego mógłbym przynajmniej zacząć. Jakakolwiek pomoc byłaby świetna!
Odpowiedzi:
Dziękuję wszystkim. Znalazłem podstawową implementację tokena internetowego Json i rozszerzyłem ją o smak Google. Nadal nie udało mi się tego całkowicie rozwiązać, ale jest tam 97%. Ten projekt stracił na sile, więc miejmy nadzieję, że pomoże to komuś innemu na dobry start:
Uwaga: Zmiany, które wprowadziłem w podstawowej implementacji (nie pamiętam, gdzie ją znalazłem) to:
A potem moja klasa JWT specyficzna dla Google:
źródło
Po tych wszystkich miesiącach od pierwotnego pytania warto teraz wskazać, że Microsoft opracował własne rozwiązanie. Zobacz 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, aby uzyskać szczegółowe informacje.
źródło
Nigdy go nie używałem, ale w NuGet jest implementacja JWT.
Pakiet: https://nuget.org/packages/JWT
Źródło: https://github.com/johnsheehan/jwt
Zgodność z .NET 4.0: https://www.nuget.org/packages/jose-jwt/
Możesz także wejść tutaj: https://jwt.io/ i kliknąć „biblioteki”.
źródło
Oto działający przykład:
http://zavitax.wordpress.com/2012/12/17/logging-in-with-google-service-account-in-c-jwt/
Zebranie fragmentów rozsypanych w sieci zajęło trochę czasu, dokumenty są raczej niekompletne ...
źródło
To jest moja implementacja walidacji JWT (Google) w .NET. Opiera się na innych implementacjach na Gists Stack Overflow i GitHub.
Zwróć uwagę, że aby z niego skorzystać, musisz dodać odwołanie do pakietu NuGet
System.Net.Http.Formatting.Extension
. Bez tego kompilator nie rozpoznaReadAsAsync<>
metody.źródło
IssuerSigningKeys
jeśliIssuerSigningKeyResolver
jest podany?Zapoznaj się z Biblioteką klienta Google dla .NET .
źródło
Lepiej byłoby użyć standardowych i znanych bibliotek zamiast pisać kod od zera.
Korzystając z tych bibliotek, możesz wygenerować token JWT i podpisać go za pomocą RS256, jak poniżej.
ps: klucz prywatny RSA powinien mieć następujący format:
----- BEGIN RSA PRIVATE KEY ----- {base64 formatted value} ----- END RSA PRIVATE KEY -----
źródło
Oto kolejny działający przykład tylko do REST dla kont usług Google uzyskujących dostęp do użytkowników i grup G Suite , uwierzytelniających się przez JWT . Było to możliwe tylko dzięki odbiciu bibliotek Google, ponieważ dokumentacja Google dotycząca tych interfejsów API jest nie do zniesienia . Każdy, kto jest przyzwyczajony do programowania w technologiach MS, będzie miał trudności ze zrozumieniem, jak wszystko idzie razem w usługach Google.
źródło
Oto lista klas i funkcji:
źródło