【问题标题】:MVC 5, Identity 2.0 Android Rest/Json ApiMVC 5,身份 2.0 Android 休息/Json Api
【发布时间】:2015-10-24 19:23:33
【问题描述】:

我有一个 ASP.NET MVC 5 应用程序,它使用 Identity 2.0 进行身份验证/授权。现在我想通过 Web Api 2.0 向我的 Android 应用程序提供对我的 Web 应用程序中数据的访问。

我的问题是:如何控制授权/验证我的 android 应用程序的访问?

在 Android 端,我使用“org.springframework.web.client.RestTemplate”并将这个 HTTP 标头添加到我的请求中:

    HttpAuthentication authHeader = new HttpBasicAuthentication("username", "password");
    HttpHeaders requestHeaders = new HttpHeaders();
    requestHeaders.setAuthorization(authHeader);
    HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);

我应该只创建一个过滤器还是一个 HttpModule,分析那里的 HTTP 标头并查询数据库以检查是否有现有用户?

我很清楚它是如何在 HTML/Javascript 前端工作的。每次成功登录后都会使用一个 cookie,用于所有后续调用,但是对于我的 android 应用来说,最好的策略是什么?

更新: 找到了这两个链接,但我不确定我是否应该这样: http://springinpractice.com/2012/04/08/sending-cookies-with-resttemplate http://blog.mikepearce.net/2010/08/24/cookies-and-the-restful-api/

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-5 asp.net-web-api2 asp.net-identity-2


    【解决方案1】:

    您可以按照您的建议,为您的 WebApi 控制器创建一个 Filter,以授权和验证来自您的客户端应用程序的访问。这是一个blog post,可以帮助您实现这样的事情。

    但是,我建议使用Oauth 标准定义的访问令牌。这种身份验证和授权方法非常适合移动应用程序。您可以创建长寿命访问令牌,使您的移动客户端应用登录,类似于长寿命 cookie 和浏览器客户端。或者您可以使用短寿命访问令牌和长寿命刷新令牌。此外,也没有什么能阻止您将 Oauth 与浏览器客户端一起使用,从而为您提供单一的身份验证实现。这是tokens and Oauth上的一个很好的答案。

    看看IdentityServer,以下简介来自他们的 Github 存储库:

    IdentityServer 是一个基于 .NET/Katana 的框架和可托管组件 允许实现现代单点登录和访问控制 使用 OpenID Connect 等协议的 Web 应用程序和 API OAuth2。它支持广泛的客户端,如移动、Web、SPA 和 桌面应用程序,并且可扩展以允许在新的和 现有架构。

    【讨论】:

    • 非常感谢,但我肯定需要一些时间来了解您的建议。这听起来肯定比我的方法好!当然我不会忘记标记为答案!
    • @stefan 没问题,哥们,很高兴我能帮上忙 :)
    • 你能看看我的下一篇文章吗? stackoverflow.com/questions/31891898/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 2019-03-13
    • 1970-01-01
    • 2015-07-02
    • 2014-04-30
    • 2014-09-27
    • 2014-10-12
    相关资源
    最近更新 更多