久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

  1. <tfoot id='RkWpO'></tfoot>
  2. <legend id='RkWpO'><style id='RkWpO'><dir id='RkWpO'><q id='RkWpO'></q></dir></style></legend>

  3. <i id='RkWpO'><tr id='RkWpO'><dt id='RkWpO'><q id='RkWpO'><span id='RkWpO'><b id='RkWpO'><form id='RkWpO'><ins id='RkWpO'></ins><ul id='RkWpO'></ul><sub id='RkWpO'></sub></form><legend id='RkWpO'></legend><bdo id='RkWpO'><pre id='RkWpO'><center id='RkWpO'></center></pre></bdo></b><th id='RkWpO'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='RkWpO'><tfoot id='RkWpO'></tfoot><dl id='RkWpO'><fieldset id='RkWpO'></fieldset></dl></div>

    <small id='RkWpO'></small><noframes id='RkWpO'>

      <bdo id='RkWpO'></bdo><ul id='RkWpO'></ul>

      使用 x509 證書簽署 JWT 令牌時遇到問題

      Trouble signing a JWT token with an x509 Certificate(使用 x509 證書簽署 JWT 令牌時遇到問題)

        • <i id='Z1eS9'><tr id='Z1eS9'><dt id='Z1eS9'><q id='Z1eS9'><span id='Z1eS9'><b id='Z1eS9'><form id='Z1eS9'><ins id='Z1eS9'></ins><ul id='Z1eS9'></ul><sub id='Z1eS9'></sub></form><legend id='Z1eS9'></legend><bdo id='Z1eS9'><pre id='Z1eS9'><center id='Z1eS9'></center></pre></bdo></b><th id='Z1eS9'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='Z1eS9'><tfoot id='Z1eS9'></tfoot><dl id='Z1eS9'><fieldset id='Z1eS9'></fieldset></dl></div>
            <bdo id='Z1eS9'></bdo><ul id='Z1eS9'></ul>
            <tfoot id='Z1eS9'></tfoot>
          • <legend id='Z1eS9'><style id='Z1eS9'><dir id='Z1eS9'><q id='Z1eS9'></q></dir></style></legend>

              <tbody id='Z1eS9'></tbody>
          • <small id='Z1eS9'></small><noframes id='Z1eS9'>

                本文介紹了使用 x509 證書簽署 JWT 令牌時遇到問題的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                問題描述

                限時送ChatGPT賬號..

                我在使用我創建的證書簽署 JWT 令牌時遇到問題.我了解簽名(公鑰/私鑰)如何工作的基本原理,但是類和工具集非常混亂.我已經對這個示例代碼大驚小怪了很長一段時間,現在我完全陷入了困境.當我運行附加的示例代碼時,我最終遇到以下錯誤(在 tokenHandler.CreateToken() 調用上):

                I'm having trouble signing a JWT token with a certificate that I created. I understand the fundamentals of how signing (public/private key) works, but the classes and toolsets are very confusing. I've been fussing with this example code for quite a while, and I'm fully stuck now. When I run the attached example code I end up with the following error (on the tokenHandler.CreateToken() call):

                System.NotSupportedException: 'IDX10634: 無法創建簽名提供者.算法:'[PII 隱藏]',SecurityKey:'[PII 是不支持隱藏]'.'

                System.NotSupportedException: 'IDX10634: Unable to create the SignatureProvider. Algorithm: '[PII is hidden]', SecurityKey: '[PII is hidden]' is not supported.'

                我提供了我在 CertificatePfxFileBase64Encoded 變量 base64 編碼中創建的證書.這是一個 .pfx 文件,其中嵌入了私鑰,沒有密碼.它是一個二進制文件,所以我必須進行 base64 編碼才能在此處共享.我試圖很好地理解這些課程是如何工作的,但我無法克服這個障礙.有任何想法嗎?下面的例子應該是完全獨立的,你只需要收集參考資料.

                I've provided the certificate I created in the CertificatePfxFileBase64Encoded variable base64 encoded. It's a .pfx file with the private key embedded in it with no password. Its a binary file so I had to base64 encoded in order to share it here. I'm trying to get a good understanding of how these classes work but I can't get past this hurdle. Any ideas? The example below should be fully self contained, you just have to gather the references.

                using Microsoft.IdentityModel.Tokens;
                using System;
                using System.IdentityModel.Tokens.Jwt;
                using System.Security.Claims;
                using System.Security.Cryptography.X509Certificates;
                
                namespace SecurityStuff
                {
                    public class Testing
                    {
                        static string CertificatePfxFileBase64Encoded = @"
                MIIJqQIBAzCCCW8GCSqGSIb3DQEHAaCCCWAEgglcMIIJWDCCBA8GCSqGSIb3DQEHBqCCBAAwggP8
                AgEAMIID9QYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQI/SSYpMmSpVwCAggAgIIDyE7kByhH
                OphDj2ZC39Zvlr2HWzXdXkMQnPEbuQ09d2B23iRW+UHJ+e2REf0UQqGRGTylL5nndtJS0zUvK+iq
                dhjyM7NZs2h1gqoxixeI5JN8MQwvp2amxL+LSNG01qR+QDXuptJptP6DfpspbJR3dbpk0OvqENFF
                q4QFItzvXbc+cF2ooF/rD6KArQj0mO/0IaTvaeSax680FtZj6IhHx5LPTBWGd+b6xZI60mhUL1qm
                5iQ4VjPsduNzXsb8d6ISDiShLijkxgyqAeQBS8idLBTcP/6OXXr1hW78G3kcSw6HSA78xP4eKWQN
                ZwJGnwBLUzVOD08Zkj2mNfcOjjEFArjclQjEnqjP2/AMYB7iRRwXIkrhs1hFuN3OJIMKXSd++LUk
                Ujrtppta0cTfKEjnXEtIcBbTaQztatNc9DD9vsWZF3Ls27G3rl0el3nyt8XDk3A2hkUpORERGswL
                5Z1cie3/dzensgimo3SJNiSGzU9EqaSD9P50cVmzQbG859jWaai+3A8e3/GUTGvH2VYFcQPHwQpY
                cAvbYW/OwnZ4bsy4zn0AebtZxPtuRnslbPYfDPsSWVDRPmsC9u5RpuQDzmtK5bdVzc9rB7qe6/50
                1Pe+6ggTBXGicrP1bPc/RSb962TjhkHyoHiWb9PkkH7WV0bSTpq4qO0n16oHKImjOshZdJji8I74
                PpO43F1cGHFA8vgFbTfBmbzIO/+ShHkze6cDtgqrU37TFJcDJV3drMlWiqRYz0cDZE24dxT36gb3
                TUqV8F6AnPfyjxNp6HY8vUaOrY65fzfnjJg0lqh/Mb0QYfRSi/BzUjhR4ZQB8dDeP28ZzJWR7nS7
                Q8+gEaQITC1xnV/WRvW6DphUii2KMvnhilytWIGbzVMjoudwb6v9QlBCrRPoMilLGHAYEV51Kpem
                ef9fqgFAimxhD8pbqELWkOGw6FSWDEm+SVwCwy5lS1Xd+ga2QgLULWWHE5RFRsJTJE5M8uYLlJIE
                7WSPLdkGvXsJDHuOaJKSpYFTcYwaA/hJeLn9E0laVvHjBXEb+9mT6JDmbLCuXR/gYkxsMe3cjVTu
                vdknwHgpHUwOZ94NJvF6m3WLhgLKXKQVESMSGXa+1i7CoD/WRz55LcSD13DDE6T+br3Mp0kVUGIK
                b7vOmraWonxDSApILYo5b7EP2G5mxGfHzyLRwcz9wsutV1qUb/HB6lJK62H2xndjCLx0ovFEXnUk
                ZhyeTJN7Zw4+5hXnkBBkKzbf3MxPccHz2o+Gg1S/bdwK/qA9JTC+jPfbzN56CvKpslSLMIIFQQYJ
                KoZIhvcNAQcBoIIFMgSCBS4wggUqMIIFJgYLKoZIhvcNAQwKAQKgggTuMIIE6jAcBgoqhkiG9w0B
                DAEDMA4ECOzQrwt8f681AgIIAASCBMiHodswjPyi+xknxjvo2j+wSPZcYurLVYzEmgnd+ySXwwHJ
                xXqzL3Wla164YkLQCcDuKlqdFwp2SJiqPWfR6Uk9wMjnhsH/TIs1L6Dl5GzidwDWEjcmS+mQGfdE
                wzU6rCxRgCmN9GtH3hz9p5LPlF+rbmdFmd9E+BXy3ZTYNVOu7nnEw0PnS4uD48iMXVlf1Pgzbqzt
                3YK9tEaHyNoUhyp3MWLWyManLSKlMLUJruEYeB0qvPr/0/IuHpE2YJOwXhj/QiXklXYIZsQ4rUW+
                R0WZwjxqWIQZeYkEtlW8J4tZAh0JzBdvFlYH+c+U816Mgt8W15dXgaJJPlIpuXY+1DWXPzTyzuWI
                Qf9dJgbQIlnTD1hrYRiV2WYo+MVGITufB3xUMBjRQJKH40pkngHlnrbvNm0993rj4zWkkTvgYe08
                Nxx4mmut118TxU2jM34CMKhxrjZVbEgVTApGu3/4CzT+oFvG2C6qom9bBuJA+hRRMuuGsane2PnJ
                Ce8B7Mn/iTSJwIg5eT2ZMDjTUnYs4cr4zIfOZsynqoBCNdh5ES0i3VZCJ1+xNLxkVjl3GoeUEnFr
                ZMUufByRGZO40TS+t5+ej8FtIvOzP4B/OHKVLC4NYVaBTxszu+ZUsa3RQBd/Cvri3+KIADZeaAU6
                uKShJjlnaaYR7pbR1U+UZgSGA5nbF56w9ua5K8nVFM1s0w/y7qZcfwmIP79o2hP8ZJFgcUXzik0x
                iLtKeOKnnbIaUp3uw6xuP6/o5kiLQ8yplmGF7uHUW/FOsqPh8CgSVvjNCmJ9b7S5hP80PKVGEtFc
                DddrbCaiNqf/HkWJiPjQW5G2++LA4H+/P2gamk/TfEFSXIyKdgoP6cHXQMf9LvFfaCRDMBhznmrO
                Y1priWPKkpxwV8mb3IE4dUns5QCPT1KQK03qBVe3PJ+HKIzzilDApheQS40f+rWp6SbHa3INt4Uk
                NqKwONORLBIaXDerT/R/vAGkpaADlABrlBPJATxIC6HeP7OVwXJHNaYzIkKwSE9ZvkF49fhgxT3C
                KtkikSm3wqyblmHnuB4ahPdO0CLRGDAy8Wxe6S0PSSWBnYS1ZwEYRcVT/wBxL8BTG6QslMnWnCZj
                89FV7UMUKfnPOVL8qtvzzJ6uKNcE2VwkaTaToPeUr3/jqIVC+dci74X8PdyFm2Bim7CdEBmo9uGv
                gqh+fnvE1eWF3i+ihKqBVPHEGlZc/KSAr8rWb3MkB7/zJiq0C9ZseQNh30fxO+MR1GYxW9ZoiqmK
                +xcfqUvg/0mxyQtjLXJU68VPwV8l9wOdpNVr5aNfAPZ/J49eyw2/dtK3ViQAQ2QkLSzELFpIiR21
                D8cL8sbQ7b+Q5fzloG07VcyYQPfxxJjHJCKSGsWWLV+OiYVh063nnLdSp3E2YlN5XJbXHYftQJBg
                82TRU4QSy6q4zm1tfdD2FgWKIZbJmwbx0pGx4ftgQyIcVW/NHj5ej9dMunGevBEhqBBwvZ4aAKhp
                jHzS9qoHBDjUL9PCLCsQHG6NS7HK6Nc3AbuIyV1asMlJeisJTWMy6M1B1JOIWcCV3ChY7o3Cfgee
                3nqvVVT1Nh8NpqUPYm6/+XjbNufTeRM8IqB7gi5TOEDnJrECH0Se1EPnpiJZucSKkKUxJTAjBgkq
                hkiG9w0BCRUxFgQU/EYyZZVcNLJF4k8lAbQVGZXQSygwMTAhMAkGBSsOAwIaBQAEFE5XVOAJU286
                B1gJ8j4mJ7HmXhEABAjfmw/u2zlmsAICCAA=";
                
                        public static string CreateTokenWithX509SigningCredentials()
                        {
                            var signingCert = new X509Certificate2(Convert.FromBase64String(CertificatePfxFileBase64Encoded));
                
                            var privateKey = new X509SecurityKey(signingCert);
                            var algo = privateKey.PrivateKey.SignatureAlgorithm;
                            var signingCredentials = new SigningCredentials(privateKey, algo);
                
                            var now = DateTime.Now;
                            var tokenDescriptor = new SecurityTokenDescriptor
                            {
                                Subject = new ClaimsIdentity(new Claim[]
                                        {
                                        new Claim(ClaimTypes.Name, "John"),
                                        new Claim(ClaimTypes.Role, "Sales"),
                                        }),
                                Issuer = "self",
                                IssuedAt = now,
                                NotBefore = now,
                                Expires = now.AddMinutes(50),
                                //SigningCredentials = new X509SigningCredentials(signingCert),     //For some reason this class no longer exists
                                SigningCredentials = signingCredentials,
                            };
                
                            var tokenHandler = new JwtSecurityTokenHandler();
                            SecurityToken token = tokenHandler.CreateToken(tokenDescriptor);
                            string tokenString = tokenHandler.WriteToken(token);
                
                            return tokenString;
                        }
                    }
                }
                

                ==== 編輯 ====

                我認為展示我如何制作簽名證書可能會有所幫助,因為問題可能出在那兒.下面是我用來生成證書 CertificatePfxFileBase64Encoded 的命令行.我使用應用程序 openSSL 來生成它.

                I thought it might be helpful to show how I made the signing certificate because maybe the problem lies in there. Below are the command lines I used to generate my certificate CertificatePfxFileBase64Encoded. I used the application openSSL to generate it.

                openssl req -new -newkey rsa:2048 -nodes -keyout CA_PrivateKey.key -out CA_SigningRequest.csr 
                
                openssl x509 -req -days 2000 -in CA_SigningRequest.csr -signkey CA_PrivateKey.key -out CA_Certificate.crt 
                
                openssl pkcs12 -export -out CA_Certificate.pfx -inkey CA_Private.key -in CA_Certificate.crt 
                

                推薦答案

                以下代碼從 .pfx 文件生成 JWT 令牌.

                The following code generates a JWT token from a .pfx file.

                public static string GenerateToken(int expireMinutes)
                {
                    X509Certificate2 signingCert = new X509Certificate2("PFXFilePath", "password");
                    X509SecurityKey privateKey = new X509SecurityKey(signingCert);
                    var now = DateTime.UtcNow;
                    var tokenHandler = new JwtSecurityTokenHandler();
                    var tokenDescriptor = new SecurityTokenDescriptor
                    {
                        Expires = now.AddMinutes(Convert.ToInt32(expireMinutes)),
                        SigningCredentials = new SigningCredentials(privateKey, SecurityAlgorithms.RsaSha256Signature)
                    };
                    JwtSecurityToken stoken = (JwtSecurityToken)tokenHandler.CreateToken(tokenDescriptor);
                    string token = tokenHandler.WriteToken(stoken);
                    return token;
                }
                

                這篇關于使用 x509 證書簽署 JWT 令牌時遇到問題的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                相關文檔推薦

                What are good algorithms for vehicle license plate detection?(車牌檢測有哪些好的算法?)
                onClick event for Image in Unity(Unity中圖像的onClick事件)
                Running Total C#(運行總 C#)
                Deleting a directory when clicked on a hyperlink with JAvascript.ASP.NET C#(單擊帶有 JAvascript.ASP.NET C# 的超鏈接時刪除目錄)
                asp.net listview highlight row on click(asp.net listview 在單擊時突出顯示行)
                Calling A Button OnClick from a function(從函數調用按鈕 OnClick)
                  <bdo id='keg6b'></bdo><ul id='keg6b'></ul>

                          <tbody id='keg6b'></tbody>

                      • <small id='keg6b'></small><noframes id='keg6b'>

                        <i id='keg6b'><tr id='keg6b'><dt id='keg6b'><q id='keg6b'><span id='keg6b'><b id='keg6b'><form id='keg6b'><ins id='keg6b'></ins><ul id='keg6b'></ul><sub id='keg6b'></sub></form><legend id='keg6b'></legend><bdo id='keg6b'><pre id='keg6b'><center id='keg6b'></center></pre></bdo></b><th id='keg6b'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='keg6b'><tfoot id='keg6b'></tfoot><dl id='keg6b'><fieldset id='keg6b'></fieldset></dl></div>

                        1. <legend id='keg6b'><style id='keg6b'><dir id='keg6b'><q id='keg6b'></q></dir></style></legend>
                          <tfoot id='keg6b'></tfoot>

                          主站蜘蛛池模板: 午夜国产一区 | 精品视频一区在线 | 国产精品免费观看视频 | 国产精品久久久久久久久动漫 | 夜夜骑首页 | www亚洲免费国内精品 | 玖玖精品 | 浴室洗澡偷拍一区二区 | 二区av | 久久99网 | 国产成人在线视频播放 | www.久久久.com| 日本公妇乱淫xxxⅹ 国产在线不卡 | 免费国产成人av | 久久视频一区 | 国产精品视频 | 国产精品国产三级国产a | 国产欧美在线 | a国产一区二区免费入口 | 一区二区三区国产精品 | 人人草天天草 | 性网站免费 | 欧美日本韩国一区二区 | 黄色片在线观看网址 | 精品国产一区二区三区在线观看 | 91免费视频观看 | 黄色一级大片在线免费看产 | 久久国产精品一区二区三区 | 激情a| 91一区二区三区 | 亚洲精品一区二区三区四区高清 | 国产一区二区三区精品久久久 | 日韩一区二区三区视频 | 日韩在线小视频 | 亚洲日韩中文字幕一区 | 视频三区 | 91网站在线播放 | 欧美一级欧美三级在线观看 | 亚洲精品一 | 成人中文网 | 91视频大全 |