J'ai un produit avec une API REST simple afin que les utilisateurs du produit puissent s'intégrer directement aux fonctionnalités du produit sans utiliser mon interface utilisateur Web.
Récemment, divers tiers m'intéressent à intégrer leurs clients de bureau à l'API pour permettre aux utilisateurs de mon produit d'accéder à leurs données à l'aide de cette application tierce.
J'ai vu que les applications qui souhaitent utiliser Twitter s'authentifient à l'aide d'une page de connexion hébergée par Twitter qui accorde à une application spécifique l'autorisation d'accéder aux données de cet utilisateur. Vous cliquez sur le bouton "Autoriser" ou "Refuser" et le processus d'authentification est terminé. Facebook utilise le même mécanisme que je sache.
Après des recherches plus poussées, cela semble être OAuth en action, et vu que mon API est basée sur .Net, je pense que je devrais utiliser DotNetOpenAuth et fournir un mécanisme similaire. Malheureusement, les exemples sont peu documentés (voire pas du tout) et les seuls didacticiels que je peux trouver en ligne semblent être axés sur vous aider à fournir un mécanisme de connexion à vos utilisateurs afin qu'ils puissent se connecter à votre site Web en utilisant un fournisseur tiers.
Ce que j'aimerais vraiment faire, c'est que mon API REST gère toute l'authentification de base et la logique métier de mon application Web et que, sous le capot, mon application Web soit essentiellement une autre application qui utilise simplement l'API via OAuth. Les utilisateurs s'authentifieraient sur le site Web soit directement en utilisant leur nom d'utilisateur et leur mot de passe, soit via un fournisseur tiers tel que MyOpenID ou Facebook, puis le site Web utiliserait en quelque sorte le jeton retourné pour s'authentifier auprès de l'API REST.
Il semble que j'ai besoin de mon API pour héberger en quelque sorte un service OAuth, mais que les utilisateurs utilisent également un service OAuth tiers. Je ne peux pas m'empêcher de penser que je n'ai pas assez de connaissances sur OAuth pour décider si je complique trop les choses ou si ce que j'essaie de faire est une bonne ou une mauvaise façon de faire les choses.
Quelqu'un peut-il me donner au moins un aperçu général des étapes que je dois entreprendre ou de ce que je devrais examiner pour y parvenir? Ou dirigez-moi vers des tutoriels? Ou faire exploser ma proposition et me dire que je vais tout à fait à propos de cela (architecturalement)?