预计到达时间 2:
我能够使用公开可用的文档和我的 SO 广泛的密码学知识以及 MSDN 上处理 OAuth2 实现的最重要部分的一个方便的代码示例来弄清楚所有这些 - 验证签名 JWT 的完整性。
关键组件是验证来自您的 OAuth2 提供商的 JWT 响应的完整性 - 由于对加密功能的理解不足,许多开发人员未能正确实现这一点,这就是为什么来自各种提供商(包括 Google)的公共文档建议使用预先存在的库来处理身份验证。
问题是 DotNetOpenAuth多年来没有更新,我不建议使用老化的库进行身份验证,因为不知道哪些安全漏洞可能仍未修补。
C# 中的验证组件使用 RSAPKCS1SignatureDeformatter.VerifySignature,MSDN 文章中有关此方法的示例代码几乎是您需要使用的示例代码,以确保签名的 JWT 有效且未被恶意第三方拦截派对。
预计到达时间:
由于 Google 使用 google-oauth2 标记专门将用户引导至 Stack Overflow,以获取有关 Google 的 OAuth2 API 的问题、帮助和支持,因此我将其发布在 Stack Overflow 上。2013 年 3 月实施了对所有 Google OAuth2 支持的 Stack Overflow 迁移,如本公告所示:
https://groups.google.com/forum/#!forum/oauth2-dev
设想:
具有第三方用户登录的新 ASP.NET C# 应用程序。我首先实现了 Google OAuth2,然后将转向其他服务(Facebook、通用 OpenID 等)。我知道有 C# 的现有库,但我想尽可能避免使用第三方库。
在长时间阅读 Google 的 OAuth2 文档并弄清楚 JWT 规范之后,我已经走得很远了。但是,我试图确保我理解用户允许我的应用程序使用他们的帐户后谷歌返回的 Base64 编码 JWT 的第三段。
前两段只是 Base64 编码的明文。得到那么多;这很容易用 JavaScriptSerializer 解码和解析。我坚持的是第三部分,据我所知,它需要用于验证 Google JWT 是否有效且不受任何恶意代码的影响。
在进入 C# 为我的应用程序编写代码之前,我一直在尝试使用 OpenSSL 对二进制 Base64 解码段进行解码,但我无法使用 Google 的公共证书解码或验证内容。
是否有关于 C# 和 Google 身份验证的体面文档?我只能找到使用 DotNetOpenAuth 或其他库的示例。