3 votes

Accès aux services Web basé sur des rôles personnalisés

Notre CMS met en œuvre son propre contrôle d'accès basé sur les rôles pour la gestion du contenu et autres, comme tous les autres CMS ;) J'ai récemment joué avec l'idée d'essayer de mettre en œuvre une extension de ce contrôle d'accès dans notre api de service web, avec l'idée éventuelle de choisir quels utilisateurs ont accès à quelles méthodes.

Quelqu'un a-t-il mis en œuvre quelque chose de ce genre ou connaît-il de bonnes ressources que je pourrais consulter pour faire avancer les choses ?

Notre développement se fait entièrement en .NET 2.0, mais si un principe existe dans un autre langage, je l'accueille volontiers :)

1voto

Guy Starbuck Points 14241

Un en-tête d'autorisation SOAP personnalisé est probablement le moyen le plus standard de faire cela avec .NET 2.0. cet article sur Experts Exchange, il donne une mise en œuvre très simple.

En gros, vous définissez un en-tête SOAP qui transmet le nom d'utilisateur et le mot de passe à chaque appel de service. Le service a alors accès aux informations d'identification et peut effectuer toute vérification de rôle/autorisation dont il a besoin et renvoyer la réponse appropriée. Le nom d'utilisateur et le mot de passe peuvent provenir de Windows ou être insérés au moment de l'exécution à partir de la configuration, etc. du côté client.

0voto

pdavis Points 2497

Pour notre entreprise, nous avons mis en place un service web de sécurité auquel d'autres services web se connectent afin de valider le consommateur qui les appelle. Il est basé sur le nom d'utilisateur, le mot de passe, le code d'authentification et le niveau d'accès de l'application. Le consommateur fournit toutes les informations sauf le niveau d'accès. Celui-ci est fourni par la méthode appelée elle-même. Le code d'authentification est un code sensible au temps qui est calculé par le consommateur et vérifié par le service de sécurité et qui n'est valable que pour une fenêtre de temps. Un en-tête d'autorisation SOAP personnalisé peut être utilisé pour transmettre une grande partie de ces informations ou vous pouvez les transmettre dans l'appel de la méthode.

L'accès par utilisateur d'application peut être défini sur une base par méthode ou à un niveau moins granulaire (lecture/écriture/mise à jour/suppression/tous).

Web Site (App Username, Password, Authentication Code) ---> 
   Web Service (App Username, Password, Authentication Code, Access Level) -->
      Security Web Service (Returns True/False)

J'espère que cela a un sens !

0voto

Chris Lively Points 59564

Lors de la mise en œuvre de la sécurité basée sur les rôles, j'ai constaté que vous deviez d'abord identifier les opérations qu'un utilisateur particulier pourrait effectuer. Une fois que vous les avez, vous pouvez les lier ensemble dans des rôles et les changer à volonté.

Considérez chaque appel de méthode Web comme nécessitant une ou plusieurs opérations. Chaque méthode doit accepter le nom, le mot de passe ou le jeton de l'utilisateur. La méthode fera un appel à votre base de données ou à un autre mécanisme de stockage pour déterminer si l'utilisateur identifié a bien les opérations requises qui lui sont attribuées. Ensuite, si tout est bon, exécutez le reste de la méthode.

En fait, ce n'est pas si compliqué et c'est extrêmement flexible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X