43 votes

WCF - Authentification Windows - Les paramètres de sécurité nécessitent une connexion anonyme.

J'ai du mal dur à obtenir du service WCF en cours d'exécution sur IIS sur notre serveur. Après le déploiement, je me retrouve avec un message d'erreur:

Paramètres de sécurité pour le service "Anonyme" de l'Authentification, mais il n'est pas activé pour l'application IIS qui héberge ce service.

Je veux utiliser l'authentification Windows et donc j'ai accès Anonyme désactivé. Notez également qu'il existe aspNetCompatibilityEnabled (si cela fait une différence).

Voici mon site web.config:

<system.serviceModel>
	<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
	<bindings>
		<webHttpBinding>
			<binding name="default">
				<security mode="TransportCredentialOnly">
					<transport clientCredentialType="Windows" proxyCredentialType="Windows"/>
				</security>
			</binding>
		</webHttpBinding>
	</bindings>
	<behaviors>
		<endpointBehaviors>
			<behavior name="AspNetAjaxBehavior">
				<enableWebScript />
				<webHttp />
			</behavior>
		</endpointBehaviors>
		<serviceBehaviors>
			<behavior name="defaultServiceBehavior">
				<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
				<serviceDebug includeExceptionDetailInFaults="true" />
				<serviceAuthorization principalPermissionMode="UseWindowsGroups" />
			</behavior>
		</serviceBehaviors>
	</behaviors>
	<services>
		<service name="xxx.Web.Services.RequestService" behaviorConfiguration="defaultServiceBehavior">
			<endpoint behaviorConfiguration="AspNetAjaxBehavior" binding="webHttpBinding"
			 contract="xxx.Web.Services.IRequestService" bindingConfiguration="default">
			</endpoint>
			<endpoint address="mex" binding="mexHttpBinding" name="mex" contract="IMetadataExchange"></endpoint>
		</service>
	</services>
</system.serviceModel>

J'ai cherché partout sur internet avec pas de chance. Des indices sont grandement appréciés.

41voto

Rashack Points 3344

Cela semble donc être un problème assez courant. Le but est de supprimer mex de vos liaisons:

 <endpoint address="mex" binding="mexHttpBinding" name="mex" contract="IMetadataExchange"></endpoint>
 

Alternativement, vous activez l'accès anonyme dans IIS et dans votre web.config, vous vous assurez que l'accès anonyme est refusé.

J'espère que cela aidera à une autre âme. (J'étais sûr à 100% de l'avoir essayé sans le mex.: -O)

14voto

Padel Points 1277

Vous pouvez vérifier celui- ci . J'ai réussi à le faire fonctionner comme prévu.

 <configuration>
  ...
  <system.serviceModel>
    ...
    <bindings>
      <basicHttpBinding>
        <binding>
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    ...
  </system.serviceModel>
  ...
</configuration>
 

11voto

sandyiit Points 798

utilisez simplement vos liaisons de service pour mex aussi.

Alors changez votre configuration actuelle:

 <endpoint address="mex" binding="mexHttpBinding" name="mex" contract="IMetadataExchange"></endpoint>
 

à

 <endpoint address="mex" binding="webHttpBinding" bindingConfiguration="default" name="mex" contract="IMetadataExchange"></endpoint>
 

Cela devrait résoudre le problème

3voto

Atte Points 11

L'authentification anonyme peuvent, et dans certains cas doit être activé pour le service, mais pas pour le site.

Vérifiez donc que votre site est "root" l'authentification a uniquement l'Authentification Windows est activé. Ensuite, développez votre site, sélectionnez "service" dossier et assurez-vous que votre service a Windows et l'Authentification Anonyme est activée.

J'ai eu l'identique de l'environnement où il a travaillé, la seule différence dans ces environnements est le service d'authentification. Problème dans mon cas n'était pas dû être sélectionné fournisseurs (Ntlm ou Négocier), mais les paramètres d'authentification pour le site et le service.

Au moins, j'avais identiques message d'erreur avec MSSQL base de Données Master data Services du site web et du service et c'était la solution. J'ai fait l'erreur lors de l'exécution seulement le service, mais le site a fonctionné presque ok, DMS Explorer ne fonctionne pas parce que le service de l'paramètres d'authentification ont été mauvais au premier abord. La Cause de cette miss-configuration peut-être un bug dans les SMD Gestionnaire de Configuration lors de la création de nouveaux MDS site?

Donc, dans mon cas, le problème était de ne pas être résolu en faisant une édition spéciale pour le web.config ni la ApplicationHost.les fichiers de configuration, je ne fais pas de modification des fichiers de configuration. Juste à sélectionner le bon paramètres d'authentification du site web et du service dans le gestionnaire des services IIS. Je ne suis pas sûr que ce soit le cas ici, mais peut-être la peine d'essayer?

1voto

Sagar S. Points 18

Cela a fonctionné pour moi lorsque j'ai supprimé le point de terminaison 'mex' et que j'ai également défini clientCredentialType = 'Ntlm', j'hébergeais mon WCF dans SharePoint.

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