Fórum nápovědy

Seznam

Podpora PKCE ?

Lukáš Langr

21.7.2025 v 11:20

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:

GET https://login.szn.cz/api/v1/oauth/auth?response_type=code&client_id=753a59c0f2ba3a4b3164a6c1ded2ba6aaf0fe2785cc48f7f&redirect_uri=https%3A%2F%2Fwww.elitedate.loc%2Foauth%2Flogin%2Fprocess%2Fseznam&scope=identity&code_challenge=U3VZ9Rvcr-JWB_GfLPv-ZohRLI0ErTl42-jwmH1qyQg&code_challenge_method=S256

>>

POST https://login.szn.cz/api/v1/oauth/token
Content-Type: application/x-www-form-urlencoded
Accept: application/json

client_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.

Ondřej Žára • Webmaster Guru

21.7.2025 v 12:19

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

Lukáš Langr reagoval na příspěvek od Ondřej Žára

22.7.2025 v 9:46

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?

Ondřej Žára • Webmaster Guru reagoval na příspěvek od Lukáš Langr

22.7.2025 v 9:56

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.

Nový dotaz

Přiložené přílohy

    Zbývá 12MB (z 12MB)

    Podpora PKCE ?

    Přiložené přílohy

      Zbývá 12MB (z 12MB)