|
@@ -43,7 +43,8 @@ namespace TEAMModelOS.SDK.Extension.JwtAuth.JwtHelper
|
|
|
claims.Add(new Claim(JwtClaimTypes.Issuer, setting.Issuer));
|
|
|
claims.Add(new Claim(JwtClaimTypes.Scope, claimModel.Scope));
|
|
|
claims.Add(new Claim(JwtClaimTypes.JwtId, Guid.NewGuid().ToString()));
|
|
|
- claims.AddRange(claimModel.Roles.ToArray().Select(s=>new Claim(JwtClaimTypes.Role,s)));
|
|
|
+ //claims.AddRange(claimModel.Roles.Select(s=>new Claim(JwtClaimTypes.Role, s)));
|
|
|
+ //claims.AddRange(claimModel.Claims.Select(s => new Claim(ClaimTypes.Role, s)));
|
|
|
string path = BaseConfigModel.ContentRootPath;
|
|
|
RSACryptoServiceProvider provider = RsaHelper.LoadCertificateFile(path + "/JwtRsaFile/private.pem");
|
|
|
RsaSecurityKey rsaSecurity = new RsaSecurityKey(provider);
|
|
@@ -69,11 +70,32 @@ namespace TEAMModelOS.SDK.Extension.JwtAuth.JwtHelper
|
|
|
|
|
|
///https://www.cnblogs.com/JacZhu/p/6837676.html#Update2.0 刷新 用户的 Token 在过期时间之内根本无法手动设置失效,随之而来的还有重放攻击等等问题
|
|
|
|
|
|
+
|
|
|
var jwtHandler = new JwtSecurityTokenHandler();
|
|
|
JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(jwtStr);
|
|
|
+ object role = new object(); ;
|
|
|
+ jwtToken.Payload.TryGetValue(ClaimTypes.Role, out role);
|
|
|
+
|
|
|
+ //var tm = new TokenModelJWT
|
|
|
+ //{
|
|
|
+ // Uid = (jwtToken.Id).ObjToInt(),
|
|
|
+ // Role = role != null ? role.ObjToString() : "",
|
|
|
+ //};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // var jwtHandler = new JwtSecurityTokenHandler();
|
|
|
+ // JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(jwtStr);
|
|
|
ClaimModel claimModel = new ClaimModel();
|
|
|
- object role = new object();
|
|
|
- claimModel.Claim = jwtToken.Claims.ToDictionary(claim => claim.Type, claim => claim.Value);
|
|
|
+ //object role = new object();
|
|
|
+ // claimModel.Claim = jwtToken.Claims.ToDictionary(claim => claim.Type, claim => claim.Value);
|
|
|
+ Dictionary<string, object> claimDict = new Dictionary<string, object>();
|
|
|
+ foreach (Claim claim in jwtToken.Claims)
|
|
|
+ {
|
|
|
+ claimDict.TryAdd(claim.Type, claim.Value);
|
|
|
+ }
|
|
|
+ claimDict[ClaimTypes.Role] = role;
|
|
|
+ claimModel.Claim = claimDict;
|
|
|
claimModel.Claims = jwtToken.Claims.ToList();
|
|
|
jwtToken.Payload.TryGetValue(JwtClaimTypes.Role, out role);
|
|
|
if(role!=null)claimModel.Roles=role.ToString().Split(",").ToList();
|