Secure Web APi,Windows Phone和MVC网站

时间:2013-10-24 15:36:23

标签: asp.net-web-api asp.net-mvc-5

我正在使用Windows Phone 8应用程序和ASP.NET MVC 5网站,每个网站都将访问WebApi服务(WebApi 2)。网站和WebApi基于VS2013 RTM提供的模板,并使用项目模板中提供的“个人帐户”身份验证选项进行设置。

模板设置WebApi项目以启用承载令牌,应用程序cookie和外部登录cookie等,并且公开的操作具有Authorize属性。

我的两个问题是:

1)如果我使用Azure移动服务在WP8应用程序上使用Google / Twitter对用户进行身份验证,如何让WebApi允许经过身份验证的用户访问操作?

2)与#1相同,但是从ASP.NET MVC 5网站的角度来看?

从我可以看出,每个请求都需要一个承载令牌。为了获得这个令牌,我认为我会访问WebApi公开的“令牌”端点以获取令牌并且需要与每个请求一起传递吗?

1 个答案:

答案 0 :(得分:1)

对于1,您可以使用azure mobile service WP8 sdk启动浏览器控件以从外部站点授权用户。该代码应与Windows应用商店中的WebAuthenticationBroker类似。

对于2,具有单独身份验证的web api模板在OAuth 2.0中使用implicit flow将应用程序访问令牌返回给客户端。在MVC应用程序中,您可以将用户重定向到

http://<web api domain address>/api/account/externallogin?provider=Facebook&redirect_uri=<your callback url in MVC app>&response_type=token&client_id=mvc. 

在MVC视图中,您需要使用javascript从url片段获取访问令牌,该令牌不会发送到服务器。在您的web api服务器中,您需要在ApplicationOAuthProvider中允许客户端ID和回调URL。

对于1和2,您没有使用令牌端点来获取令牌。您正在使用授权端点通过隐式流获取令牌。