【问题标题】:Web API authentication and authorization (OAuth)Web API 身份验证和授权 (OAuth)
【发布时间】:2015-08-19 15:47:19
【问题描述】:

考虑以下(常见)场景。我将首先尝试使用 OAuth 指定我如何理解(好的)Web API 应该是什么样子。如果我有任何流程错误,请纠正我。

我的 API:关注的中心,所有客户都使用它。

我的网络应用程序:像其他客户端一样使用 API。

我的移动应用:也使用 API,与网络应用完全相同。用户应该能够在不打开浏览器的情况下进行身份验证。

第三方网络应用程序:也使用 API - 但是,用户/资源所有者必须授予应用程序执行某些操作的权限。他们通过重定向到我的网站(或打开一个弹出窗口)、必要时登录用户并提示用户访问来做到这一点。

第 3 方移动应用:要求与第 3 方网络应用相同。


问题

  • API 应该处理身份验证和授权吗?
  • API 如何知道谁(使用客户端应用程序的资源所有者)在使用 API?
  • 当用户使用我的官方客户端时,他们显然不必授予任何权限 - 我的客户端应该拥有所有权限。调用 API 时如何区分我的官方客户端和第三方客户端?

这是我的理解,并且到目前为止会这样做。这是我真正需要帮助的地方 - 把这件事做好。

官方网络应用

- Client attempts to `GET /api/tasks/".
- API says "who are you? (HTTP 401)
- Official web app redirects to login form.
> Bob enters his credentials.
- .. now what? Get an authentication token? Cookie?
  • 由于 Web 应用程序只是我的 API 的使用者,我将如何管理登录状态?网络应用应该这样做吗?
  • 网络应用是否应该直接访问用户数据库,而不是根据 API 验证凭据?

我主要使用 .NET (C#),但我喜欢一种适用于例如基于 Node JS 的 API 的方法。

你会怎么做呢?特别是客户流量对我来说是个问题。我问的原因是,我已经读到除非绝对必要,否则您不应该推出自己的安全解决方案,所以如果有任何标准指南,请告诉我。 :)

【问题讨论】:

  • 您是否找到了解决问题的方法,因为我正在高低寻找一个,但到目前为止一无所获。
  • oauthbible.com 可能有帮助吗?

标签: security rest authentication oauth asp.net-web-api


【解决方案1】:

看看新的 Web API 2 oAuth 东西。

基本上启动一个新的 Web API 项目并确保您选择更改身份验证。

然后,这是一个调用寄存器控制器的简单案例。然后,这会为您创建一个令牌,然后可以在该用户的每个请求的标头中发送该令牌。

使用 fiddler 查看 API 调用并创建一些模拟帐户。

【讨论】:

  • 我去看看!谢谢!
【解决方案2】:

已经有一段时间了,但我想我会记录下我最终做了什么。

我使用 DotNetOpenAuth。我有一个包含客户端的数据库,它们有一个 Trusted 字段 - 如果设置了此字段,它允许客户端使用密码授予,这会自动授予已为该客户端预定义的所有范围。

第一方网络应用程序使用纯 cookie 身份验证 - 在 JS 中公开客户端凭据风险太大。

【讨论】:

    猜你喜欢
    • 2016-01-12
    • 2012-09-10
    • 1970-01-01
    • 2014-12-27
    • 2016-02-15
    • 2017-07-21
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多