IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

VB.NET : s'authentifier sur un webserice ws-security


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Points : 36
    Points
    36
    Par défaut VB.NET : s'authentifier sur un webserice ws-security
    Bonjour,

    j'ai écumé le net pour comprendre comment s'authentifier sur un webservice ws-security, mais en vain! quelqu'un pourrait-il m'expliquer svp ?

    Un grand merci !

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Dim service As New LeWebService.WebServiceSystemeUImplService 
    Dim enregistrementOK As New LeWebService.PlanificationResponse
    Dim monTableau(5) As LeWebservice.PlanificationType
     
    '[....]
     
     
     
    'on appel le WS
    service.Credentials = New System.Net.NetworkCredential("LOGIN","PWD")
    enregistrementOK = service.planificationProcess (monTableau)
    et j'ai un message d'erreur du style

    System.Web.Services.Protocols.SoapHeaderException: These policy alternatives can not be satisfied:
    {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}SupportingTokens
    {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}UsernameToken

    at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
    at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    Voici ce que j'ai fait ce matin :

    1)

    j'ai renommé la proxy class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Class Service1
      Inherits Microsoft.Web.Services3.WebServicesClientProtocol
    End Class
    2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim service As New LeWebService.WebServiceSystemeUImplService 
    Dim enregistrementOK As New LeWebService.PlanificationResponse
    Dim monTableau(5) As LeWebservice.PlanificationType
     
    '[....]
     
    Dim user As Microsoft.Web.Services3.Security.Tokens.UsernameToken
    user = New Microsoft.Web.Services3.Security.Tokens.UsernameToken("LOGIN","PWD")
    Dim serviceProxy As New Service1()
    Dim requestContext As SoapContext = serviceProxy.RequestSoapContext
    requestContext.Security.Timestamp.TtlInSeconds = 60
    requestContext.Security.Tokens.Add(user)
     
    'on appel le WS
    enregistrementOK = service.planificationProcess (monTableau)
    Mon message d'erreur est le suivant "webservicebindingattribute is required on proxy classes"

    Savez vous quel est le pb ?

    merci.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je ne suis pas un expert dans ce domaine, dans un autre projet, j'ai pourtant dû passer par là. Je te met un bout de mon code dans ce que j'avais fait, en espérant que cela résoudra ton problème:

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
            Dim userName As String = 'xxxxxx'
            Dim pwd As String = 'xxxxxx'
     
            System.Net.ServicePointManager.UseNagleAlgorithm = True
            System.Net.ServicePointManager.Expect100Continue = False
            System.Net.ServicePointManager.CheckCertificateRevocationList = True
     
            Dim ws As New Production.billServiceClient
     
            ws.ClientCredentials.CreateSecurityTokenManager()
            ws.ClientCredentials.UserName.UserName = userName
            ws.ClientCredentials.UserName.Password = pwd
     
            ws.Open()
            'ton code
            ws.close()

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    merci pour ton retour. Je ne suis pas non plus un spécialiste dans ce domaine. J'ai testé ton bout de code mais je n'ai pas accès à ClientCredentials sur mon service

  5. #5
    Invité
    Invité(e)
    Par défaut
    N'ayant pas le service sous les yeux, je ne saurais quoi dire de plus...

    En faisant
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim serviceProxy As New Service1()

    Tu as quoi comme propriété / méthode?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    En fait j'ai du mal à comprendre à quoi correspond

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Class Service1
      Inherits Microsoft.Web.Services3.WebServicesClientProtocol
    End Class
     
     
    Dim serviceProxy As New Service1()
    donc d'une part j'ai serviceProxy, et d'autre part j'ai service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim service As New LeWebService.WebServiceSystemeUImplService
    quelle est la différence?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    mon message d'erreur est webservicebindingattribute is required on proxy classes

    savez-vous ce que j'ai oublié de faire ?

    merci!

  8. #8
    Invité
    Invité(e)
    Par défaut
    quand tu fais appel à un webservice, il faut que ton fichier app.config soit correctement écris, tu pourrais afficher son contenu?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    Excuse moi mais où se trouve ce fichier ? je développe (rarement) sur SharpDevelop en VB.NET

    Voici l'arbo de mon projet:

    Nom : 321963Capture.jpg
Affichages : 587
Taille : 47,5 Ko

  10. #10
    Invité
    Invité(e)
    Par défaut
    ce n'est pas dans la partie "projects" mais dans "explorateur de solutions", tu peux y accéder depuis l'onglet Affichage

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    voici ce que j'ai pu trouver:

    http://we.tl/oStD6GYytE

    est-ce que c'est bien cela ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    non, ce n'est pas ça, regarde l'image ci-joint
    Images attachées Images attachées  

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    désolé, le temps d'installer VISUAL STUDIO 2013 ça a pris une éternité!

    bon la bonne blague, j'ai chargé mon projet développé sur SharDevelop et il n'y a pas de app.config

    je recrée un projet sur visual c'est peut-être le mieux

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    bon je n'aurais jamais autant galéré pour un dev ! pourtant j'en suis sûr que c'est tout simple !

    voici où j'en suis :

    sous visual j'ai refait mon projet, et j'essaye toujours de m'inspirer de la MSDN (http://msdn.microsoft.com/en-us/library/ms819938.aspx) en utilisant Services3

    après avoir importé ma reference web, le code générique a été crée par par Microsoft.VSDesigner et j'ai tenté d'y mettre le renommage de la proxy class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Namespace monServiceWeb
        
        'CODEGEN: L'élément d'extension WSDL facultatif 'PolicyReference' à partir de l'espace de noms 'http://www.w3.org/ns/ws-policy' n'est pas géré.
        '''<remarks/>
        Public Class Service1
            Inherits Microsoft.Web.Services3.WebServicesClientProtocol
        End Class 'BON OU PAS BON?
        <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.18408"),  _
         System.Diagnostics.DebuggerStepThroughAttribute(),  _
         System.ComponentModel.DesignerCategoryAttribute("code"),  _
         System.Web.Services.WebServiceBindingAttribute(Name:="WebServiceSystemeUImplServiceSoapBinding", [Namespace]:="https://adressedusite.com/")>  _
    
        Partial Public Class WebServiceSystemeUImplService
            Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
    
            Private planificationProcessOperationCompleted As System.Threading.SendOrPostCallback
    
            Private getVersionOperationCompleted As System.Threading.SendOrPostCallback
    
            Private useDefaultCredentialsSetExplicitly As Boolean
    
            '''<remarks/>
            Public Sub New()
                MyBase.New()
                Me.Url = Global.MonProjet.My.MySettings.Default.MonProjet_monServiceWeb_WebServiceSystemeUImplService
                If (Me.IsLocalFileSystemWebService(Me.Url) = True) Then
                    Me.UseDefaultCredentials = True
                    Me.useDefaultCredentialsSetExplicitly = False
                Else
                    Me.useDefaultCredentialsSetExplicitly = True
                End If
    
    '.......
    '..........
    puis ensuite dans une fonction, je fais ma routine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
            Dim userToken As Microsoft.Web.Services3.Security.Tokens.UsernameToken
            userToken = New Microsoft.Web.Services3.Security.Tokens.UsernameToken("LOGIN", "PWD")
            Dim service As New monServiceWeb.WebServiceSystemeUImplService
            Dim enregistrementOK As monServiceWeb.PlanificationResponse
    
            Dim uService As Service1 'OK OU PAS OK?
    
            ' Gets the SoapContext associated with the SOAP request.
            Dim requestContext As Microsoft.Web.Services3.SoapContext = uService.RequestSoapContext
            ' Sets the TTL to one minute.
            requestContext.Security.Timestamp.TtlInSeconds = 60
    
            ' Adds the token to the SOAP header.
            requestContext.Security.Tokens.Add(userToken)
    Ensuite moi je voudrais accéder aux méthodes du webservice en utilisant uService mais je n'ai rien d'intéressant.

    Any ideas ?

    merci!!

  15. #15
    Invité
    Invité(e)
    Par défaut
    à un moment donné, j'avais aussi des questions à poser concernant l'enveloppe SOAP dans mon projet et on m'a dit que sous visual studio, c'était obsolète.
    Si tu veux voir la liste des méthodes de ton instance, tu as simplement à mettre un point après le nom de ton objet, l'intellisense fait le travail pour toi, tu as par ailleurs des informations au sujet des paramètres à mettre dans ta méthode, mais surtout, un projet en .NET a toujours besoin d'un fichier app.config, il se trouve sinon au même niveau que ton dossier bin de ton projet.

Discussions similaires

  1. [VB.net] Bug submit sur champ de saisie
    Par addicts dans le forum ASP.NET
    Réponses: 8
    Dernier message: 12/07/2006, 10h57
  2. détected si .net est present sur la machine
    Par calfater dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 08/09/2005, 22h11
  3. [VB.NET] Erreur OnMouseUp sur Datagrid
    Par daner06 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/01/2005, 10h26
  4. [VB.NET] Connexion distante sur serveur UNIX
    Par Toftof dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/06/2004, 17h18
  5. [VB.NET] Instanciation objet (sur class perso.)
    Par DaxTaz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/05/2004, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo