当前位置: 首页 > 知识库问答 >
问题:

OAuth 2.0中的客户端秘密

龙正初
2023-03-14

共有1个答案

傅阿苏
2023-03-14

我有一个和问题1相同的问题,最近我自己也做了一些研究,我的结论是,不要把“客户秘密”作为秘密来保密是可以的。在OAuth2规范中,不对客户机保密的客户机类型称为“公共客户机”。以下事实可以防止恶意用户获取授权代码并访问令牌的可能性。

即使用户表明他/她信任客户机的服务,客户机也不能仅仅通过显示客户机id和客户机机密就从服务中获得授权码。相反,客户端必须直接从用户那里获得授权代码。(这通常是通过URL重定向来完成的,我将在后面讨论。)因此,对于恶意客户端,仅仅知道用户信任的客户端ID/Secret是不够的。它必须以某种方式涉及或欺骗用户来给它授权代码,这应该比只知道客户端ID/Secret更难。

让我们假设恶意客户端设法让用户参与进来,并使她/他单击服务页面上的“授权此应用程序”按钮。这将触发URL重定向响应,从服务到带有授权代码的用户浏览器。然后授权码将从用户的浏览器发送到重定向URL,客户端应该在重定向URL处监听以接收授权码。(重定向URL也可以是本地主机,我认为这是“公共客户端”接收授权代码的典型方式。)由于此重定向URL是用客户端ID/Secret在服务中注册的,因此恶意客户端无法控制授权代码的位置。这意味着使用您的客户端ID/Secret的恶意客户端在获取用户授权代码方面存在另一个障碍。

 类似资料:
  • 我试图在此应用程序中设置谷歌Oauth。我已经为远程和正式服创建了配置。它在开发环境中工作正常,但在生产环境中出现了这个错误,即Heroku。 收到此错误: 从这个终点: https://vast-ridge-80091.herokuapp.com/auth/google 这是我对生产环境的配置设置 我已经更新了heroku应用程序设置中的env变量,并仔细检查了所有内容,这些凭证是正确的。 这是

  • 下一个问题是如何刷新获得的访问令牌? 我试图使用下面的命令这样做,但我得到了“访问此资源需要完全身份验证”。在我获得新的刷新令牌后,我可以使用刷新令牌再次刷新我的新访问令牌吗? 谢谢。

  • 我试图使用Microsoft Graph API从应用程序管理Azure AD B2C用户,但我无法使用我的客户端id/secret进行身份验证。 首先,我按照这里的步骤注册了一个应用程序:https://docs.microsoft.com/en-us/azure/active-directory-b2c/microsoft-graph-get-started?tabs=app-雷加 在文章的最

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 我使用生成的app engine Android客户端(jar lib)。31个客户中有30个没有问题。但三星的一款平板电脑拒绝连接并给出了这样的死机: Android:4.4.4制造商:三星型号:SM-T533-日期:Mon Aug 03 09:49:03 CEST 2015 ApiUtils类: