【问题标题】:Aspnet Web API Authentication on mobile clients移动客户端上的 Aspnet Web API 身份验证
【发布时间】:2013-04-15 16:33:57
【问题描述】:

我正在使用 ASP.net Web API 实现一个 API,我正在尝试在我的场景中找到合适的身份验证替代方案,如下所示:

  • 应该可以从移动客户端访问 API
  • 移动客户端用户不应登录,客户端是本机应用程序
  • API 使用由设备 ID 和用户 ID 组成的凭据进行授权,通过其他方式在应用程序中获取,有效凭据存储在 sql 数据库中
  • 客户端不应存储静态凭据
  • API 管理敏感数据并且应该是安全的

所以我探索了一些选项,发现通过 SSL 进行基本身份验证就足够了,但有些人说这可能还不够,基于声明的解决方案就足够了。

然后我探索了 Azure ACS,我发现它有一些优势,但对于我的场景来说可能过于复杂?我仍然应该像基本身份验证一样创建一个身份提供者。样本流程(第二种方式):http://msdn.microsoft.com/en-us/library/gg429784.aspx

你怎么看?

谢谢

更新:

我一直在考虑使用 DotNetOpenOauth 的实现并使用资源所有者密码授予,这样我就可以第一次使用设备 ID 和用户 ID 来获取访问令牌而不存储凭据,服务器可以授权基于调用者在调用它的设备上,这是正确的吗?

【问题讨论】:

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


    【解决方案1】:

    在 VS 2013 中,您可以使用“Asp MVC SPA 应用程序”模板生成一个工作实现,该实现在登录时生成一个 Oauth2 令牌承载并使用 [Authorize] 属性为 WebApi 控制器调用授权它。它使用成员资格和实体框架在 SQL Server 中本地存储用户和散列。只需删除您不需要的 asp mvc 部分并保留 WebApi 的 Auth 部分。 更多细节在这里: http://msdnrss.thecoderblogs.com/2013/09/understanding-security-features-in-the-spa-template-for-vs2013-rc/

    【讨论】:

      【解决方案2】:

      我使用 asp.net mvc 4.0/web api 基本会员资格来做到这一点。您可能会发现它很有帮助。

      https://github.com/aamir-poswal/Mobile-Apps-Authentication-Authorization-ASP.NET-WEB-MVC-4.0

      【讨论】:

        【解决方案3】:

        不存储凭据是个好主意。你可以看看 IdentityServer,它支持资源所有者、隐式和代码流:

        https://github.com/thinktecture/Thinktecture.IdentityServer.v2/wiki

        【讨论】:

        • 嗨,谢谢,看起来很有趣,我想知道将它嵌入我自己的 API 网站是多么容易
        猜你喜欢
        • 2016-01-23
        • 1970-01-01
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 2017-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多