IdentityServer4 SigningCredential(RSA 证书加密)
IdentityServer4 默認(rèn)提供了兩種證書加密配置:
services.AddIdentityServer().AddDeveloperSigningCredential().AddTemporarySigningCredential();這兩種證書加密方式,都是臨時(shí)使用,每次重啟項(xiàng)目的時(shí)候,都會重新生成一個(gè)新的證書,這時(shí)候就會導(dǎo)致一個(gè)問題,重啟之前生成的access_token,在重啟之后,就不適用了,因?yàn)樽C書改變了,對應(yīng)的加密方式也改變了,所以,就會出現(xiàn)下面這個(gè)問題:
錯(cuò)誤信息:
Www-Authenticate:Bearer error="invalid_token", error_description="The signature key was not found"
解決方式,就是始終使用一個(gè)證書,我們先這樣配置:
services.AddIdentityServer().AddDeveloperSigningCredential();可以查看下AddDeveloperSigningCredential實(shí)現(xiàn)源碼,啟動項(xiàng)目,IdentityServer4 會在項(xiàng)目目錄中生成一個(gè)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中代碼執(zhí)行,會先判斷tempkey.rsa證書文件是否存在,如果不存在的話,就創(chuàng)建一個(gè)新的tempkey.rsa證書文件,如果存在的話,就使用此證書文件。
所以,我們配置的時(shí)候,傳遞一個(gè)tempkey.rsa證書文件名,就可以了:
services.AddIdentityServer().AddDeveloperSigningCredential("tempkey.rsa");當(dāng)然,你也可以對tempkey.rsa證書文件,進(jìn)行重命名操作。
參考資料:
The signature key was not found
IdentityServer4 Configuring services
IdentityServer4 Cryptography, Keys and HTTPS
ASP.NET Core 實(shí)現(xiàn) OAuth2.0 的 ResourceOwnerPassword 和 ClientCredentials 模式
IdentityServerBuilderExtensionsCrypto.cs
相關(guān)文章:
IdentityServer4(OAuth2.0服務(wù))折騰筆記
IdentityServer4 實(shí)現(xiàn) OpenID Connect 和 OAuth 2.0
IdentityServer4 使用OpenID Connect添加用戶身份驗(yàn)證
IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架學(xué)習(xí)保護(hù)API
IdentityServer4 指定角色授權(quán)(Authorize(Roles="admin"))
原文地址:http://www.cnblogs.com/xishuai/p/identityserver4-signing-credential-rsa.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的IdentityServer4 SigningCredential(RSA 证书加密)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Asp.Net Core 发布到IIS
- 下一篇: 微软Azure开源开发者(深圳)峰会等你