2017-06-01 4 views
1

Il semble que Google modernise les interactions OAuth pour les applications natives comme annoncé initialement ici https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.htmlOAuth 2.0 de Google pour les applications installées et le client secret ne pas être un secret

et comme en témoignent leurs pages de documentation actuelles https://developers.google.com/identity/protocols/OAuth2InstalledApp

J'ai été en mesure d'exécuter avec succès l'exemple d'application de console dans le référentiel github référencé.

Ce flux échange le code d'autorisation pour un jeton d'accès en utilisant le secret client parmi d'autres paramètres. Cependant, il est bien connu (et comme indiqué dans l'article référencé) que les secrets des clients ne peuvent pas être stockés de manière sécurisée dans les applications installées. Les mêmes états d'article ce fait de la manière suivante

Les résultats du processus dans un ID client et, dans certains cas, un secret client, que vous intégrez dans le code source de votre application. (Dans ce contexte, le secret du client est évidemment pas traité comme un secret.)

Donc, si ce flux est le débit recommandé pour l'application installée, devrions-nous nous inquiéter tout simplement pas à protéger le client_secret et incorporez droit dans l'application? Si oui, qu'en est-il de ce flux? En outre, comme le montre l'exemple, une URL de redirection http aléatoire est générée localement et n'est enregistrée nulle part dans la page Informations d'identification de la console développeur Google. Contrairement à Azure AD, vous devez spécifier l'URL de redirection lors de l'enregistrement d'une application native.

Répondre

2

Le comportement du serveur d'autorisation de Google dépend du type de client que vous enregistrez. Il est étrange que le "secret client" soit requis pour les clients Desktop et TV, mais pas pour iOS et Android, cependant pour les 4 types d'applications natives, le serveur considère les clients comme non confidentiels, et le "secret client" "value est effectivement une extension de l'identifiant client. Ceci est en contraste avec les clients Web, où il est supposé que la confidentialité du secret client est maintenue, et donc ils peuvent être traités différemment pour des actions comme l'autorisation incrémentielle.

En ce qui concerne l'enregistrement des URI de redirection, cela est également bloqué sur les types de clients. Pour certains types comme le Web, l'inscription manuelle est requise. Pour les autres types comme Desktop, l'URI de redirection est préenregistrée (dans le cas du bureau, http://127.0.0.1:*/*).