2016-08-19 38 views
0

我的理解:在Azure应用服务中,您可以通过在Azure门户中设置“Always On”设置将服务设置为基本上永不“入睡”。服务停止后Azure应用服务令牌丢失

虽然这是对服务的一个简单改变,但我试图避免服务在不使用时不断运行,并且增加了托管服务的每月费用。

我的两难处境是我有一个Azure App Service正在运行,我对Xamarin Forms应用程序进行了身份验证。在登录过程中,我将OAuth令牌返回给设置为在15天内过期的客户端(需要测试一段时间)。

Azure服务运行时一切正常,但如果Azure服务“睡着了”,那么我将被迫再次登录 - 这导致我相信服务发出的令牌在服务掉落后已经丢失睡着了。

我的问题是:有没有办法在“入睡”之前将当前令牌存储在Azure表存储器(或其他东西)中,然后在服务“唤醒”时从同一存储器中取出?

我发现下面的问题,但不能得到的如何坚持承载令牌清醒的认识: How are bearer tokens stored server-side in Web API 2?

我一直在寻找高和低,如何做到这一点明确的指示,让如果这甚至是可能的话就单独使用

任何帮助将不胜感激。

+0

为了说明这是您的场景,您正在构建自定义身份验证机制,它将为您的客户端提供访问令牌,并且您的客户端将利用此令牌访问服务中的API?现在你想将这个令牌存储在Table Storage中? –

+0

嗨加里 - 是的,但不是针对特定用户,而是针对所有有效(未过期)令牌。作为一个例子(使用传统的asp.net网站),您可以使用global.asax在Application_Start/Application_Stop上执行某些活动。我想在应用程序服务休眠之前坚持这些标记(不做任何请求),但是当它醒来时,我想重新加载持久性标记,以便不需要以下内容: - 强制用户重新登录移动应用程序 - 未将Azure应用程序服务设置为“始终开启” 除非您认为可能比使用Azure表格存储更好。 – XxtappsxX

回答

1

你找到的答案是How are bearer tokens stored server-side in Web API 2?是对的。通常,我们会将访问令牌存储在客户端。你可以将它存储在你的客户端,本地存储,sqlite甚至文件中的任何地方。只是为了确保,您的应用程序可以取回访问令牌。

当您的应用程序向受保护服务器发送HTTP请求时,您将在Authorization标头中设置访问令牌。

而你的服务器一旦得到一个HTTP请求,它就会验证令牌并授权用户。