Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1958 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Sécurité WCF

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sécurité WCF

n°2090787
snipeangel
I want to believe
Posté le 22-07-2011 à 10:06:01  profilanswer
 

Bonjour
 
Je cherche quelques sources sur le Net concernant le DUAL Authentication et la sécurité sur les WCF en général, je trouve pas mal de choses mais rien de réellement clair concernant la manière de configurer les app.config
 
Si vous avez des sources  n'hésitez pas à me poster des lien ;)
 
Merci :D


---------------
http://forum.hardware.fr/hfr/Achat [...] 0043_1.htm
mood
Publicité
Posté le 22-07-2011 à 10:06:01  profilanswer
 

n°2091755
jogrey
Posté le 27-07-2011 à 15:22:15  profilanswer
 

Sur un projet on est en https, avec un userNameCredential :
 
   <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="DomainServiceModule"/>
            <add name="DomainServiceModule" preCondition="managedHandler" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </modules>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
    <system.web>
        <httpModules>
            <!--<remove name="HttpsDomainServiceModule"/>-->
            <add name="HttpsDomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </httpModules>
        <compilation debug="true" targetFramework="4.0" />
        <customErrors mode="Off"/>
    </system.web>
 
    <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
        <behaviors>
            <serviceBehaviors>
                <behavior name="ComposanteSol_Web.SuiviVolService.ServiceBehavior">
                    <serviceMetadata httpsGetEnabled="true"/>
                    <serviceDebug includeExceptionDetailInFaults="true" />
                    <dataContractSerializer maxItemsInObjectGraph="65536000"/>
                    <serviceCredentials>
                        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="ComposanteSol_Web.SuiviVolAuthentication, ComposanteSol_Web"/>
                    </serviceCredentials>
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <bindings>
            <customBinding>
                <binding name="ComposanteSol_Web.SuiviVolService.binaryHttps" sendTimeout="00:10:00" receiveTimeout="00:10:00">
                    <transactionFlow/>
                    <!-- <reliableSession/> -->
                    <security authenticationMode="UserNameOverTransport"></security>
                    <binaryMessageEncoding>
                        <readerQuotas
                          maxDepth="1734003200"
                          maxStringContentLength="1734003200"
                          maxArrayLength="1734003200"
                          maxBytesPerRead="1734003200"
                          maxNameTableCharCount="1734003200" />
                    </binaryMessageEncoding>
                    <httpsTransport/>
                </binding>
            </customBinding>
        </bindings>
        <services>
            <service name="ComposanteSol_Web.SuiviVolService" behaviorConfiguration="ComposanteSol_Web.SuiviVolService.ServiceBehavior">
                <endpoint name="SuiviVolService" address="" binding="customBinding" bindingConfiguration="ComposanteSol_Web.SuiviVolService.binaryHttps" contract="ComposanteSol_Web.SuiviVolService" >
                </endpoint>
                <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
            </service>
        </services>
    </system.serviceModel>
 
 
Un avantage, c'est la gestion des droits en dynamique avec OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name, un inconvénient, on a pas le [AuthentificationBehavior(Droits = Droits.Consultation)] :)

n°2092159
snipeangel
I want to believe
Posté le 29-07-2011 à 16:55:29  profilanswer
 

tout d'abord je tiens à vous remercier tous les deux d'avoir pris le temps de mettre des samples
Désolé pour la réponse tardive il y a quelques temps que je n'étais pas passé sur le topoc programmation, je vais voir si je peux appliquer ce que vous m'avez donné et je reviens vous donner des news ;)
 
edit OK près lecture de votre code, j'apporte quelques précisions, tout d'abord je ne suis pas sur de l'ASP.net mais sur une appli N Tiers destinée à être hébergée sur Azure
 
@ Fred Concernant la Dual Authentication Fred le but est d'avoir un certificat coté client et un autre coté serveur, sans ces certif aucune possiblité de faire dialogué le client et le serveur, c'est cette partie que je n'arrive pas à gérer (pour le moment j'ai du mal avec les certifs) mais en fait je commence a me demander si le problème ne viendrait pas de IIS puisque mes test se font directement en locale, il faudrait que je fasse un test en situation en hébergeant un projet sur Azure.
 
@ jogrey Merci pour le code je pense que de toute façon il faudra que j'implémente un UserNameAuthentication et tu m'as déjà fourni une base sympa ;) , pour le moment la reconnaissance des certif est ma priorité puisque de toute façon mon Boss veut que nous mettions en place le WIF et je ne suis pas sure que la sécu se gère exactement de la même façon .
 
Une petite question à tous les deux, vous avez beaucoup galéré sur le sécu  et la configuration des webServices via les fichiers de config, parce que je rame à mort, quasiment aucune info sur le Web... les trois quart des infos que je trouves les gars gèrent tout en code behind
 
Si vous avez des titres de bouquin pas trop mal foutus je suis preneur (j'ais déjà "Programming WCF" et "Programming Windows Identity Foundation" mais la partie sécu est super light :/);


Message édité par snipeangel le 29-07-2011 à 17:16:14

---------------
http://forum.hardware.fr/hfr/Achat [...] 0043_1.htm
n°2096922
jogrey
Posté le 23-08-2011 à 14:15:58  profilanswer
 

Oui, côté client, je n'ai pas eu le choix de le faire en c#, pas moyen de le faire marcher avec le xml....
 
Autre chose, le changement de user credential a la volée ne marche pas, il faut éteindre et ouvrir la connexion, et ré-enregistrer les callbacks (je le fais dans un listener d'event pour chaque consommateur)
 
 
     public void setCredentials(String user, String password, String fullName)
        {
            try
            {
                this.LocalComposanteSolServiceReference.ClientCredentials.UserName.UserName = user;
                this.LocalComposanteSolServiceReference.ClientCredentials.UserName.Password = password;
            }
            catch
            {
                LocalComposanteSolServiceReference.ChannelFactory.Close();
 
                //LocalComposanteSolServiceReference = new ComposanteSolServiceReference.SuiviVolServiceClient("SuiviVolService" );
                CustomBinding customBinding = new CustomBinding();
 
                SecurityBindingElement sbe = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
                sbe.IncludeTimestamp = true;
                BinaryMessageEncodingBindingElement bmebe = new BinaryMessageEncodingBindingElement();
                HttpsTransportBindingElement htbe = new HttpsTransportBindingElement();
                htbe.MaxReceivedMessageSize = 2147483647;
                htbe.MaxBufferSize = 2147483647;
 
                customBinding.Elements.Add(sbe);
                customBinding.Elements.Add(bmebe);
                customBinding.Elements.Add(htbe);
 
                EndpointAddress address = new EndpointAddress((new Uri(Application.Current.Host.Source, "/SuiviVolService.svc" ).AbsoluteUri));
 
                LocalComposanteSolServiceReference = new ComposanteSolServiceReference.SuiviVolServiceClient(customBinding, address);
 
 
                this.LocalComposanteSolServiceReference.ClientCredentials.UserName.UserName = user;
                this.LocalComposanteSolServiceReference.ClientCredentials.UserName.Password = password;
 
                EventManager.getInstance().OnServiceStarted(new EventManager.ServiceStartedEventArgs());
            }
            finally
            {
                EventManager.getInstance().OnCredentialsChanged(new EventManager.CredentialsChangedEventArgs(user, password, fullName));
 
                if (GUEST_USER.Equals(user))
                {
                    Connected = false;
                }
                else
                {
                    Connected = true;
                }
            }
        }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Sécurité WCF

 

Sujets relatifs
Risque de sécurité ?[resolved] PDO et la sécurité
[PHP/MYSQL] Sécurité suffisante ?Sécurité pour forcer le téléchargement d'une image
Sécurité des MP sur forum phpBB ?Première application WCF
VBS Avancé // Récupérer la liste des groupes de sécurité[ACCESS] Sécurité Base de Données
sécurité formulaire 
Plus de sujets relatifs à : Sécurité WCF


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR