2011-03-17 3 views
2

J'ai épuisé mes efforts pour trouver des informations utiles sur l'interface IAuthorizeRemotingConnection en ce qui concerne .NET Remoting, et je ne trouve vraiment rien d'utile.IAuthorizeRemotingConnection .NET Remoting

Le problème ici n'est pas vraiment un "how-to" car il existe de nombreux exemples, mais le problème est celui de la façon dont les identités se rapportent les unes aux autres dans la méthode IsConnectingIdentityAuthorized.

Nous avons un service .NET Remoting en cours d'exécution et avons récemment ajouté l'interface IAuthorizeRemotingConnection à une classe qui est ensuite utilisée par le service d'accès distant pour valider les identifications. Le problème que j'ai est "quelles identités" valons-nous?

Je peux enregistrer l'identité telle qu'elle est transmise dans la méthode IAuthorizeRemotingConnection lorsqu'elle est transmise sur mon système local. Je peux dire que l'identité est l'utilisateur MACHINE \ ASPNET. Cependant, dans notre serveur de développement, où nous hébergeons le service contre un autre serveur de développement, je ne vois pas l'identité. Basiquement, tandis que la méthode IsConnectingEndPointAuthorized est appelée par le service d'accès distant, et je peux me connecter que cela se produit, je ne vois jamais que le IsConnectingIdentityAuthorized est appelé.

Ceci est très étrange car si j'utilise la même base de code exacte pour mon système local, cela fonctionne différemment dans le dev environnement. La chose la plus frustrante à ce sujet est que je ne peux pas dire quelle identité essaie d'utiliser le service et même alors, je ne peux même pas voir que la méthode utilisée pour vérifier l'identité est appelée du tout.

Je vois une exception se produire avec un message «connexion refusée» dans le journal de l'application Web. Je me demande si nous sommes en train de «pré-authentifier» d'une manière ou d'une autre dans les coulisses, et cela échoue, donc nous ne parvenons même pas à appeler la méthode IsConnectingIdentityAuthorized.

Quelqu'un a une expérience avec ce qu'ils peuvent partager?

Avant d'ajouter, le service « utiliser un WCF », je am planification pour aller de cette façon, mais ce sera encore un moment avant que soit entièrement mis en œuvre. J'ai aussi des questions d'identité authentifiées concernant la WCF. Cependant, j'adorerais être capable de régler ce problème à distance aussi.

+0

Pouvez-vous signaler l'exception complète avec un message "login denied"? – tobsen

Répondre

0

Je suis tombé sur quelque chose le long de ces lignes lorsque j'obtiens des objets à distance fonctionnant sous SSL. Nous avions besoin de résoudre Trust Issues (caspol à donner votre site FullTrust) et puisque tous les composants utilisés étaient nom fort, il fallait cesser d'utiliser les versions d'assemblage générées

[assembly: AssemblyVersion("7.3.*")] 

et au lieu de se assurer qu'ils ont été fixés

[assembly: AssemblyVersion("7.3.1.1")] 

- ceci a semblé rendre la fusion beaucoup moins confuse. A part cela, l'utilisateur AppPool sur le serveur de développement a-t-il des privilèges, ou devez-vous vous assurer que vous utilisez le même utilisateur via la connexion? Le MACHINE \ ASPNET sur votre appelant aura un jeton de sécurité différent de celui de votre serveur, donc vous voudrez peut-être vous authentifier sous un utilisateur de domaine? Voir ceci pour une image complète et quelques idées: http://msdn.microsoft.com/en-us/library/ff649264.aspx