在对移动应用程序使用OAuth 2.0授权码流时,浏览器是否应向移动应用程序返回授权码或访问令牌? 我们知道:

在对移动应用程序使用OAuth 2.0授权码流时,浏览器是否应向移动应用程序返回授权码或访问令牌? 我们知道:,oauth,oauth-2.0,single-sign-on,access-token,pkce,Oauth,Oauth 2.0,Single Sign On,Access Token,Pkce,在OAuth 2.0的授权代码流中有几个实体: A) 用户 B) 用户代理(浏览器) C) 客户端应用程序(移动应用程序) D) 机密客户端(中间人Web服务器) E) 授权服务器 我们还知道Web服务器保留客户机密,而授权服务器的/token路由需要授权码和客户机密来返回访问令牌 我的问题: 当用户通过browser和Authorization Server登录Authorization Provider并将授权代码返回到重定向URL(到Web服务器)时,应采用以下哪种方法?为什么? 十)

OAuth 2.0
授权代码流中有几个实体:

  • A)
    用户
  • B) 用户代理(
    浏览器
  • C) 客户端应用程序(
    移动应用程序
  • D) 机密客户端(中间人
    Web服务器
  • E)
    授权服务器
我们还知道
Web服务器
保留
客户机密
,而
授权服务器
/token
路由需要
授权码
客户机密
来返回
访问令牌

我的问题: 当用户通过
browser
Authorization Server
登录
Authorization Provider
并将
授权代码
返回到重定向URL(到
Web服务器
)时,应采用以下哪种方法?为什么?

十)
  • Web服务器
    应以适当的格式返回
    授权代码
    ,作为对
    浏览器
    的响应
  • 浏览器
    打开
    移动应用
    ,并将
    授权码
    传递给它
  • 移动应用程序
    用于将
    授权代码
    发送到
    Web服务器
    (通过调用API),而
    Web服务器
    将请求发送到
    授权服务器
    ,以获取
    访问令牌
    ,并将其返回到
    移动应用程序
  • Y)
  • Web服务器
    应通过接收到的
    授权码
    获取
    访问令牌
    ,并将
    访问令牌
    以格式返回给浏览器作为响应
  • 浏览器
    打开
    移动应用
    ,并将
    访问令牌
    传递给它
  • 我看到了下图:

    并且认为正确的方式是X,因为在X方式中,
    Mobile App
    通过
    API
    直接获取
    访问令牌,而无需
    浏览器
    深度链接,X是安全的。但我需要一份有效的文件,并在答复中提及官方文件

    我想确定

    哪一个是正确的方法?X还是Y?

    Discalimer:我不是一个移动应用程序开发者

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

  • 坚持标准流程
  • 从Web服务器获取access_令牌,然后重定向到应用程序是不安全的,因为该令牌的格式为明文(url),可能被拦截或记录
  • 我认为关于设计的第6点可以由一个帖子来完成吗?请求和值位于响应的主体中(无日志记录),并且您可以使用PKCE来提高安全性 其他有用的链接: