在应用程序凭证中看不到客户端秘密



我有一个c#的Windows应用程序,我想连接到谷歌日历。在这里的教程和文档示例中,它们需要一些客户机秘密,这些秘密将在请求服务帐户的客户机ID时生成。但事实并非如此。但是,我可以看到公钥指纹,并且我安装了一个在请求客户端ID时生成的证书。

我猜他们的文档已经过时了。谁能给我一个教程/参考或解释这是如何工作的现在?

谢谢

上次我使用Google Calendar API时,您不需要Oauth服务帐户授权的客户端密钥。你只需要应用程序ID,私钥和服务帐户的电子邮件地址,如果我是对的。我在java中使用了它,但这里有一个。net的例子,如果它能帮助你。

https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth service_account

根据RFC 6749 (OAuth 2.0), OAuth 2.0授权服务器的令牌端点在以下情况下需要客户端身份验证

  1. 客户端应用程序的客户端类型为机密
  2. 客户端应用程序的客户端类型为public,但客户端应用程序已获得客户端凭证(client_id + client_secret)。

换句话说,当客户端应用程序的客户端类型是public并且客户端应用程序还没有被颁发客户端凭证时,不需要客户端身份验证(因此不需要client_secret)。

根据定义,公共客户端不能对其客户端凭证保密。因此,一般来说,OAuth 2.0授权服务器的实现不会为公共客户机应用程序发出客户机秘密。听起来Google的实现也是如此。

Google没有向您的应用程序发出客户端秘密的原因可能是您选择的客户端配置使您的客户端应用程序成为公共客户端。

公钥指纹是另一回事。RFC 6749 (OAuth 2.0)没有提到任何关于公钥的内容。相反,我猜它可能与OpenID连接核心1.0,OpenID连接动态客户端注册1.0(特别是token_endpoint_auth_method)或OAuth 2.0客户端身份验证和授权授予的断言框架有关。您必须阅读Google的文档才能了解公钥指纹的用途。

相关内容

  • 没有找到相关文章

最新更新