Comment démarrer avec OAuth pour sécuriser une application Web API?
J'ai une Web application de l'API et j'ai compris OAuth serait la norme de sécurité modèle pour les Api, où un Serveur d'Authentification deviendrait responsable de générer de l'Autorisation des Jetons de sorte que l'utilisateur peut envoyer à notre serveur et de consommer des services.
Je suis très nouveau à cela, mais je comprends les rôles impliqués:
- Ressources Propriétaire
- Client
- Serveur De Ressources
- Serveur D'Autorisation
Mais qu'est-ce que OAuth exactement dans la pratique, pas en théorie? Est-ce une .NET-library? C'est un service fourni par une Société distincte? Est-il quelque chose que je peux configurer sur mon développement local de la machine et de voir comment il fonctionne?
Comment commencer avec OAuth pour sécuriser une application d'API Web?
source d'informationauteur The Light
Vous devez vous connecter pour publier un commentaire.
OAuth est un protocole; la version actuelle est OAuth 2.0. Plus de votre question, que des listes de liens plusieurs implémentations du protocole dans diverses technologies. Pour une utilisation avec le .NET Web API, vous êtes probablement intéressé à DotNetOpenAuth qui fournit des implémentations de ces deux OAuth 1 et OAuth 2.
Je suis en utilisant DotNetOpenAuth dans une application que je suis en train de travailler sur maintenant pour obtenir un .NET Web API. J'ai une
OAuth2Handler
qui s'étendDelegatingHandler
qui est inséré dans le pipeline API Web avant de demandes entrantes atteindre des contrôleurs.OAuth2Handler
effectue les opérations suivantes:ResourceServer
ResourceServer.GetPrincipal()
qui lit et décrypte un accèsjeton (publié ailleurs par les
AuthorizationServer
et renvoie unOAuthPrincipal
(Dans mon cas, je suis en train de lire des données supplémentaires que le DotNetOpenAuth application vous permet de passer et de la création d'unClaimsPrincipal
.)IPrincipal
contenant les informations de l'utilisateur de lire à partir du jeton d'accès à la propriété de l'Utilisateur du fil et actuel HTTP contexte, de sorte qu'il est disponible à partir de laApiController.Utilisateur
propriété dans le service de contrôleurs:httpContext.User = Thread.CurrentPrincipal = principal;
Honnêtement, l'obtention de ce tous les de travailler (par exemple la configuration du serveur d'autorisation, de ressources de serveur, certificats, etc.) n'est pas trivial. Malheureusement, il ne semble pas être un bon guide sur la DotNetOpenAuth site. Voici quelques autres tâches que vous aurez devant vous si vous aller dans cette voie:
IAuthorizationServer
- C'est l'interface qui vous est fournie parDotNetOpenAuth qui vous permet de brancher à la bibliothèque et de l'utilisation
leur mise en œuvre à la question OAuth2 jetons d'accès. Vous aurez également besoin de mettre en œuvre
INonceStore
etICryptoKeyStore
qui je l'ai fait à l'aide d'un EntityFramework contexte pour le stockage.AuthorizationServer
etResourceServer
chaque utilisation de certificats pour chiffrer/déchiffrer le jeton d'accès s'assurer qu'ils ne sont accessibles les uns aux autres. J'ai construit quelques configuration personnalisée afin que je puisse gérer cette configuration dans leweb.config
les fichiers de mon serveur d'autorisation d'application et de mon API Web services (serveur de ressources).J'espère que vous donnera une idée de la façon de commencer avec OAuth et .NET Web API. Voici un post de blog de démontrer certaines de ces étapes. Cette SORTE de réponse donne un peu plus haut niveau de détails de la partie client de l'image.
(Le DotNetOpenAuth de documents en ligne semblent être en bas à droite maintenant... désolé de pas de liens entre eux; Apparemment, il a qui s'est passé avant).