aierda 2023-04-03 19:43 采纳率: 72.1%
浏览 178
已结题

.NetCore部署后出现“无法解密防伪令牌”问题

问题描述:我的ABP解决方案中,有两个WEB项目(.NetCore6),两者之间是通过
https进行通讯的。在vs中进行测试是完全没有问题的,但是部署到IIS
上面去就出现问题了。
报错内容:
AspNetCore.Antiforgery.DefaultAntiforgery - An exception was thrown while deserializing the token.
Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException: The antiforgery token could not be decrypted.

大概意思是:反序列化令牌时抛出异常,无法解密防伪令牌
我是通过oppssl命令首先生成了一个证书,然后在IIS中进行导入操作,部署这两个网站时,都是选择https协议的,
并且指定同一个导入的证书。
百度了很久,尝试了很多方式,都是无效
提问:不知各位有没有遇到过这种问题,求有效的解决方案,谢谢!

  • 写回答

6条回答 默认 最新

  • 阿里嘎多学长 2023-04-06 00:35
    关注

    以下内容部分参考ChatGPT模型:
    首先,这个问题的根本原因是无法解密防伪令牌,可能是因为生成的证书有问题,或者是证书在部署过程中没有正确配置。

    解决方案:

    1. 检查证书

    首先,检查证书是否正确生成并导入到IIS中。可以使用以下命令检查证书的有效期和信任链:

    openssl x509 -in cert.crt -text -noout
    

    如果证书有问题,请重新生成证书并重新导入到IIS中。确保证书可以被信任,并且在IIS中正确配置了证书绑定。

    1. 检查防伪令牌

    检查防伪令牌所使用的密钥是否正确设置。可以使用以下代码检查密钥:

    services.AddAntiforgery(options =>
    {
        options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
        options.Cookie.SameSite = SameSiteMode.None;
        options.Cookie.HttpOnly = true;
        options.Cookie.Name = "XSRF-TOKEN";
        options.HeaderName = "X-XSRF-TOKEN";
        options.SuppressXFrameOptionsHeader = false;
    
        options.ValidationAlgorithm = "AES";
        options.ValidationKey = Encoding.UTF8.GetBytes("my_super_secret_validation_key");
    });
    

    确保ValidationKey的值与防伪令牌的密钥匹配。

    1. 检查HTTPS设置

    确保在部署过程中正确配置了HTTPS设置。可以使用以下代码确保所有请求都使用HTTPS:

    app.UseHttpsRedirection();
    
    1. 检查Cookie设置

    确保在部署过程中正确配置了Cookie设置。可以使用以下代码确保Cookie的SecurePolicy、SameSite和HttpOnly属性正确设置:

    services.Configure<CookiePolicyOptions>(options =>
    {
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
        options.Secure = CookieSecurePolicy.Always;
        options.HttpOnly = true;
    });
    

    以上是一些可能的解决方案。如果以上方法都无法解决问题,请检查其他可能的问题,例如防火墙设置、反向代理设置等。
    如果我的建议对您有帮助、请点击采纳、祝您生活愉快

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月3日

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd