1

我一直在研究 OAuth2 规范和大量支持材料,但无法确定用于我的用例的最佳方法/流程。

我有一个 wep 应用程序,我的用户可以通过 SSO 机制访问它。这是一个足够基本的机制,但它涉及用户在自己的网络上授权自己,并向我发送一个包含用户信息的加密令牌。我处理这个并在我的网络应用程序上设置一个会话。

我现在有一组rest api,可以让移动网络客户端(目前是android)从我的网络应用程序中提取数据。我想重新使用此 SSO 机制来生成一个 OAuth 令牌,移动客户端使用该令牌在每个休息请求中标识自己。理想情况下,流程应该是无缝的,即用户在他们的手机上打开浏览器,在他们自己的系统上进行身份验证,然后使用 OAuth 令牌定向到移动 Web 客户端的主 URL。

从我读到的所有 OAuth2 流程似乎都以另一种方式工作,即用户首先与我的授权服务器交谈,然后将被重定向到他们自己的身份验证系统,然后将被重定向回我的授权服务器并获得令牌. 我担心这种方式可能需要更改我的用户在本地授权的方式。

我在这里错过了什么吗?

4

1 回答 1

1

如果我正确理解了您的问题,那就没那么复杂了。您的方案应使用为移动应用程序设计的隐式授权消息流 ( https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-26#section-4.2 )。所以你的消息流将是:

  1. 当移动应用程序启动时,它会向 OAuth 服务器发送一个令牌请求。服务器响应重定向到您的 Web 应用程序。结果页面显示给用户。
  2. 用户登录(手动或使用 SSO),阅读授权请求的详细信息并希望批准它。批准被发送到 OAuth 服务器。
  3. OAuth 服务器生成一个令牌并返回一个重定向,其中包含 URL 片段中的令牌信息。
  4. 您的移动应用程序从片段中提取令牌并使用它来访问受保护的资源。

要实现这一点,您的移动设备需要一个 OAuth 客户端、一个 OAuth 服务器 Web 应用程序和 Web 应用程序中的批准页面来支持该场景。如果 OAuth 服务器紧密集成到您的 Web 应用程序中,您可能不需要服务器和应用程序之间的重定向。

于 2012-05-30T11:35:58.437 回答