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

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

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

因此,用户将导航到一个网站,选择使用他们的 Google/Facebook/等帐户登录,然后用户将使用移动服务 JavaScript 客户端进行身份验证。据我了解,移动服务随后将以 JSON Web token 的形式返回身份验证 token 。

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

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

最佳答案

是的,这是可能的。

如果您使用 MobileServiceClient 执行登录,您将获得一个 token ,您可以将其与每个请求一起传递到 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');
}

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

在服务器端,将属性[AuthorizeLevel(AuthorizationLevel.User)] 添加到要求用户进行身份验证的Web Api 方法。就这些。

但请确保在 WAMS 上以及您要集成的提供商端正确配置身份(客户端 ID、客户端 secret 、回调 URL 等)。

关于c# - Azure 移动服务和 Web API 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24981878/

相关文章:

c# - 写入 HttpResponse 时 header 是只读异常

asp.net-web-api - Web API ModelBinders - 如何以不同方式绑定(bind)对象的一个​​属性

c# - 针对 MS Access 的 LINQ asp.net 页面。

c# - 将 System.Object 转换为 bool 值

c# - 使用 jQuery 进行 asp.net mvc 分页有哪些可用选项?

c# - 是否可以使用 System.Net.Http.HttpClient 的持久连接?

javascript - 一键上传文件并发布文本输入值?

c# - SetupDi API : Control Device Manager functionality programmatically

c# - 获取指向字节数组的指针的不安全方法

asp.net-mvc - 如何在 MVC 中排除此语法中的另一个属性 [Bind(Exclude = "ID")]