Comment conserver les informations d'identification du client confidentiel, tout en utilisant OAuth2 des Ressources du Mot de passe du Propriétaire des informations d'Identification de type de subvention

Nous construisons un service rest et nous voulons utiliser OAauth 2 pour l'autorisation. Le projet actuel (v2-16 du 19 Mai) décrit quatre types de subventions. Ce sont des mécanismes ou des flux de trésorerie pour l'obtention de l'autorisation (un jeton d'accès).

  1. Code D'Autorisation
  2. De Reconnaissance Implicite De L'
  3. Ressources Propriétaire Des Informations D'Identification
  4. Informations D'Identification Du Client

Il semble que nous devons soutenir tous les quatre d'entre eux, puisqu'ils servent à des fins différentes. Les deux premiers (et probablement la dernière) peut être utilisé à partir d'applications tierces qui ont besoin d'accéder à l'API. Le code d'autorisation est la norme de façon à autoriser une application web qui a la chance de résider sur un serveur sécurisé, tandis que la reconnaissance implicite de l'écoulement serait le choix pour une application client qui n'arrive pas à tenir ses informations d'identification confidentiel (par exemple mobile/application de bureau, JavaScript client, etc.).

Nous voulons utiliser le troisième mécanisme de nous-mêmes pour fournir une meilleure expérience utilisateur sur les appareils mobiles – au lieu de prendre l'utilisateur pour un dialogue de connexion dans un navigateur web, et ainsi de suite, l'utilisateur devra tout simplement saisir son nom d'utilisateur et le mot de passe directement dans l'application et connectez-vous.
Nous voulons également utiliser les informations d'Identification du Client le type de subvention obtenir un jeton d'accès qui peut être utilisé pour afficher des données publiques n'est pas associé à un utilisateur. Dans ce cas, ce n'est pas tant d'autorisation, mais plutôt quelque chose de semblable à une clé API que nous utilisons pour donner accès qu'aux applications qui ont enregistré avec nous, nous donnant une option pour révoquer les droits d'accès en cas de besoin.

Donc mes questions sont:

  1. Pensez-vous j'ai compris le but de les différents types de subventions correctement?
  2. Comment pouvez-vous conserver vos informations d'identification du client confidentiel? Dans les troisième et quatrième cas, nous avons besoin de l'id du client et le client secret quelque part sur le client, qui ne sonne pas comme une bonne idée.
  3. Même si vous utilisez la reconnaissance implicite de type et de ne pas exposer votre client secret, ce qui empêche une autre application d'usurper l'identité de votre application en utilisant le même mécanisme d'autorisation et de votre identifiant client?

Pour résumer, nous voulons être en mesure d'utiliser les informations d'identification du client et des ressources propriétaire des informations d'identification de flux à partir d'une application cliente. Deux de ces flux vous obliger à stocker le client secret, en quelque sorte, mais le client est un mobile ou JavaScript de l'application, de sorte que ceux-ci pourraient facilement être volé.