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)身份验证吗