Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > de.comp.lang.javascript > #5316
| From | Arno Welzel <usenet@arnowelzel.de> |
|---|---|
| Newsgroups | de.comp.lang.javascript |
| Subject | Re: Authorization: Bearer in "normalem" GET Request |
| Date | 2022-08-05 10:46 +0200 |
| Message-ID | <jl43ngFnghqU1@mid.individual.net> (permalink) |
| References | <slrntekhi4.57bk.hjp-usenet3@trintignant.hjp.at> <jkv9btFrfd6U1@mid.individual.net> <slrntepjid.9hvl.hjp-usenet3@trintignant.hjp.at> |
Peter J. Holzer, 2022-08-05 10:01:
> On 2022-08-03 12:52, Arno Welzel <usenet@arnowelzel.de> wrote:
>> Peter J. Holzer, 2022-08-03 11:56:
>>> Ich habe ein API, das Requests über ein Bearer Tokens authentifiziert.
>>> Das funktioniert wunderbar, solange Requests über JavaScript (im
>>> konkreten Fall mittels Axios) generiert und der Output wieder in
>>> JavaScript konsumiert wird.
>>>
>>> Nun möchte ich aber dem User einen Download-Link anbieten. Das wäre im
>>> einfachsten Fall einfach ein <a href="//api.example/whatever/123">...</a>
>>> oder man könnte window.location setzen. Aber der Browser weiß nichts von
>>> dem Bearer-Token und setzt daher den Authorization Header nicht.
>>>
>>> Gibt es eine Möglichkeit, den Authorization Header präemptiv zu setzen?
>>
>> Nein. Der muss schon explizit angefordert werden.
>
> Naja, bei Basic Authentification fragt der Browser ja auch nicht
> jedesmal den User, wenn er ein 401 bekommt, sondern merkt sich die
> (Hostname, Realm, Username, Passwort)-Tupel. Das könnte er auch für
> Bearer Authentification machen, das Problem hier ist aber, dass der
> Input dafür vom Server kommt (ein Bearer-Token ist üblicherweise ein JWT
> oder sonst ein signierter Blob) und nicht vom User. Man bräuchte also
> die Möglichkeit, das programmatisch entweder präenptiv oder über einen
> Callback zu setzen.
Genau das meine ich ja - man kann den Authorization Header nicht senden,
ohne ihn vorher vom Server anzufordern.
[...]
> Der Code sieht jetzt übrigens so aus:
>
> axios.get(endpoint, options)
> .then((res) => {
> const blob = new Blob([res.data], {type: res.headers["content-type"]})
> const url = window.URL.createObjectURL(blob);
> const link = document.getElementById("download");
> link.href = url;
> link.click();
> })
D.h. jeder Angreifer kann sich den Authorization Header einfach anhand
des frei zugänglichen Code in seinem Browser per Web Developer-Console
einfach abgreifen? Oder ist das Code, den nur Benutzer zu sehen
bekommen, die sich vorher schon anderweitig authentifizieren mussten?
--
Arno Welzel
https://arnowelzel.de
Back to de.comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar
Authorization: Bearer in "normalem" GET Request "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-08-03 11:56 +0200
Re: Authorization: Bearer in "normalem" GET Request Arno Welzel <usenet@arnowelzel.de> - 2022-08-03 14:52 +0200
Re: Authorization: Bearer in "normalem" GET Request "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-08-05 10:01 +0200
Re: Authorization: Bearer in "normalem" GET Request Arno Welzel <usenet@arnowelzel.de> - 2022-08-05 10:46 +0200
Re: Authorization: Bearer in "normalem" GET Request "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-08-05 13:48 +0200
Re: Authorization: Bearer in "normalem" GET Request Arno Welzel <usenet@arnowelzel.de> - 2022-08-06 10:35 +0200
Re: Authorization: Bearer in "normalem" GET Request "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-08-06 14:06 +0200
Re: Authorization: Bearer in "normalem" GET Request Stefan Reuther <stefan.news@arcor.de> - 2022-08-06 22:28 +0200
Re: Authorization: Bearer in "normalem" GET Request "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-08-07 09:39 +0200
csiph-web