移动应用 - 使用ASP.NET进行身份验证和授权

时间:2014-07-15 13:12:15

标签: asp.net cordova mobile

我正在考虑开发一个与旧的Web App集成的移动应用程序。

我的第一个想法是使用PhoneGap(VS 2013上的新支持)和REST WebApi服务。

我的想法是让我的网络应用程序注册,登录等(使用ASP.NET身份)。 和移动应用程序注册,登录等(使用包装器或类似ASP.NET身份与令牌身份验证) 基本上反映了我的移动应用程序上的Web应用程序的功能(仅具有身份验证和授权差异)。

到目前为止一切顺利。

但是在网上搜索我找不到任何与我的asp.net身份模块集成的好例子。 目前我知道移动应用程序不支持cookie,因此想法是使用“令牌认证”。但我无法找到一个很好的例子来实现这一点并与我的网络应用用户数据库相辅相成。

有一个像我的要求一样的教程或示例项目?开发这个的最佳方法是什么?

提前致谢。

3 个答案:

答案 0 :(得分:3)

你也可以去原生路线。制作自定义的cordova插件,让你的api电话通过。

http://cordova.apache.org/docs/en/3.5.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide

然后,您的本机代码会在发送请求之前对标头集合进行必要的调整。

机器人:

DefaultHttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("[your-api-url]");
httpPost.setHeader("[header-name]", "[header-value]");
HttpReponse httpReponse = client.execute(httpPost);

InputStream reponseInputStream = httpReponse.getEntity().getContent();

的iOS:

NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] initWithURL:url] autorelease];

[request addValue:@"[header-name]" forHTTPHeaderField:@"[header-name]"];

答案 1 :(得分:2)

我遇到了这个确切的场景,但我选择使用Xamarin for iOS构建客户端。我假设你想要一些动手实例,所以这里是:

<强> 1。移动应用程序帐户的持久存储

https://components.xamarin.com/view/xamarin.auth

<强> 2。客户端包装器(使其成为可移植类库)

https://github.com/nbusy/NBusy.SDK/tree/master/src/NBusy.Client

基本上,当您登录时,AccountStore会在本地加密存储上保留令牌(您在服务器端使用的任何类型的API,即基本身份验证,承载令牌等),并由客户端使用PCL每次调用API。

我有完整的工作解决方案,但我无法公开。我希望这些提示可以帮助您找到正确的解决方案。

答案 2 :(得分:1)

我已经多次使用Asp.net作为服务器端而Phonegap作为客户端。 首先,你是正确的,你不能在Phonegap APP中使用cookie。 Phonegap提供了存储本地数据的其他内容。 How to store local data in Phonegap

根据我的经验,通常有两种方法来实施身份验证。

1 正如Marcin所说:

将输入的登录数据发布到服务器 - &gt;服务器发回一个令牌密钥(可用一段时间) - &gt;将令牌密钥存储在某处(例如localstorage,websql) - &gt;下次发布令牌用于身份验证

2 Oauth模式:

当用户单击登录按钮时,会弹出一个窗口。在窗口中,它是您现有站点的一个链接。您可以在此窗口中输入您的登录信息(不是在Phonegap应用程序中,而是在您站点的页面中)。如果有效,窗口将获得一个带有令牌密钥的URL(例如&#34; abc.com?token = a2E4w&#34;)。将令牌作为每个API的参数传递,并检查它是否在每个请求中都有效。 要存储令牌密钥,您可以使用第1点中提到的内容。

请注意,我认为第二点会更安全,因为&#34;登录信息&#34;和&#34;输入动作&#34;两者都发生在Phonegap应用程序之外。