Rendre Service Wcf IntegratedWindowsAuthentication
Je m obtenir l'erreur suivante quand j'ai fait l'Authentification Windows activer et anonyme pour les handicapés dans les services internet.
Les schémas d'authentification configurée sur l'ordinateur hôte
('IntegratedWindowsAuthentication') ne permettent pas à ceux configurés sur
la liaison "BasicHttpBinding' ("Anonyme"). Veuillez vous assurer que l'
SecurityMode est définie pour le Transport ou l'TransportCredentialOnly.
En outre, cela peut être résolu par la modification de l'authentification
les régimes pour cette application par le biais de l'outil de gestion IIS, par le biais de
le ServiceHost.L'authentification.AuthenticationSchemes de la propriété, dans le
fichier de configuration d'application à l'
élément, par la mise à jour de la ClientCredentialType bien sur la
contraignante, ou en ajustant la AuthenticationScheme bien sur la
HttpTransportBindingElement.
Mon Service Wcf du web.la config est comme suit...
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpEndpointBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint binding="basicHttpBinding"
bindingConfiguration="BasicHttpEndpointBinding"
contract="Test.IService1" name="BasicHttpEndpoint" />
</client>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceAuthenticationManager
authenticationSchemes="IntegratedWindowsAuthentication"/>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpBinding" scheme="http" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
S'il vous plaît conseils..
- Vous n'avez pas de poste de votre site web.config...
- De son prêt maintenant. s'il vous plaît conseils.
- Je ne vois pas une définition de service, dans votre config, juste un client. Si c'est votre service de fichier de configuration et que vous êtes en utilisant .NET 4.0+, les chances sont que vous aurez un point de terminaison par défaut, qui peuvent ne pas avoir la sécurité de l'ensemble correctement. Vous devez affecter la liaison que vous créez dans votre fichier de configuration à votre service.
- Merci. Maintenant son Erreur. Mais comment éviter l'authentification .moyens pour éviter de demander à un nom d'utilisateur et le mot de passe lorsque vous y accédez au service via IIS. S'il vous plaît aider.
- Si l'utilisateur est le même que la machine de connexion de l'utilisateur, alors s'il vous plaît recommander un moyen d'éviter cette authentification lors de l'exploration d'un Service Wcf via IIS.
- Je ne pense pas que vous pouvez éviter le nom d'utilisateur/mot de passe lors de la navigation sur le service. Vous pouvez supprimer les paramètres de sécurité du service, mais alors vous ne serait pas en sécurité lorsque des clients se connectent.
- Je veux dire, j'ai juste besoin d'une deuxième couche de sécurité. si l'utilisateur est le même que celui qui est actuellement connecté, alors il n'aurait pas demandé pour l'authentification. Sinon, demandez pour l'authentification dans le cadre de la Deuxième couche de sécurité. veuillez voir mon nouveau fil de discussion aussi. stackoverflow.com/questions/15289066/...
Vous devez vous connecter pour publier un commentaire.
Dans .Net 4.0+, Simplifiée de configuration WCF utilise le "anonyme" configurations les configurations ne sont pas explicitement définies par les services de base dans le <services> section. Si vous supprimez le nom="BasicHttpEndpointBinding" de la <liaison> élément, ou si vous dupliquez que <la liaison> élément comme un élément nouveau n'ayant pas de nom d'attribut, il devient la valeur par défaut, anonyme de liaison que vos services WCF va utiliser. C'est souvent utile dans le cas où vous avez besoin de servir, ainsi que de consommer des services WCF qui peuvent ne pas avoir la même config - mais au moins, vous pouvez définir une configuration par défaut pour les services qui n'ont pas de configuration spécifique ensemble. La valeur par défaut/anonyme concept est également applicable aux <comportement> éléments de.
Aussi, je pourrais ajouter que si vos services WCF exiger l'authentification, cela signifie que vous aurez besoin pour utiliser le service à l'aide d'un compte réel, ou vous devrez accorder le DOMAINE\CLIENTCOMPUTERNAME$ compte d'accès au service - alors, peut-être la bonne solution pour de nombreuses personnes, peut-être de modifier la configuration pour permettre l'accès anonyme (qui n'est pas abordé dans ma réponse). Encore, je n'ai parfois fait élire pour sécuriser mes services WCF avec Windows (Kerberos) d'authentification.
Ajoutant que cela a fonctionné pour moi.
J'ai eu cette erreur lors de la mise à jour depuis .NET 4.0 .NET 4.5.2. J'ai changé le clientCredentialType de
à
Cependant, la mise en clientCredentialType="Windows" fonctionne aussi bien.
Il a résolu mon problème.
Comme les autres réponses, j'ai besoin de mettre à jour la liaison dans mon Web.config pour cela:
Mais j'ai aussi besoin de mettre à jour mon de liaison de l'instanciation:
J'ai dû ajouter un webHttpBinding et point de mon point de terminaison pour que les paramètres de sécurité requis. Sans que mon point de terminaison utilisée par défaut WCF config de touches:
Je ne suis pas entièrement sûr de savoir pourquoi, mais quand j'ai ajouté le "Factory" attribut mon .SVC fichier (vous devez explicitement faites-le glisser vers Visual Studio), tout juste œuvres - sans aucune modification des paramètres par défaut dans le Web.config!
J'ai ajouté Factory="le Système de.ServiceModel.L'Activation.WebServiceHostFactory" donc mon .SVC fichier passé de ceci:
<%@ ServiceHost Language="C#" Debug="true" Service="ServiceNameSpace.ServiceName" CodeBehind="ServiceName.svc.cs" %>
à ceci:
<%@ ServiceHost Language="C#" Debug="true" Service="ServiceNameSpace.ServiceName" CodeBehind="ServiceName.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
Le seul effet secondaire qui semble être que lorsque vous cliquez sur le .SVC fichier dans le navigateur, vous obtenez un " point de Terminaison ne trouve pas d'erreur, mais le service fonctionne correctement lorsque vous l'appelez correctement de toute façon. Comme mentionné précédemment, je suis en utilisant un site Web par défaut.config avec .NET 4.6 (Simplifié de configuration WCF), donc j'ai peut-être besoin d'ajouter de point de terminaison de détails pour que cela fonctionne de nouveau.
J'ai eu le même problème lors de la consommation déjà existant WCF URL de site web.
J'ai essayé toutes les réponses mentionnées ici , mais dans l'ensemble, enfin, que deux choses qui m'ont aidé.