【问题标题】:Authenticating with Web API使用 Web API 进行身份验证
【发布时间】:2014-09-26 06:01:37
【问题描述】:

我正在将 ASP.NET WebAPI 用于我正在构建的 Web 服务。他的 Web 服务将使用 Identity 服务对用户进行身份验证。

对于如何从外部验证用户身份,我有点困惑。我们当前的系统非常基础——我们在 XML 请求中将用户名和密码作为单独的字段发送,所有这些都在 1 个请求中完成。

从我在谷歌上看到的,最好的方法是向阿里请求一个令牌,然后在后续请求中传递这个令牌。有没有一种方法可以让我在 1 个请求中完成所有操作(也就是说,将我的数据请求以及用户名/密码或 API 密钥发送到单个请求中的 API?)

【问题讨论】:

    标签: asp.net asp.net-web-api


    【解决方案1】:

    从我在 Google 上看到的信息来看,最好的方法是请求 来自 Ali 的令牌,然后在后续请求中传递此令牌。 有没有一种方法可以让我在 1 个请求中完成所有操作(即发送到 API 我对数据的请求以及用户名/密码或 可能是单个请求中的 API 密钥?)

    我不确定为什么您的网络服务想知道用户在基于令牌的身份验证中的用户名和密码。

    在基于令牌的身份验证中,您的网络服务不应询问用户的用户名和密码。

    相反,用户首先使用您的服务信任的令牌颁发者来验证用户名和密码。

    验证成功后,令牌颁发者会向用户提供令牌。一旦用户拥有该令牌,它就会使用它来调用您的服务。

    为此,您不必重新发明轮子。这是用于 OAuth2 和 OpenId Connect 的 JwtAuthForWebAPI nuget 包。

    【讨论】:

      【解决方案2】:

      在每个请求中继续发送用户名/密码根本不安全,您需要配置您的 api 以在指定的生命周期(即 24 小时)内发布访问令牌。为此,您需要创建和接受用户名/密码的端点 (/token) 验证组合,然后发出访问令牌。 接收此访问令牌的客户端负责安全地存储并使用承载方案使用请求“授权”标头将其与每个请求一起传输到任何受保护的资源。

      同样您不能在一个请求中执行此操作,您需要在开始时获取访问令牌,然后使用此访问令牌继续调用受保护的资源,直到它过期。

      您可以在我关于 Token Based Authentication in Web API 的详细博客文章中了解更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-19
        • 2015-01-12
        • 1970-01-01
        • 2013-11-16
        • 2017-03-03
        • 2017-04-08
        • 2013-11-29
        • 2017-07-04
        相关资源
        最近更新 更多