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

    <bdo id='R7tuM'></bdo><ul id='R7tuM'></ul>
    1. <tfoot id='R7tuM'></tfoot>

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

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

        無法訪問 JWT 令牌 .NET Core 中的角色

        Can#39;t access Roles in JWT Token .NET Core(無法訪問 JWT 令牌 .NET Core 中的角色)

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

              • <legend id='NCM6u'><style id='NCM6u'><dir id='NCM6u'><q id='NCM6u'></q></dir></style></legend>

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

                  <tbody id='NCM6u'></tbody>

                  本文介紹了無法訪問 JWT 令牌 .NET Core 中的角色的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  限時送ChatGPT賬號..

                  我有一個使用 .NET Core API、Keycloak 和 JWT Token 制作的應用程序.

                  I have an application made with .NET Core API, Keycloak and JWT Token.

                  到目前為止,我一直在使用舊版本的 Keycloak,當它創建 JWT 令牌時,它在有效負載上寫入了角色:

                  The older version of Keycloak that I've been using so far, when it created the JWT Token it wrote the roles here on payload:

                  {
                      "user_roles": [
                          "offline_access",
                          "uma_authorization",
                          "admin",
                          "create-realm"
                    ]
                  }
                  

                  但是現在我更新它之后,它在payload上寫了角色:

                  But now after I updated it, it's writing the roles here on payload:

                  {
                    "realm_access": {
                      "roles": [
                        "create-realm",
                        "teacher",
                        "offline_access",
                        "admin",
                        "uma_authorization"
                      ]
                    },
                  }
                  

                  我需要知道如何將這個舊代碼更改為新代碼,告訴它不要查看 user_roles,而是查看 realm_access 然后角色.

                  And I need to know how to change this old code to the new one, to tell that don't look at user_roles, but do look at realm_access then to roles.

                  public void AddAuthorization(IServiceCollection services)
                  {
                      services.AddAuthorization(options =>
                      {
                          options.AddPolicy("Administrator", policy => policy.RequireClaim("user_roles", "admin"));
                          options.AddPolicy("Teacher", policy => policy.RequireClaim("user_roles", "teacher"));
                          options.AddPolicy("Pupil", policy => policy.RequireClaim("user_roles", "pupil"));
                          options.AddPolicy(
                              "AdminOrTeacher",
                              policyBuilder => policyBuilder.RequireAssertion(
                                  context => context.User.HasClaim(claim =>
                                                 claim.Type == "user_roles" && (claim.Value == "admin" || claim.Value == "teacher")
                                            ))
                          );
                      });
                  }
                  

                  推薦答案

                  以下代碼會將 Keycloak (v4.7.0) 中的realm_access.roles"-claim (JWT Token) 轉換為 Microsoft Identity Model 角色聲明:

                  The following code will transform "realm_access.roles"-claim (JWT Token) from Keycloak (v4.7.0) into Microsoft Identity Model role-claims:

                  public void ConfigureServices(IServiceCollection services)
                  {
                      ...
                      services.AddTransient<IClaimsTransformation, ClaimsTransformer>();
                      ...
                  }
                  
                  public class ClaimsTransformer : IClaimsTransformation
                  {
                      public Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
                      {
                          ClaimsIdentity claimsIdentity = (ClaimsIdentity)principal.Identity;
                  
                          // flatten realm_access because Microsoft identity model doesn't support nested claims
                          // by map it to Microsoft identity model, because automatic JWT bearer token mapping already processed here
                          if (claimsIdentity.IsAuthenticated && claimsIdentity.HasClaim((claim) => claim.Type == "realm_access"))
                          {
                              var realmAccessClaim = claimsIdentity.FindFirst((claim) => claim.Type == "realm_access");
                              var realmAccessAsDict = JsonConvert.DeserializeObject<Dictionary<string, string[]>>(realmAccessClaim.Value);
                              if (realmAccessAsDict["roles"] != null)
                              {
                                  foreach (var role in realmAccessAsDict["roles"])
                                  {
                                      claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, role));
                                  }
                              }
                          }
                  
                          return Task.FromResult(principal);
                      }
                  }
                  

                  這篇關于無法訪問 JWT 令牌 .NET Core 中的角色的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持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)
                        <legend id='BYEOj'><style id='BYEOj'><dir id='BYEOj'><q id='BYEOj'></q></dir></style></legend>

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

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

                        • <bdo id='BYEOj'></bdo><ul id='BYEOj'></ul>
                        • <tfoot id='BYEOj'></tfoot>
                            主站蜘蛛池模板: 天堂一区二区三区 | 欧美午夜精品 | 日韩中文字幕第一页 | 成人精品 | 成人免费一级视频 | 欧美日韩亚洲一区 | 久久久久免费精品国产小说色大师 | 国产丝袜一区二区三区免费视频 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 欧美精| 亚洲美女一区二区三区 | 欧美高清hd| 一区二区三区免费 | 久久99精品国产自在现线小黄鸭 | 久久午夜精品福利一区二区 | 久久久久久免费免费 | 日韩欧美国产一区二区三区 | 久久久久久国产 | 欧美精品一区二区三区四区 | 欧美成人在线影院 | 国产精品久久久久久婷婷天堂 | 日本成人在线播放 | 精品国产一区二区国模嫣然 | 免费观看一级特黄欧美大片 | 国产95在线 | 成人av一区二区亚洲精 | 欧美激情综合五月色丁香小说 | 激情毛片| 性做久久久久久免费观看欧美 | 亚洲网站在线播放 | 日日噜噜噜夜夜爽爽狠狠视频, | 色吧久久| 亚洲精品99久久久久久 | 国产在视频一区二区三区吞精 | 国产亚洲一区二区三区 | 亚洲精品久久久一区二区三区 | 成人在线观看网站 | 色999视频 | 亚洲精品视频在线 | 97精品超碰一区二区三区 | 欧美黄色性生活视频 |