我有一个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 回答
您可以按照建议为WebApi控制器创建一个过滤器,以授权和验证来自客户端应用程序的访问权限 . 这是一个blog post,可以帮助你实现这样的事情 .
但是,我建议使用Oauth标准定义的访问令牌 . 这种身份验证和授权方法非常适合移动应用程序 . 您可以创建长寿命访问令牌,使您的移动客户端应用程序与长期Cookie和浏览器客户端类似地登录 . 或者你可以使用短寿命访问令牌和长寿刷新令牌 . 此外,没有什么可以阻止你使用Oauth与浏览器客户端,给你一个auth实现 . 这是tokens and Oauth上的一个很好的答案 .
看看IdentityServer以下的blurb来自他们的Github存储库: