Azure移动服务和Web API身份验证

时间:2014-07-27 14:19:49

标签: c# asp.net-mvc asp.net-web-api azure-mobile-services

我正在开发Web API,并希望在允许对Web API进行调用之前使用Azure Mobile Services对用户进行身份验证。

因此,用户将导航到网站,选择使用他们的Google / Facebook / etc帐户登录,并且将使用移动服务JavaScript客户端对用户进行身份验证。根据我的理解,移动服务将以JSON Web令牌的形式返回身份验证令牌。

我想要做的是当网站调用它将传递给身份验证令牌的Web API时,Web API会检查它是否是移动服务发出的有效令牌,如果一切正常,则允许要求被执行。

所以我的问题是......这可能吗?如果是这样,可以使用JSON Web Token Handler for .NET在Web API端执行验证吗?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。

如果使用MobileServiceClient执行登录,您将获得一个令牌,您可以将其传递给Web Api终端的每个请求。

var client = new WindowsAzure.MobileServiceClient('https://yourservice.azure-mobile.net', 'your-client-key');
client.login('facebook').then(success);

function success(result) {
    alert('login ok');
}

因此,在发出请求时,请将标题'X-ZUMO-AUTH'的值设置为您在成功登录后在client.currentUser.mobileServiceAuthenticationToken中找到的当前用户令牌。

在服务器端,将属性[AuthorizeLevel(AuthorizationLevel.User)]添加到需要用户进行身份验证的Web Api方法。多数民众赞成。

但请确保,在WAMS上正确配置了该身份,并且还要在提供者端配置您要集成的身份(客户端ID,客户端机密,回调网址等)。