azure 移动服务活动目录身份验证 X-ZUMO-AUTH 令牌在注销后在邮递员中有效

Posted

技术标签:

【中文标题】azure 移动服务活动目录身份验证 X-ZUMO-AUTH 令牌在注销后在邮递员中有效【英文标题】:azure mobile service active directory authentication X-ZUMO-AUTH token valid in postman after logout 【发布时间】:2016-04-17 02:45:23 【问题描述】:

我为身份验证设置了 Azure 移动服务和 AD。

通过移动应用程序可以完美地退出和登录。

AD申请回复地址为https://test.azure-mobile.net/signin-aad

client = new MobileServiceClient (applicationURL, applicationKey);

var authResult = await client.LoginAsync(this, MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory);

var data = await client.InvokeApiAsync("testAPI", HttpMethod.Get, null); //Works

client.Logout(); // LOGOUT

var data = await client.InvokeApiAsync("testAPI", HttpMethod.Get, null); //Unauthorized Error at mobile side. Request not going to API

这项工作非常完美。

但如果我在 LOGOUT 后从 authResult 复制令牌,我可以使用相同的令牌从邮递员调用 API。

标题:X-ZUMO-AUTH → 令牌

如何验证令牌? Azure 移动服务端需要任何设置来验证和防止这种情况发生吗?

【问题讨论】:

【参考方案1】:

当您在客户端上注销时,身份验证令牌会从客户端中删除,但不会与服务器通信以表明此令牌现在无效。因此,如果令牌被存储在其他地方并重新使用,它在过期之前仍然有效。

我不确定有没有好的方法来做到这一点。您可以重置站点的主密钥,但这会使所有其他令牌无效,因此这不是一个真正可行的选择。您可以在服务器上存储一个无效令牌列表并在每个请求中检查它们,但这会为每个请求添加一个查找。

这是另一个问题,答案类似,还有几个其他链接:Logout/invalidate a JWT

【讨论】:

如何检查服务器上的无效令牌? 您需要创建一个 ApiController,它接受一个令牌并将其添加到某种存储(数据库、Azure 表等)。当客户端注销时,您还需要将令牌发送到此新控制器,以便将其记录为无效。然后,对于每个传入的请求,您将检查令牌是否存在于那里。如果是,则令牌无效。您可以在到期后删除它们。请参阅此答案中的#2:***.com/a/23089839/3516125。对“invalidate JWT”的其他搜索将为您提供一些其他方法。

以上是关于azure 移动服务活动目录身份验证 X-ZUMO-AUTH 令牌在注销后在邮递员中有效的主要内容,如果未能解决你的问题,请参考以下文章

移动设备上的 Azure App Service 身份验证问题

可以将 hadoop-azure 配置为对 azure blob 使用活动目录(租户、appId、appSecret)身份验证吗

Api 的自定义身份验证 Azure 移动服务

从 UWP 客户端使用 Azure 移动服务进行身份验证

用于 Azure 移动服务 (REST) 的 Live Connect 身份验证令牌

启用Azure移动服务身份验证会导致POST请求中的“资源不支持GET”