Comment désactiver les systèmes d'authentification pour WCF Data Services
-
23-09-2019 - |
Question
Quand je me déployé WCF Data Services à la production d'hébergement j'ai commencé à obtenir l'erreur suivante (ou similaires, selon lesquelles les régimes d'auth sont actifs):
IIS systèmes d'authentification spécifiés 'Basic, Anonymous', mais la liaison ne supporte que la spécification d'exactement un système d'authentification. Valide systèmes d'authentification sont Digest, Negotiate, NTLM, Basic ou Anonymous. Modifiez les paramètres IIS de sorte que seule une système d'authentification unique est utilisé.
Apparemment WCF Data Services (WCF en général?) Ne peut pas gérer avoir plus d'une fois schéma d'authentification actif.
OK, donc je suis conscient que je peux désactiver tout-mais-un système d'authentification sur l'application Web via le panneau de commande IIS .... via une demande d'assistance !!
Y at-il un moyen de spécifier un système d'authentification unique sur un niveau par service dans le web.config?
Je pensais que cela pourrait être aussi simple que de faire un changement à <system.serviceModel>
mais ... il se trouve que WCF Data Services ne se configure pas dans la configuration web . Si vous regardez la classe DataService<>
il ne met pas en œuvre un [ServiceContract]
donc vous ne pouvez pas y faire référence dans le <service><endpoint>
... que je suppose serait nécessaire pour changer sa configuration via XML.
P.S. Notre hôte utilise II6, mais les deux solutions pour IIS6 et IIS7 apprécié.
La solution
Tout d'abord, il est possible de configurer les services de données sur le fichier de configuration Web. Le contrat utilisé par le DataService est appelé System.Data.Services.IRequestHandler.
Voici ce que vous pouvez faire dans le fichier de configuration Web pour configurent il.
Sur l'étiquette de service de l'élément System.ServiceModel ajouter le
<service name="{you service type name including the namespace i.e. myapplication.myservice}">
<endpoint address="" binding="webHttpBinding" contract="System.Data.Services.IRequestHandler">
</endpoint>
</service>
Une fois que vous avez que vous pouvez commencer à configurer toutes sortes de chose en utilisant les éléments de configuration standard WCF.
En second lieu pour activer ou méthodes d'authentification désactivées pour un service spécifique dans IIS, vous pouvez faire ce qui suit:
Sur le composant logiciel enfichable dans IIS clic droit votre fichier de service (à savoir yourservice.svc) et cliquez sur Propriétés. Une fois dans les propriétés allez dans Fichier onglet Sécurité et a choisi le bouton Modifier dans la zone de groupe authentification et le contrôle d'accès. après qu'il est tout comme la mise en place de la sécurité du répertoire dans IIS.
En tant que dernière suggestion selon des tirs de la difficulté à se il est important de permettre aux WCF disgnostics pendant que vous configurent à l'aide de la configuration xml, en cours d'écriture dans WCF, Service d'enregistrement des données est aussi par WCF est riche et très instructif.
vous pouvez en savoir plus à ce sujet sur WCF Administration et Diagnostics
J'espère que je suis en mesure de vous aider avec votre problème
laissez-moi savoir comment les choses se passe.
Cordialement
Daniel Portella
Mise à jour:
Salut Schneider
Pour spécifier le schéma d'authentification dans le fichier XML lire ci-dessous
Pour l'authentification Windows comme exemple
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="MyBindingName" >
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="{you service type name including the namespace i.e. myapplication.myservice}">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="MyBindingName" contract="System.Data.Services.IRequestHandler">
</endpoint>
</service>
</services>
</system.serviceModel>
</configuration>
Pour les autres types d'authentification s'il vous plaît vérifier la bibliothèque MSDN pour des exemples