• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wysyłanie wartości ciasteczka w headerze

+1 głos
731 wizyt
pytanie zadane 16 lipca 2021 w JavaScript przez Szyszka Gaduła (3,530 p.)
Witam. Mam taki problem, że przechowuję swój access token w ciasteczku httpOnly. Ale żeby się autoryzować, muszę wysłać ten token w headerze Authorization. Ale jak mam tego dokonać, skoro ciasteczko jest httpOnly i nie mogę pobrać jego wartości przez JavaScript? Może jest przeznaczony do tego jakiś nieznany mi header?

1 odpowiedź

+2 głosów
odpowiedź 16 lipca 2021 przez Comandeer Guru (607,980 p.)
wybrane 16 lipca 2021 przez Szyszka
 
Najlepsza

Nie ma. Coś jest nie tak z projektem, jeśli ten sam token jest w ciasteczku, a równocześnie musisz go przesyłać w nagłówku Authorization. W takim wypadku raczej serwer powinien po prostu akceptować ciasteczko, które przyjdzie wraz z requestem.

Albo rób żądania przez swój backend. Wówczas pełniłby rolę proxy, które by dodawało odpowiednie nagłówki.

1
komentarz 16 lipca 2021 przez Szyszka Gaduła (3,530 p.)
edycja 16 lipca 2021 przez Szyszka

O, nie przyszło mi to na myśl. Rozwiązanie dla C#:

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultForbidScheme = JwtBearerDefaults.AuthenticationScheme;
            }).
                AddJwtBearer(options =>
                {
                    options.SaveToken = true;
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuer = true,
                        ValidateAudience = true,
                        ValidateLifetime = true,
                        ValidateIssuerSigningKey = true,
                        RequireExpirationTime = true,
                        ValidAudience = JWTConfig.ValidAudience,
                        ValidIssuer = JWTConfig.ValidIssuer,
                        IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(JWTConfig.SecretKey)),
                        ClockSkew = TimeSpan.FromSeconds(10),
                        NameClaimType = JwtClaimTypes.NickName
                    };
                    options.Events = new JwtBearerEvents
                    {
                        OnMessageReceived = context =>
                        {
                            context.Token = context.Request.Cookies["accessToken"];

                            return Task.CompletedTask;
                        }
                    };
                });

 

Podobne pytania

0 głosów
1 odpowiedź 379 wizyt
+2 głosów
0 odpowiedzi 991 wizyt
pytanie zadane 12 lipca 2021 w JavaScript przez Szyszka Gaduła (3,530 p.)
0 głosów
1 odpowiedź 956 wizyt
pytanie zadane 8 kwietnia 2020 w JavaScript przez Paproch Użytkownik (700 p.)

93,691 zapytań

142,610 odpowiedzi

323,216 komentarzy

63,218 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...