我正在开发一个Windows 8应用程序和一个ASP.NET MVC 5网站,每个网站都将访问一个WebApi服务(WebApi 2)。该网站和WebApi基于VS2013 RTM提供的模板,并使用项目模板中可用的“个人帐户”身份验证选项进行设置。
模板设置WebApi项目以启用承载令牌、应用程序cookie和外部登录cookie等,而公开的操作对它们具有授权属性。
我的两个问题是:
1)如果我使用在WP8应用程序上使用Google/Twitter对用户进行身份验证,如何才能获得WebApi以允许经过身份验证的用户访问这些操作?
2)与#1相同,但从ASP.NET MVC 5网站的角度看?
在我看来,我所看到的似乎每个请求都需要一个承载令牌。要获得此令牌,我是否正确地认为,我将访问WebApi公开的“令牌”端点以获取令牌,并且需要在每个请求中传递该令牌?
发布于 2013-10-24 20:46:17
对于1,可以使用azure移动服务WP8 sdk启动浏览器控件,从外部站点授权用户。代码应该与windows商店应用程序中的WebAuthenticationBroker类似。
对于2,带有单个auth的web模板使用隐式流 2.0将应用程序访问令牌返回给客户端。在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服务器中,您需要在ApplicationOAuthProvider中允许客户机id和回调url。
对于1和2,您不使用令牌端点来获取令牌。您正在使用授权端点通过隐式流获取令牌。
https://stackoverflow.com/questions/19570325
复制相似问题