Podpora PKCE ?
-
Dobrý den,
dle diskuze https://napoveda.seznam.cz/forum/threads/173207/1 by PKCE mělo být podporováno. Bohužel se mi však nedaří vygenerovat access token za použití code_challange / code_verifier.Zde záznam z pokusu:
POST https://login.szn.cz/api/v1/oauth/token
Content-Type: application/x-www-form-urlencoded
Accept: application/jsonclient_id=753a59c0f2ba3a4b3164a6c1ded2ba6aaf0fe2785cc48f7f&redirect_uri=https%3A%2F%2Fwww.elitedate.loc%2Foauth%2Flogin%2Fprocess%2Fseznam&grant_type=authorization_code&code=T_WsXhtnJTBNCusnBoXEEsekaO&code_verifier=yUgsksN0ysBlKdS193V73cCeuhh1GKuoWBdfM7KHE4qaa4cd
400 Bad Request {"error": "invalid_client"}
Code challange jsem generoval zde https://tonyxu-io.github.io/pkce-generator/ , tak předpokládám, že v tom problém nebude.
Když vynechám z přihlašovací URL code_challenge=&code_challenge_method=, tak následně s client_secret nemám problém získat access_token. Takže potíž je jen s tím použitím PKCE.
Podařilo se někomu zprovoznit PKCE? Dělám něco špatně?
Předem děkuji za pomoc.
-
Dobry den,
nase implementace PKCE bohuzel neodstranovala rovnitka pri vypoctu hashe code_challenge (viz diskuze u https://napoveda.seznam.cz/forum/threads/173207/1). Nyni by to jiz melo fungovat -- prosim, zkuste to znovu a dejte vedet.
S pozdravem
Ondrej Zara -
Mohu potvrdit, že nyní mi již projde kontrola code_challange / code_verifier. Ale i přestože použiji PKCE, tak je stále vyžadováno uvedení parametru client_secret se správnou hodnotou. Pokud tento parametr neuvedu, tak opět obdržím "invalid_client", i přestože mám správně PKCE.
PKCE jsem plánoval použít v mobilní aplikaci, kde nelze bezpečně uchovávat client_secret. Vím, že PKCE není plnohodnotná náhrada za client_secret, ale spíše nadstavba. Nicméně jsem nabyl dojmu, že pro veřejného klienta je doporučený kompromis PKCE bez client_secret.
Jaký postup pro Seznam Oauth je doporučený pro mobilního klienta?
-
Dobrý den,
správně jste popsal současný stav, kdy je client_secret vyžadován i při použití PKCE. Pokud vám to nečiní problém, zkuste jej zatím posílat (i když je jasné, že v případě mobilní aplikace je jeho "bezpečnost" na zhruba stejné úrovni, jako client_id).
Zkusíme zvážit, zdali by se při PKCE mohl client_secret neověřovat (osobně mi to dává smysl), nicméně taková změna -- byť implementačně triviální -- asi chvíli potrvá. Dám vědět, pokud se tak stane.
-
Dobrý den,
posunuli jsme se nyní do stavu, který navrhujete -- pokud použijete PKCE, není nutné posílat client_secret. Budete laskav, pokud to ozkoušíte a ověříte.