【问题标题】:What's the simplest way to do authentication with a web API?使用 Web API 进行身份验证的最简单方法是什么?
【发布时间】:2011-03-06 14:40:39
【问题描述】:

我有一个网络 API,无需身份验证即可向用户提供数据(该网站允许用户在使用传统 cookie 和会话登录后发布数据)。有人想开发一个 iPhone 应用程序,将内容添加到我的数据库中,所以我希望用户在 iPhone 上进行身份验证,然后该 api 将允许发布。

那么,我应该注意什么才能轻松做到这一点?目前的 API 是 RESTful 的,最好保持这种状态。显然我是新手,但似乎有很多标准我不知道从哪里开始。如果我能在不到一个小时的时间内完成编码,那就太理想了。

非常感谢!

【问题讨论】:

    标签: authentication asp.net-web-api


    【解决方案1】:

    实现这一点的一个不错的方法是为应用程序创建者提供一个令牌和一个应用程序 ID,并让他们使用该令牌作为一种商定的加密方法来发送用户名和密码(加上应用程序 ID)到新会话的新 API 调用。

    收到新会话的请求后,您将根据提供的 appid 查找他们的令牌,并尝试使用令牌解密用户/密码。

    如果用户/通行证被接受,那么您创建一个新会话并将会话 ID 返回给他们,他们可以将其与任何新请求一起发送。

    这可以防止应用为每个请求发送身份验证,并允许您在给定时间使会话过期。

    【讨论】:

    • 快速提问,如果有人用令牌获得了加密用户/通行证,他们可以假装是用户,对吧?使用 SSL 是防止此类信息以明文形式发送的唯一方法吗?
    • 一般来说,是的,你会想要使用 SSL。
    【解决方案2】:

    WebSecurity 是在 ASP.NET MVC 4 中引入的。它依赖于 SimpleMembershipProvider。它使用 FormsAuthentication 来管理 cookie

    WebMatrix.WebData.WebSecurity 为 ASP.NET 网页应用程序提供安全和身份验证功能,包括创建用户帐户、登录和注销用户、重置或更改密码以及执行相关任务的能力。

    您必须先创建或初始化 WebSecurity 数据库,然后才能在代码中使用 WebSecurity 对象。

    在您网站的根目录中,创建一个名为 _AppStart.cshtml 的页面(或编辑该页面)。

      _AppStart.cshtml
    
        @{
        WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", true);
        }
    

    您可以通过以下代码验证您的请求。

    WebSecurity.Login(LoginName, Password, true)
    

    一旦认证成功,您将获得 WebSecurity 的值。IsAuthenticated 为真,您将获得用户的身份

    您还可以使用“SimpleRoleProvider”来管理应用程序中的角色

    【讨论】:

      猜你喜欢
      • 2013-02-18
      • 2012-02-25
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多