OAuth client authentication for public clients -


good morning,

i spent quite time researching oauth 2 spec , different grant , client types. haven't found satisfying answer though question of how authenticate public clients (i.e. mobile installed apps) using client secrets.

i looked @ fb , google , realised use bundleid (ios) , public signing key (android).

can explain how client auth works in these cases, how complements/fits in oauth 2.0 spec , how security loop holes avoided (i.e. decompilation of mobile app code) ?

thx nick

the short answer: public clients not authenticated in oauth 2.0.

the specification distinguishes confidential (usually webapp) , public (usually embedded) clients. confidential clients use authorization code grant scenario maximal security , authenticate. however, applications installed on user device, javascript apps not hide client_secret , received authorization code, standard made simplified scenario them: implicit grant flow.

in scenario, no client_secret or code => token exchange needed. note it's less secure design because embedded applications less secure, steps security cannot protected omitted. client uses client_id without client_secret , retrieves token authorization endpoint instead of authorization code. safety still present in scenario using https, explicit authorization of request user , returning results registered redirect_uri. note specification forbids issuing refresh token in scenario safety reasons.


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -