相关疑难解决方法(0)

OAuth 2中隐式授权授权类型的目的是什么?

我不知道我是否只是有某种盲点或什么,但我已多次阅读OAuth 2规范并仔细阅读邮件列表档案,我还没有找到一个很好的解释为什么隐含格兰特已经开发出用于获得访问令牌的流程.与授权代码授予相比,似乎只是放弃了客户端身份验证,没有非常令人信服的理由.这是如何"针对使用脚本语言在浏览器中实现的客户端进行优化"(引用规范)?

两个流程都是相同的(来源:http://tools.ietf.org/html/draft-ietf-oauth-v2-22):

  1. 客户端通过将资源所有者的用户代理指向授权端点来启动流.
  2. 授权服务器对资源所有者进行身份验证(通过用户代理),并确定资源所有者是否授予或拒绝客户端的访问请求.
  3. 假设资源所有者授予访问权限,授权服务器使用先前提供的重定向URI(在请求中或在客户端注册期间)将用户代理重定向回客户端.
    • 重定向URI包括授权代码(授权代码流)
    • 重定向URI包括URI片段中的访问令牌(隐式流)

这是流量分裂的地方.在这两种情况下,此时重定向URI都是由客户端托管的某个端点:

  • 在授权代码流中,当用户代理使用URI中的授权代码命中该端点时,该端点上的代码会将授权代码及其客户端凭据交换为访问令牌,然后可以根据需要使用该令牌.例如,它可以将其写入页面上的脚本可以访问的网页中.
  • Implicit流完全跳过此客户端身份验证步骤,只是加载带有客户端脚本的网页.这里有一个可爱的技巧,URL片段可以防止访问令牌过多传递,但最终结果基本相同:客户端托管的站点提供一个页面,其中包含一些可以获取访问令牌的脚本.

因此我的问题是:通过跳过客户端身份验证步骤获得了什么?

user-agent oauth oauth-2.0

242
推荐指数
7
解决办法
7万
查看次数

两个工作流程有什么区别?何时使用授权码流程?

OAuth 2.0具有多个工作流程.关于这两个,我有几个问题.

  1. 授权代码流 - 用户从客户端应用程序登录,授权服务器向应用程序返回授权代码.然后,应用程序交换访问令牌的授权码.
  2. 隐式授权流程 - 用户从客户端应用程序登录,授权服务器直接向客户端应用程序发出访问令牌.

这两种方法在安全性方面有什么区别?哪一个更安全,为什么?

当服务器可以直接发出Access令牌时,我没有看到为什么在一个工作流中添加额外步骤(令牌的交换授权代码)的原因.

不同的网站说,当客户端应用程序可以保证凭据安全时,使用授权代码流.为什么?

oauth oauth-2.0

152
推荐指数
5
解决办法
5万
查看次数

oAuth2.0:为什么需要"授权代码"而只需要令牌?

使用oAuth 2.0,在"授权代码"授权授权中,我首先调用"/ authorize",获取代码,然后在调用"/ token"时使用此代码来获取访问令牌.

我的问题:为什么这是流程?我想这是出于安全原因,但我无法弄明白.为什么实现是这样的,并且在第一次调用("/ authorize")之后没有立即获取访问令牌?

为什么我们需要这个代码?

oauth-2.0

20
推荐指数
3
解决办法
4007
查看次数

为什么当双腿工作得如此之好时,还有三足OAuth2?

2脚OAuth2用于基于浏览器的应用程序,其中不能公开隐藏任何客户端凭据.三维OAuth2由"Web服务器应用程序"使用,其中服务器之间有第三次调用.这里描述的都很好.

问题:当双腿似乎很好的时候,为什么还要用三条腿来打扰?

这对提供商和客户来说都是更多的工作.为什么没有一个大球员采取行动并取消三条腿?

authentication oauth oauth-2.0

19
推荐指数
1
解决办法
2万
查看次数

基于哈希片段的安全性如何工作?

我正在学习OAuth 2.0,无法在隐式授权流程中获得保护访问令牌的方法.规范中有一些论文和一些看起来相互矛盾的SO答案.有人可以清理一下吗?来自SO答案和规范的引言令我感到困惑:

  1. (来自规范)用于将访问令牌传递到客户端的重定向URI.可以向访问资源所有者的用户代理的资源所有者或其他应用程序公开访问令牌.
  2. (来自规范)访问令牌凭证(以及任何机密访问令牌属性)必须在传输和存储中保密,并且仅在授权服务器,访问令牌有效的资源服务器以及与之对应的客户端之间共享.发出访问令牌.访问令牌凭证必须仅使用TLS传输.
  3. (来自接受和赞成的回答)在隐式流中,访问令牌作为哈希片段传递,只有浏览器知道哈希片段.浏览器会将哈希片段直接传递到目标网页/重定向URI,即客户端的网页(哈希片段不是HTTP请求的一部分),因此您必须使用Javascript读取哈希片段.哈希片段不能被中间服务器/路由器拦截(这很重要).

我的问题:

P1表示通过重定向URI和P2传递给客户端的令牌表示传递通道必须是TLS编辑的.但是P3说哈希片段没有发送到网络.如果访问令牌没有发送,那么它是如何到达客户端的,因为它是哈希片段?无论如何,它必须通过网络发送不是吗?或者使用重定向URI发送令牌可以在没有网络交易的情

唯一可能的解释 - 在引擎盖下浏览器仅通过网络发送url的非哈希部分,并且在加载新页面之后,只需插入哈希片段并使其可用于JS.如果我是对的,我仍然无法理解为什么我们不使用可靠,安全的HTTPS通道作为响应参数发送令牌?

java user-agent oauth oauth-2.0

14
推荐指数
1
解决办法
2597
查看次数

下文中的哈希片段指的是什么?

在下面的 帖子中,他们使用术语哈希片段。我不太确定他们的意思是什么。他们指的是网址中散列后的文本吗?

例如 www.someurl.com#somefragment

我在文章中看到的简介如下

在隐式流中,访问令牌直接作为散列 片段(而不是作为 URL 参数)传递。关于散列片段的一件重要事情是,一旦您点击包含散列片段的链接,只有浏览器知道散列片段。浏览器会将哈希片段直接传递到目标网页(重定向 URI/客户端的网页)。哈希片段具有以下属性:

authentication

6
推荐指数
1
解决办法
2083
查看次数

标签 统计

oauth-2.0 ×5

oauth ×4

authentication ×2

user-agent ×2

java ×1