【问题标题】:web api 2 client and user two part authenticationweb api 2 客户端和用户两部分身份验证
【发布时间】:2016-03-04 22:07:48
【问题描述】:

我目前的任务是编写一个 RESTful API,我们将发布给我们的客户。我计划将 Web API 2 与 OWIN 中间件一起使用。将访问它的应用程序可以是任何地方,从没有额外用户身份验证的控制台应用程序到涉及用户登录和身份验证的完整 Web 应用程序。

另一个要求是,我们不仅需要提供用户身份验证来控制我们将返回哪些数据,还需要验证访问我们 API 的应用程序是否被我们的组织允许。因此,这要求我们不仅要验证调用我们 API 的应用程序,还要验证通过该应用程序登录的许多用户。

我们的目标是使用像 OAuth 2 这样的不记名令牌技术。我对 OAuth 2 不是很熟悉,但是在查看它之后,我看不出有一种方法可以促进像这样的两部分身份验证。理想情况下,我们想发出一个 clientId 和一个 clientPassword,他们会将其与 userid 和 userpassword 一起传递,然后我们将传递一个令牌。

这是任何人在使用 OAuth2 之前解决的问题,还是自定义身份验证解决方案的工作?

【问题讨论】:

    标签: api authentication oauth-2.0 asp.net-web-api2


    【解决方案1】:

    您描述的内容听起来像是相当标准的 Oauth2.0 场景,因此您不需要任何自定义。

    对于网络应用,您可以使用Resource Owners Password Credentials Grant。这是标准流程。

    这允许您的 Oauth 客户端将其客户端 ID 和客户端密码以及用户 ID 和密码传递给您的身份验证服务器,然后验证服务器可以在发出令牌作为响应之前验证用户和客户端。

    但我建议使用Authorization Code Grant,这可能是 Web 应用程序的最佳选择,它涉及到客户端和用户都得到有效身份验证。

    对于您的控制台应用程序或任何非用户特定的应用程序,您可以使用Client Credentials Grant。这允许应用在没有用户的情况下进行身份验证并获取令牌。

    如果您需要 API 了解客户端应用程序,唯一不能真正使用的流程是不验证客户端身份的隐式授权。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 2018-06-15
      相关资源
      最近更新 更多