Authentication OAuth2隐式流总是三条腿的吗?

Authentication OAuth2隐式流总是三条腿的吗?,authentication,oauth,oauth-2.0,authorization,Authentication,Oauth,Oauth 2.0,Authorization,我正在使用OAuth2授权/身份验证设置一个web服务。如果我理解正确的话,隐式流应该用于本机桌面应用程序,因为反编译和其他过程可能会暴露客户端机密 隐式流需要一个有效的重定向URI,但我不明白应该如何使用这些URI。我不是在寻找通过facebook应用程序或其他什么的三条腿认证,而是两条腿的,可以直接访问我自己的网络服务。就像Facebook和Twitter应用程序本身一样 我的问题是:OAuth2隐式流总是三条腿的吗?如果是这样,Facebook和Twitter的应用程序如何确保客户机密不被

我正在使用OAuth2授权/身份验证设置一个web服务。如果我理解正确的话,隐式流应该用于本机桌面应用程序,因为反编译和其他过程可能会暴露客户端机密

隐式流需要一个有效的重定向URI,但我不明白应该如何使用这些URI。我不是在寻找通过facebook应用程序或其他什么的三条腿认证,而是两条腿的,可以直接访问我自己的网络服务。就像Facebook和Twitter应用程序本身一样


我的问题是:OAuth2隐式流总是三条腿的吗?如果是这样,Facebook和Twitter的应用程序如何确保客户机密不被泄露?如果他们使用隐式流,他们的重定向方案是如何工作的?

重定向URI是必要的,因为服务提供商需要在登录/用户同意后重定向回您的应用程序。对于桌面应用程序,您可能会打开浏览器以获得登录/用户同意,并需要将授权代码或访问令牌重新输入桌面应用程序

基本上有三种方法可以做到这一点:

谷歌很好地描述了有问题和可用的选项:

我今天有同样的问题,也找不到任何答案或帖子

到目前为止,我发现:

1) 是的,隐式授权流始终由两个/三个步骤组成(取决于您的计算方式):

  • 用户被重定向到授权页面

  • 用户确认他授予访问此应用程序的权限

  • 用户被重定向回消费者应用,访问令牌作为散列片段参数传递

2) 隐式授权流根本不使用客户端机密。无论如何,这是没有道理的——这是显而易见的。然而,仍然有一些安全措施:隐式授权通常需要预先批准的重定向URL,因此只有指定的受信任URL才能获得访问令牌

3) 是的,我还注意到,尽管Facebook/Twitter大量使用OAuth2,但当您使用他们自己的web应用程序时,您不会看到这些步骤。我有几点怀疑:

  • 他们可能根本不会将OAuth2用于自己的web应用程序

  • 他们可以使用自己的、未记录的流程传递令牌

  • 他们可以预先授权自己的应用程序,以便跳过授权步骤


我个人为我的申请选择了后者。我创建了一个不需要用户明确批准的内部应用程序列表。

首先,真的没有人知道这是怎么做到的吗?也许他们正在为自己的客户端使用
资源所有者密码凭据授予。
。有趣!那么facebook/twitter应用程序可能使用自定义回调URI方案?