בעיה בהרשאות JWT

הנושא בפורום 'קהילת מפתחי אתרי אינטרנט' פורסם ע"י EPaP, ‏12/1/20.

  1. EPaP

    EPaP Moderator מנהל פיתוח / אפיון / עיצוב אתרים עיצוב גרפי פרסום וקופירייטינג

    הצטרף:
    ‏22/6/16
    הודעות:
    2,532
    תודות :
    4,251
    נקודות:
    230
    עיסוק:
    אסטרטגיה ונראות עסקית
    מפתחת אתר באמצעות Web API, Angular 8
    אני מאבטחת את האתר בתקן JWT
    אני יוצרת טוקן ושולחת אותו מהקליינט
    אבל משום מה ה C# לא מקבל אותו כתקין.
    ואני מקבלת הודעת שגיאה של בלתי מורשה
    אשמח להבין מה הבעיה שלי

    C#:
    קוד:
    public string GenerateTokenForUser(UsersDTO user)[/RIGHT]
    [LEFT]    {
            var signingKey = "GQDstc21ewfffffffffffFiwDffVvVBrk";
            var now = DateTime.UtcNow;
            var key = new SymmetricSecurityKey(Encoding.Default.GetBytes(signingKey));
            var creds = new SigningCredentials(key,
            SecurityAlgorithms.HmacSha256);
            var claimsIdentity = new ClaimsIdentity(new List<Claim>()
            {
                new Claim(ClaimTypes.Name, user.id.ToString())
            }, "custom");
            var securityTokenDescriptor = new SecurityTokenDescriptor()
            {
                Issuer = "self",
                Subject = claimsIdentity,
                SigningCredentials = creds,
                Expires = now.AddHours(5)
            };
        var tokenHandler = new JwtSecurityTokenHandler();
        var plainToken = tokenHandler.CreateToken(securityTokenDescriptor);
        var signedAndEncodedToken = tokenHandler.WriteToken(plainToken);
        return signedAndEncodedToken;
    }
    [/LEFT]
    Web API:

    קוד:
     [Authorize]
        [Route("GetLearnedPagesCount/{userId}")]
        public IHttpActionResult GetLearnedPagesCount(int userId)
        {
          ...
        }
    Angular 8:
    קוד:
    httpOptions = {
      headers: new HttpHeaders({
        'Authorization': `Bearer `+this.cookieService.get('token')
      })
    };
     GetLearnedPages(): Observable<Array<MyPages>> {
        return this.httpClient.get<Array<MyPages>>(this.serverServ.URL + "Controller/GetLearnedPages/"
        + this.user.id, this.httpOptions);
      }
    תודה!​