我觉得我在吃疯狂的药丸。通常在网络上总是有上百万个库和示例在执行任何给定的任务。我正试图通过使用JSON Web令牌(JWT)来实现Google“服务帐户”的身份验证,如这里所描述的。
然而,只有PHP、Python和Java的客户端库。即使在Google的认证之外搜索JWT示例,也只能找到关于JWT概念的一些粗略的东西。这真的很新吗?可能是Google专有的系统吗?
Java示例是我能解释的最接近的示例,看起来非常密集和令人生畏。在C#中一定有一些东西,我至少可以开始使用。任何关于这方面的帮助都是很好的!
6条答案
按热度按时间szqfcxe21#
我找到了一个Json Web Token的基本实现,并使用Google风格对其进行了扩展。我还没有完全完成它,但已经完成了97%。这个项目失去了动力,所以希望这能帮助其他人获得一个良好的开端:
注意:我对基本实现所做的更改(记不起在哪里找到的)是:
1.更改HS 256-〉RS 256
1.交换了标题中的JWT和ALG顺序。不确定是谁弄错了,谷歌还是规范,但谷歌根据他们的文档采取了下面的方式。
然后是我的google专用JWT类:
06odsfpq2#
我从来没有使用过它,但在NuGet上有一个JWT实现。
产品 Package :https://nuget.org/packages/JWT
来源:https://github.com/johnsheehan/jwt
与.NET 4.0兼容:https://www.nuget.org/packages/jose-jwt/
您也可以访问以下网址:https://jwt.io/并单击“库”。
plicqrtu3#
这是我在. NET中实现的(Google)JWT Validation。它基于Stack Overflow和GitHub gist上的其他实现。
请注意,为了使用它,您需要添加一个对NuGet包
System.Net.Http.Formatting.Extension
的引用。如果没有这个引用,编译器将无法识别ReadAsAsync<>
方法。mdfafbf14#
最好是使用标准的和著名的库,而不是从头开始编写代码。
使用这些库,您可以生成JWT标记并使用RS256对其进行签名,如下所示。
ps:RSA私钥应具有以下格式:
axkjgtzd5#
下面是另一个仅限REST的Google服务帐户访问G Suite用户和组的工作示例,通过JWT进行身份验证。这只能通过Google库的反射来实现,因为这些API的Google文档非常糟糕。任何使用MS技术编码的人都很难弄清楚Google服务中的所有内容是如何结合在一起的。
yeotifhr6#
下面是类和函数的列表: