首页 文章

MVC 5,Identity 2.0 Android Rest / Json Api

提问于
浏览
3

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

我的问题是:如何控制授权/验证我的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);

我应该只创建一个Filter或HttpModule,分析那里的HTTP Header并查询数据库以检查是否有现有用户?

对我来说很明显它是如何在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/

1 回答

  • 3

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

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

    看看IdentityServer以下的blurb来自他们的Github存储库:

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

相关问题