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

OpenID连接和服务器端授权代码流

司空丰
2023-03-14

我有几个问题。

使用授权代码流时,我是否需要在客户端验证随机数?在一般的OAuth提供程序实现中,从授权代码获取访问令牌的过程只工作一次。由此看来,授权码流在不使用随机数的情况下,已经支持重放攻击了?

在web应用程序中使用授权代码流有什么好处?ID令牌是一种身份验证机制,而不是授权机制,据我所知,它用于验证哪个OpenID提供者正在为哪个中继方验证哪个用户。

但在授权代码流中,

  • OAuth 2.0需要使用HTTPS。由此,如果SSL证书验证被正确地实现,它将是有效的OpenID提供者证明。
  • 在一般的OAuth提供者实现中,当从授权码中获取访问令牌时,下面验证授权码、客户端ID和秘密的组合。由此,它将证明正在从正确的OAuth客户端执行访问令牌获取过程。
  • 通过指定状态参数来创建授权请求,并在获取访问令牌时验证它,它将证明正在从正确的用户那里获取访问令牌。

共有1个答案

单于翰飞
2023-03-14

我不是OpenID Connect的权威,但这是我的两分钱...

授权代码流和nonce

使用授权代码流时,是否需要在客户端验证nonce?

规范规定,如果在授权请求中发送nonce,则必须对其进行验证(请参阅中的“nonce”)http://openid.net/specs/openid-connect-core-1_0.html#IDToken)。但是,授权代码流不需要发送nonce,因此您可以完全忽略它。在授权代码流的情况下,我认为您的观点是正确的,代码减轻了重播攻击——使nonce变得不必要。然而,由于可以在需要nonce的情况下使用隐式/混合流,因此id_令牌验证逻辑也可以相同,即“如果在身份验证请求中发送了nonce值,则必须存在nonce声明并检查其值”

授权代码流和ID令牌

在web应用程序中使用授权代码流有什么好处?

我认为授权代码流的好处在于,您可以将令牌放在浏览器之外,并且可能只将令牌放在服务器端。

这里有一个关于为正确的场景选择正确的流的有用链接

 类似资料:
  • 说明 微信授权码查询openidSDK。 官方文档:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_13&index=9 类 请求参数类 请求参数 类名:\Yurun\PaySDK\Weixin\AuthCodeToOpenid\Request 属性 名称 类型 说明 $_apiMethod string 接口名称 $au

  • 根据PKCE规范,OAuth提供者使用code\u验证器来避免中间人攻击。我的理解是,将OAuth代码交换为令牌是基于JavaScript的单页应用程序(SPA)的最佳选择。 当我用谷歌应用编程接口进行实验时,它说“client_secret不见了”。 这是HTTP请求和响应。 ID: 1地址:https://oauth2.googleapis.com/tokenHttp-Method: POST

  • 我一直在广泛阅读有关OAuth和OpenID Connect的内容,但此问题专门涉及OAuth2资源所有者密码授予(又名OAuth2资源所有者凭据授予,又名OAuth2密码授予) 某些资源(例如Justin Richer的《OAuth2 in Action》一书)说不要使用OAuth2资源所有者密码授予进行身份验证-请参阅书中的第6.1.3节。 以下其他好资源都说我们可以使用OAuth2资源所有者

  • 现在,我了解了访问令牌和刷新令牌,但我不知道如何实现它。 我有一个项目,前端是棱角分明的,后端是node.js的,前面有微服务架构和网关。我可以使用像oaust2授权服务器一样的aust0,用户存储在里面? 怎么做?在aust0文档中有大量的说明,我不明白哪个适合我。 我必须通过网关拦截登录、注销和注册,并重定向到auth0,或者我必须在我的用户微服务内部完成这些操作? 在我的项目中,还有个人信息

  • 我正面临着OpenId Connect的自定义实现。但是(总是有一个但是)我有一些疑问: 我理解获取acces_token和id_token的过程,除了OP向客户端提供authorization_code的步骤。如果它是通过重定向完成的(使用重定向uri) < li >最终用户能够看到授权码吗?它不会过期吗?想象一下,我们捕获了它,并在稍后(几天后)使用它,这是一个安全漏洞吗?令牌endpoint

  • 本文向大家介绍Android连接服务器端的Socket的实例代码,包括了Android连接服务器端的Socket的实例代码的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴代码了,具体代码如下所述: package com.exa 以上所述是小编给大家介绍的Android连接服务器端的Socket的实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的