重新部署后不记名令牌失效

Ser*_*giy 5 asp.net asp.net-mvc azure asp.net-web-api

我们将 ASP.NET MVC 5.x WebAPI 2.x Web 应用程序作为 Azure 云服务运行,并使用令牌授权对我们的服务进行 REST API 调用。

问题是:每次我们重新部署我们的应用程序时 - 所有当前令牌都变得无效(服务器对任何请求都返回“非授权”响应)。

问题是:为什么会发生这种情况以及如何防止这种行为?

UPD:这是发出令牌的代码:

public string GetOAuthToken(IUser user) {
    if (user  != null) {
        var identity = new ClaimsIdentity(Startup.OAuthOptions.AuthenticationType);
        identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName));
        identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Id));
        AuthenticationTicket ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
        var currentUtc = DateTime.UtcNow;
        ticket.Properties.IssuedUtc = currentUtc;
        ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromDays(36600)); //About 100 years
        string AccessToken = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);
        return AccessToken;
    }
    return "";
}
Run Code Online (Sandbox Code Playgroud)

UPD2:似乎由默认令牌端点 (/Token) 生成的令牌在重新部署后不会失效 - 所以问题(我认为)出在我们为“手工”令牌设置的某些属性中。我在哪里可以找到创建默认令牌的代码(由 /Token 端点返回)?

Ser*_*giy 1

不是一个完整的答案,但现在我们至少知道这种行为的原因。

问题出在我们的云服务的暂存/生产部署中。我们将服务部署到暂存区,然后进行交换。在那一刻,先前部署中颁发的令牌将失效。如果我们第二次这样做(部署到同一个版本,然后交换) - 它会再次有效。因此,显然任何发行的令牌都包含与当前运行服务的系统(真实或虚拟)的一些链接。

剩下的主要问题是:是否可以删除该链接或以某种方式控制它?