Sinto que estou tomando pílulas malucas aqui. Normalmente, há sempre um milhão de bibliotecas e amostras flutuando pela web para qualquer tarefa. Estou tentando implementar a autenticação com uma "conta de serviço" do Google usando JSON Web Tokens (JWT) conforme descrito aqui .
No entanto, existem apenas bibliotecas de cliente em PHP, Python e Java. Mesmo procurando por exemplos de JWT fora da autenticação do Google, há apenas grilos e rascunhos no conceito de JWT. Isso é realmente tão novo e possivelmente um sistema proprietário do Google?
O exemplo de java que é o mais próximo que consegui interpretar parece muito intenso e intimidante. Deve haver algo em C # com o qual eu pudesse pelo menos começar. Qualquer ajuda com isso seria ótimo!
Respostas:
Obrigado a todos. Encontrei uma implementação básica de um Json Web Token e a expandi com o sabor do Google. Ainda não resolvi totalmente, mas está 97% lá. Este projeto perdeu o fôlego, então espero que isso ajude alguém a ter uma boa vantagem:
Observação: as alterações que fiz na implementação de base (não me lembro onde a encontrei) são:
E então minha classe JWT específica do Google:
fonte
Depois de todos esses meses terem se passado após a pergunta original, agora vale a pena destacar que a Microsoft desenvolveu uma solução própria. Consulte 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 para obter detalhes.
fonte
Eu nunca usei, mas há uma implementação JWT no NuGet.
Pacote: https://nuget.org/packages/JWT
Fonte: https://github.com/johnsheehan/jwt
Compatível com .NET 4.0: https://www.nuget.org/packages/jose-jwt/
Você também pode ir aqui: https://jwt.io/ e clicar em "bibliotecas".
fonte
Aqui está um exemplo prático:
http://zavitax.wordpress.com/2012/12/17/logging-in-with-google-service-account-in-c-jwt/
Demorou bastante para reunir as peças espalhadas pela web, os documentos estão bastante incompletos ...
fonte
Esta é a minha implementação da Validação JWT (Google) em .NET. Ele é baseado em outras implementações em gists Stack Overflow e GitHub.
Observe que, para usá-lo, você precisa adicionar uma referência ao pacote NuGet
System.Net.Http.Formatting.Extension
. Sem isso, o compilador não reconhecerá oReadAsAsync<>
método.fonte
IssuerSigningKeys
se oIssuerSigningKeyResolver
é fornecido?Dê uma olhada na biblioteca de cliente do Google para .NET .
fonte
Seria melhor usar bibliotecas padrão e famosas em vez de escrever o código do zero.
Usando essas bibliotecas, você pode gerar um token JWT e assiná-lo usando RS256 conforme abaixo.
ps: a chave privada RSA deve ter o seguinte formato:
----- BEGIN RSA PRIVATE KEY ----- {base64 formatted value} ----- END RSA PRIVATE KEY -----
fonte
Aqui está outro exemplo funcional somente REST para contas de serviço do Google que acessam usuários e grupos do G Suite , autenticando por JWT . Isso só foi possível através do reflexo das bibliotecas do Google, uma vez que a documentação do Google dessas APIs é além de terrível . Qualquer pessoa acostumada a codificar em tecnologias MS terá dificuldade em descobrir como tudo funciona nos serviços do Google.
fonte
Aqui está a lista de classes e funções:
fonte