3

我们知道:

在里面OAuth 2.0Authorization Code Flow几个实体:

  • 一个)User
  • B) 用户代理 ( Browser)
  • C) 客户端应用程序 ( Mobile App)
  • D) 机密客户(中间人Web Server
  • E)Authorization Server

我们也知道需要保留Web ServerClient Secret返回的/token路线。Authorization ServerAuthorization CodeClient SecretAccess Token

我的问题:

当用户登录到Authorization ProviderbybrowserAuthorization Server返回Authorization Code到重定向 URL(到)时,到底应该Web Server执行以下哪一种方式?为什么?

X)

  1. Web Server应该返回Authorization Code作为对Browser适当深度链接格式的响应。
  2. Browser打开Mobile App并传递给Authorization Code
  3. 使用PKCEMobile App将发送到(通过调用 API)并发送请求以获取并将返回到.Authorization CodeWeb ServerWeb ServerAuthorization ServerAccess tokenMobile App

是)

  1. Web Server应该Access Token通过接收到的来获取并以深度链接格式Authorization Code返回Access Token给浏览器的响应。
  2. Browser打开Mobile App并传递给Access Token它。

我在这里看到了下面的图表:

在此处输入图像描述

并认为正确的方式是X,因为在X方式中,无需深度链接即可直接Mobile App获取,并且X是安全的。但我需要一份有效的文件并在答案中参考官方文件。Access TokenAPIBrowser

我想确定......哪一个是正确的方法?X还是Y?

  .

4

1 回答 1

2

Discalimer:我不是移动应用程序开发人员。

我认为X是正确的,因为:

  1. 遵守标准流程
  2. 从 WebServer 获取 access_token 然后重定向到应用程序是不安全的,因为令牌是明文格式 (url) 并且可能被拦截或记录。
  3. 我认为关于设计的第 6 点可以通过 POST 来执行?请求和值在响应的正文中(无日志记录),您也可以使用 PKCE 以获得更好的安全性。

其他有用的链接:
oAuth2 for native app
oAuth2 Best practices for native app

于 2019-07-23T17:03:38.653 回答