加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 承载令牌在重新部署后变为无效

发布时间:2020-12-16 06:39:20 所属栏目:asp.Net 来源:网络整理
导读:我们将ASP.NET MVC 5.x WebAPI 2.x Web应用程序作为Azure云服务运行,并使用令牌授权对我们的服务进行REST 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 "";
}

UPD2:
看起来默认令牌endpoing(/ Token)生成的令牌在重新部署后不会变得无效 – 所以问题(我认为)是我们为“手工”令牌设置的一些属性.
我在哪里可以找到创建默认令牌的代码(由/ Token端点返回)?

解决方法

问题解决了.
看来默认创建的AccessTokenFormat使用machineKey来生成令牌.显然,这些密钥对于生产和暂存VM来说是不同的.
解决方案相当容易.您需要生成自己的机器密钥并将其添加到项目的Web.Config文件中:

<system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" relaxedUrlToFileSystemMapping="true" />

    <machineKey
      validationKey="YOUR VALIDATION KEY GOES HERE"
      decryptionKey="YOUR DECRYPTION KEY GOES HERE"
      validation="SHA1" decryption="AES"
    />

有关此方法的详细信息,请阅读本文的“步骤5 …”部分:
http://bitoftech.net/2014/09/24/decouple-owin-authorization-server-resource-server-oauth-2-0-web-api/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读