【问题标题】:oauth 2 implementation in mobile SDKoauth 2 在移动 SDK 中的实现
【发布时间】:2014-08-18 06:15:12
【问题描述】:

我已经创建了 SDK,现在想要集成 oauth 以进行身份​​验证过程。现在我想做和 Facebook SDK 一样的事情,如果客户端应用程序已经安装并登录,它会切换到该应用程序请求许可并切换回想要授权它的应用程序。如果客户端应用程序不存在,将打开网页并在登录时请求许可,然后在登录后重定向到我的应用程序。

我们已经在服务器上实现了 oauth,但不确定我们将使用哪个 grant_type 来实现上述功能。我们无法将密码存储在客户端应用程序中。

如果有人知道如何实现此功能并实现与其他 SDK(Facebook、Twitter)相同的流程,请告诉我。

【问题讨论】:

    标签: android ios facebook oauth oauth-2.0


    【解决方案1】:

    对于基于移动的应用,请使用以下 URL 进行身份验证:

    POST https://api.example.com/token
    grant_type=authorization_code&
    code=AUTH_CODE_HERE&
    redirect_uri=REDIRECT_URI&
    client_id=CLIENT_ID
    

    如果用户登录,则从应用程序传递身份验证代码,否则如果用户未登录,请先导航到登录页面,成功登录授权页面照常出现。 注意:这可能是不安全的,因为我们在查询参数中发送代码,但在请求中通过 ssl 增强安全性进行。

    用于浏览器身份验证

    https://example.com/auth?response_type=token& client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=photos
    

    如果用户已经登录,身份验证选择登录会话。

    【讨论】:

      【解决方案2】:

      当你说“我想和 Facebook SDK 一样”时,我想你已经回答了你自己的问题

      Facebook SDK 提供了检测是否安装了 Facebook 应用程序的框架,以避免通过 WebView 界面进行注册。 Google 还通过 Google+ 符号而不是浏览器提供authentication and authorization API。如您所见:

      文档建议使用正确的设备基础架构而不是系统浏览器。

      根据post,可以通过程序检测是否安装了应用程序。对于 Android,我认为这两个 SDK 在您触发注册/登录/退出过程时会检查是否安装了它们的相关应用,并在必要时调用系统浏览器。

      因此,为了提供通用的 OAuth 2.0,您也可以以编程方式执行相同的操作,但我想钻取这些信息、选择正确的应用程序并启动它并不是一件容易的事。

      【讨论】:

      • 检测应用程序并没有真正受到挑战,我的问题更多的是关于 oAuth 实现,即我们如何将令牌传递给服务器以使用 SSO 和正确的 oAuth 流程。
      • 一种可能性是通过 HTTPS 授权标头请求将令牌传递给服务器。服务器可以检查访问 OAuth 2.0 提供程序的“expires_in”,并且仅在令牌有效时回复您的请求。当它过期时,您将返回 ERROR 401,强制您的 SDK 在应用程序端更新令牌。其他可能性是混合授权:您从 OAuth 2.0 实体获得一个 access_token 和一个一次性代码。此代码被发送到您的服务器,并通过其自己的 access_token 和 id_token 进行交换。看看goo.gl/nOEbFC
      猜你喜欢
      • 1970-01-01
      • 2012-06-22
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多