当前位置: 首页 > news >正文

IdentityServer4 SigningCredential(RSA 证书加密)

IdentityServer4 默认提供了两种证书加密配置:

services.AddIdentityServer()
    .AddDeveloperSigningCredential()
    .AddTemporarySigningCredential();

这两种证书加密方式,都是临时使用,每次重启项目的时候,都会重新生成一个新的证书,这时候就会导致一个问题,重启之前生成的access_token,在重启之后,就不适用了,因为证书改变了,对应的加密方式也改变了,所以,就会出现下面这个问题:

435188-20170605220947372-1201533146.png

错误信息:

Www-Authenticate:Bearer error="invalid_token", error_description="The signature key was not found"

解决方式,就是始终使用一个证书,我们先这样配置:

services.AddIdentityServer()
    .AddDeveloperSigningCredential();

可以查看下AddDeveloperSigningCredential实现源码,启动项目,IdentityServer4 会在项目目录中生成一个tempkey.rsa证书文件:

{
    "KeyId": "4e1765de45ef639261115198826dfea7",
    "Parameters": {
        "D": "FnB7kIinBgoZDaRqIrRQHEF45FBF9amOrTn8oFdmsxPqJbh11bHeCw11AtCCC4p1mm750onDXeP+yoBHymr/wNn40VmGdhR4hnObHhhw5pyQKECIS41DFDatCZif9uhDgHsOvYHMRVNSapDFoDUvbTE6t7rv4prn2fDt5mzRD9AqdT2HyTcwa/H1haaZNwmy3UevYYy8ya4kKXvjRo6+O7BMBh+yBvHgezQ57Ye/NfZfDMITs4djbqELrYVXCTMltNsWWhQtS62cqvKboxoiXfSm67u/li5Fdusc5Z2zsyt5rE/V8h/ffBvS9N9v0VoDTdFqLYkuul0DvTZ/pqXtMQ==",
        "DP": "XQDf46csbwu/xX+jwo5VQQ8sKVlVBLuxSNTAbNS6O/aCg9eEjZ58EJ712JgqqORcDMg5JRejN3Zxxoij4roJogyvvw6QSws/H+UTmtuuudgT59OB1TyNGihMVSTLXaw4Kgdj8D8IK8v0okdFEpYugzIIFe1yl0lSzR7fkF+NKC0=",
        "DQ": "4TvT9ujJ38sTluz0dUSIUD3NCWJOMDKOB/cL3RaDyMf/MTSxNFfWDuuW55F2P8mncHhqLuANcg2l3h8xom+1ucn+ve45JNoWja4fpWQ16rmijPc5yKRe0uAGEaXJiTAEvIxXG18zvNA8Fab+L2X1h+1r35ZLZFYj+EyhkqQ7u5k=",
        "Exponent": "AQAB",
        "InverseQ": "nTAEt8v+DlAn6h7Z1Ey1x4Z56OfOmCvY01nte4f3OuSmBXoEaTSoGsXScweAMoSGb0aOG1qpvErtY+JykREeLJxvm4P3DAHL5lJWvDKPvCWJOD9jfzhBUyIhCoqQ8EIHjFxBNKyNefAsVuKdH6R+ApuhpF8XVhR59zLawUQWLEg=",
        "Modulus": "43j4tvNZy7IxuiDwZzWv9KiS5kSYIeBqEvQ7zkQmRT3IEsseiTv698iQx8qn+de8FeGFEa8O6igFU2VXqFyWJilTuPmeBPJxIMCqfxdxF+96giVSpN4rOFaH/V+IPNTQoYCLFwcUR2saFywUeKWpsRFhQCymsFIk3AlWu7jcqgKHrELsJpn5KVmedb6JZcVKMIfTrcY6hWQz2JNEhTOEI10ZVZ7ueEp2Q2+1/udvp47wPMhzriXJTFP7Y4ozU2THbuwIqCXM5DNBGUpEug0vlCAhwn6nvAo8e9fT0lpUzTd2T8wWzwuHkAgyjB0XTzSYR1fMJIKH1zDs25RqmlepgQ==",
        "P": "9lGtQw9yXz4nbepESFDxAMfDlmiI9Gj3Q3FecKIgGVVi9WVr19lzBcszhsVybA8n1OyPXHdOyuSWOiVp69ibo5OOXLL4iWzY1VOouXeZrYimxNPvVKlRf8AsVcv3n/0/FEhwY9gnQm4PZYUGwQ96WZ5Z/CWJ9xTORg54Wh79hk0=",
        "Q": "7Gmr/h33bM+9W4Ygh+tNh3/etECuT/RQ1LMS5uBXxXdvUl6wSm2+ec/CBRobxVHG2pDXdr0pegn0Yz4MprsLtS5KvFg6yopI3Y3TptTGNZPtbd1O7P4i6b+RNOYCq0Y99mkGofqAlAMnDG+SA2EJN2ugPjLelC7GWtfzNG5NMgU="
    }
}

AddDeveloperSigningCredential中代码执行,会先判断tempkey.rsa证书文件是否存在,如果不存在的话,就创建一个新的tempkey.rsa证书文件,如果存在的话,就使用此证书文件。

所以,我们配置的时候,传递一个tempkey.rsa证书文件名,就可以了:

services.AddIdentityServer()
    .AddDeveloperSigningCredential("tempkey.rsa");

当然,你也可以对tempkey.rsa证书文件,进行重命名操作。

参考资料:

  • The signature key was not found
  • IdentityServer4 Configuring services
  • IdentityServer4 Cryptography, Keys and HTTPS
  • ASP.NET Core 实现 OAuth2.0 的 ResourceOwnerPassword 和 ClientCredentials 模式
  • IdentityServerBuilderExtensionsCrypto.cs

相关文章:

  • 一款基于jQuery Ajax的等待效果
  • uTorrent 被发现悄悄安装挖矿程序,BitTorrent 公司否认
  • TortoiseGit为github账号添加SSH keys,解决pull总是提示输入密码的问题
  • Npcap —— 基于 Winpcap/ Libpcap 的网络包抓取库
  • Lucene 个人领悟 (二)
  • Java线程挂起
  • DOM2和DOM3
  • noip 2008 双栈排序
  • 双向绑定底层剖析(用于自定义组件双向数据绑定和非form表单元素)
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • cocos2d-x 3.0的坑有哪些
  • 第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)
  • read 系统调用剖析【转】
  • vue2.0-transition配合animate.css
  • LintCode 带最小值操作的栈
  • $translatePartialLoader加载失败及解决方式
  • 2017前端实习生面试总结
  • Github访问慢解决办法
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java基本数据类型之Number
  • jdbc就是这么简单
  • js算法-归并排序(merge_sort)
  • laravel 用artisan创建自己的模板
  • Spring声明式事务管理之一:五大属性分析
  • 程序员最讨厌的9句话,你可有补充?
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 关于使用markdown的方法(引自CSDN教程)
  • 关于字符编码你应该知道的事情
  • 使用 QuickBI 搭建酷炫可视化分析
  • 我建了一个叫Hello World的项目
  • 赢得Docker挑战最佳实践
  • 白色的风信子
  • 7行Python代码的人脸识别
  • HanLP分词命名实体提取详解
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #includecmath
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (4)STL算法之比较
  • (ZT)一个美国文科博士的YardLife
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (接口封装)
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (论文阅读11/100)Fast R-CNN
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .bat文件调用java类的main方法
  • .net 流——流的类型体系简单介绍
  • .NET 设计一套高性能的弱事件机制
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [BeginCTF]真龙之力
  • [dart学习]第四篇:函数