V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Gonster
V2EX  ›  OAuth

关于 native 应用程序在使用 OAuth 2.0 的一些问题

  •  
  •   Gonster · 2016-05-05 15:35:09 +08:00 · 7669 次点击
    这是一个创建于 3122 天前的主题,其中的信息可能已经有所发展或是发生改变。

    WebView 的安全问题

    很多手机 app 用第三方身份提供商通过 OAuth2.0 (或者类似 OpenID Connect 的方式)做登录的,身份提供商一般是允许手机应用登录的时候用 WebView 打开提供商的登录页面的。

    WebView 的请求内容可以被手机应用拦截,那用 OAuth2.0 的意义呢,密码不是会被手机应用获取到吗,或者一般像 QQ 这些是靠他们提供的 SDK 保证密码安全的吗?

    installed native application 相关的问题

    或者说是客户端类型是 public 的相关的问题, OAuth2.0 协议里认为手机 app 这类的程序是不能保证客户端密码安全的。

    public 类型的客户端如果是 web app 还好,它是有一个固定的 URL 的,也就是说通过redirect_uri能保证只有这个 web app 能获得授权码,或者说也能保证只有这个网站能用这个客户端 ID 。

    但是本地应用程序这类的,redirect_uri也挺不靠谱的:

    1. 比如客户端获得授权码可能是通过在本地监听某个端口,可能在授权服务器上注册的就是127.0.0.1:port之类的重定向 uri 。
    2. 客户端在本地注册一个 uri scheme ,授权服务器上注册scheme:XXXXX
    3. 甚至有些情况下是允许用户来拷贝授权码到客户端里面去的,比如在这种情况 Google 会让客户端使用urn:ietf:wg:oauth:2.0:oob这样的redirect_uri来打开拷贝授权码的页面。

    这些客户端在授权服务器上注册的意义似乎并不是很大啊,而且如果客户端 ID (客户端 ID 没有要求要保密)被其他人获取了以后,其他人也很有可能能冒充使用啊。

    或者说这情况是不是还是应该让这类本地安装的程序的服务器端来做授权,让程序和他的服务器端来通信更佳合适,或者客户端ID也应该要随机生成不能随意遍历和预测?

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3215 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:16 · PVG 20:16 · LAX 04:16 · JFK 07:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.