Ce sujet a été incroyablement déroutant pour moi. Je suis un débutant dans les applications HTTP mais j'ai besoin de développer un client iPhone qui consomme des données JSON de quelque part. J'ai choisi l'API Web de MS parce que cela me paraissait assez facile, mais quand il s'agit d'authentifier les utilisateurs, les choses deviennent assez frustrantes.
Je suis étonné de ne pas avoir été en mesure de trouver un exemple clair de la manière d'authentifier un utilisateur depuis l'écran de connexion jusqu'à l'utilisation de l' Authorize
attribut sur mes ApiController
méthodes après plusieurs heures de recherche sur Google.
Ce n’est pas une question mais une demande d’exemple sur la manière de procéder exactement. J'ai regardé les pages suivantes:
Même si ceux-ci expliquent comment gérer les demandes non autorisées, ils ne démontrent pas clairement quelque chose comme un LoginController
ou quelque chose comme ça pour demander les informations d'identification de l'utilisateur et les valider.
Quelqu'un est-il prêt à écrire un bel exemple simple ou à me diriger dans la bonne direction, s'il vous plaît?
Merci.
la source
Réponses:
C'est parce que vous êtes confus au sujet de ces deux concepts:
L'authentification est le mécanisme par lequel les systèmes peuvent identifier en toute sécurité leurs utilisateurs. Les systèmes d'authentification apportent des réponses aux questions:
L'autorisation est le mécanisme par lequel un système détermine le niveau d'accès qu'un utilisateur authentifié particulier devrait avoir aux ressources sécurisées contrôlées par le système. Par exemple, un système de gestion de base de données pourrait être conçu de manière à fournir à certaines personnes spécifiées la possibilité de récupérer des informations à partir d'une base de données, mais pas la possibilité de modifier les données stockées dans la base de données, tout en donnant à d'autres personnes la possibilité de modifier les données. Les systèmes d'autorisation fournissent des réponses aux questions:
L'
Authorize
attribut dans MVC est utilisé pour appliquer des règles d'accès, par exemple:La règle ci-dessus autorisera uniquement les utilisateurs des rôles Admin et Super User à accéder à la méthode
Ces règles peuvent également être définies dans le fichier web.config, à l'aide de l'
location
élément. Exemple:Cependant, avant que ces règles d'autorisation ne soient exécutées, vous devez être authentifié sur le site Web actuel .
À partir de là, nous pourrions diviser le problème en deux:
Authentifier les utilisateurs lors de la consommation des services Web API dans la même application Web
Ce serait l'approche la plus simple, car vous vous fiez à l' authentification dans ASP.Net
Voici un exemple simple:
Web.config
Les utilisateurs seront redirigés vers le compte / la route de connexion , vous y rendriez des contrôles personnalisés pour demander les informations d'identification de l'utilisateur, puis vous définiriez le cookie d'authentification en utilisant:
Authentification multiplateforme
Ce cas serait lorsque vous n'exposez que des services API Web dans l'application Web, par conséquent, vous auriez un autre client consommant les services, le client pourrait être une autre application Web ou toute application .Net (Win Forms, WPF, console, service Windows, etc)
Par exemple, supposons que vous utiliserez le service API Web à partir d'une autre application Web sur le même domaine réseau (dans un intranet), dans ce cas, vous pouvez vous fier à l'authentification Windows fournie par ASP.Net.
Si vos services sont exposés sur Internet, vous devez alors transmettre les jetons authentifiés à chaque service d'API Web.
Pour plus d'informations, récupérez les articles suivants:
http://stevescodingblog.co.uk/basic-authentication-with-asp-net-webapi/
http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/
la source
Si vous souhaitez vous authentifier par rapport à un nom d'utilisateur et un mot de passe et sans cookie d'autorisation , l' attribut MVC4 Authorize ne fonctionnera pas immédiatement . Cependant, vous pouvez ajouter la méthode d'assistance suivante à votre contrôleur pour accepter les en-têtes d'authentification de base. Appelez-le depuis le début des méthodes de votre contrôleur.
Du côté client, cet assistant crée un
HttpClient
avec l'en-tête d'authentification en place:la source
Je travaille sur un projet MVC5 / API Web et je devais être en mesure d'obtenir l'autorisation pour les méthodes Web Api. Lorsque ma vue d'index est chargée pour la première fois, j'appelle la méthode API Web «token» qui, je crois, est créée automatiquement.
Le code côté client (CoffeeScript) pour obtenir le jeton est:
En cas de succès, le code suivant est appelé, ce qui enregistre le jeton d'authentification localement:
Ensuite, si j'ai besoin de faire un appel Ajax à une méthode API Web qui a la balise [Authorize], j'ajoute simplement l'en-tête suivant à mon appel Ajax:
la source
response.access_token
vient-il. Le définissez-vous à partir du code c # ..?