bugfix> roles > 投稿

Asp.Net Core 2.0 API、Identity Server、WPFアプリでプロジェクトを完了しました。 ログインした後、WPFからAPIにアクセスできます。

現在、特定のユーザーだけがAPIにアクセスできるようにロールを実装しようとしています。

Config.csで、クライアントを宣言し、スコープに追加しています:

 new Client
            {
             AllowedScopes =
                {
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    IdentityServerConstants.StandardScopes.Email,
                    IdentityServerConstants.StandardScopes.OfflineAccess,
                    "fiver_auth_api",
                    "role"
                },
            AlwaysIncludeUserClaimsInIdToken=true
           }

TestUserの宣言:

 return new List<TestUser>
        {
            new TestUser
            {
                SubjectId = "", Username = "", Password = "",
                Claims = new List<Claim>
                {
                    new Claim(JwtClaimTypes.Email, "AliceSmith@email.com"),
                    new Claim(JwtClaimTypes.EmailVerified, "true", ClaimValueTypes.Boolean),
                    new Claim(JwtClaimTypes.Role, "Admin"),
                    new Claim(JwtClaimTypes.Scope, "openid offline_access fiver_auth_api")
                }
            }
       }  

そして、私が使用しているコントローラーで:

[Authorize(Roles = "Admin")]

トークンにユーザークレームを取得できないのはなぜですか?

回答 1 件
  • 興味のある人のために、私がそれを修正した方法があります: 構成ファイルに、役割のリストを追加します。

    new ApiResource
     (
       "fiver_auth_api", 
       "Fiver.Security.AuthServer.Api", 
        new List<string> {"role"} <--- Add this line to your API
      )
    
    

あなたの答え