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

Web & réseau Delphi Discussion :

en tête Authorization dans un web service


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut en tête Authorization dans un web service
    Bonjour,

    Je suie en train de mettre en place un Web Service de type REST full. J'ai des connaisance minimal en ce qui concerne le protocole HTTP 1.1 pourriez vous m'éclairer sur ces points:

    J'ai prévu de mettre des éléments d'identification a chaque requête dans l'en tête Authorization

    en fait je compte données au client un login/password encoder en base64 du type :
    cbzJJMDAwMDAwMDJtUGsyUDEwMDBQbWw5
    y a t'il une longueur maximale de caractères a mettre dans cette en-tête?

    Par ailleurs j'ai vu qu'il existait 2 méthodes d'authentification Basic et Digest (http://fr.wikipedia.org/wiki/HTTP_Authentification). A priori c'est la méthode basic que je vais employé mais

    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
    Mais je me demandais est ce qu'il faut obligatoirement que le mot "Basic" soit ecrite dans l'en tête et si oui pourquoi?

    Merci de votre réponse

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par défaut
    Pour ma part, j'ai aussi utilisé "Authorization: Basic", je pense que le mot clé Basic lui permet de savoir ce qu'il y aura ensuite ... j'aurais aussi tendance à dire qu'il est obligatoire ...

    Sinon, tu utilise les Invokable\Remotable de Delphi généré à partir d'un WSDL ? ou tu vas tout faire à la main car ceci peut être à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TFrm_Test_WS.HTTPReqResp_WSBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);
    var
      s: string;
    begin
      s := 'Authorization: Basic ' + EncodeLoginPW(HTTPReqResp.UserName, HTTPReqResp.Password);
      HttpAddRequestHeaders(Data, PChar(s), Length(s), HTTP_ADDREQ_FLAG_ADD);
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function TFrm_Test_WS.EncodeLoginPW(const ALogin, APW: string): string;
    begin
      Result := EncdDecd.EncodeString(ALogin + ':' + APW);
    end;
    EncdDecd.EncodeString est en standard dans Delphi 7, bien caché mais disponible !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 737
    Par défaut
    j'ai sous Delphi 2010 le même problème

    j'ai donc :
    - importer mon wsdl
    - poser un composant THTTPRIO
    - lancer mon web service

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      wsMCMS := GetMCMSPortType(False, edtURL.Text, HTTPRIO1);
    - implémenter le beforepost de mon webnode qui est bien appeler comme tu l'as dit (je passe bien par l'évènement)

    Mais j'ai toujours un beau message Authentication required

    Y a t'il une feinte ?

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par défaut
    C'est suprenant qu'en Delphi 2010 cela ne soit pas mieux qu'en D7 !

    Ton serveur attend bien juste une Authentication basique, pas de certificat ou autre ?

    par contre, GetMCMSPortType ne fait que créer l'interface, tu ne lance pas encore le webservice, c'est au moment d'apper une méthode de l'objet invokable récupéré que tu lance vraiment la requête
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 737
    Par défaut
    je ne plante pas quand je fais le GetMCMSPortType mais quand je lance une methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if wsMCMS.singleSms('', edtSMS.Text, mmText.Lines.Text, -1,-1,0) then
        ShowMessage('Oui')
      else
        ShowMessage('Non')

Discussions similaires

  1. methode a differentes signatures dans un web service
    Par afrold dans le forum Services Web
    Réponses: 6
    Dernier message: 14/08/2008, 17h54
  2. authentification dans un web service
    Par sophiesophie dans le forum Services Web
    Réponses: 2
    Dernier message: 08/08/2008, 08h37
  3. Session dans les web services
    Par casper_mc dans le forum Services Web
    Réponses: 1
    Dernier message: 27/06/2008, 21h46
  4. probleme dans mon web service
    Par am@123 dans le forum Services Web
    Réponses: 2
    Dernier message: 06/05/2007, 19h31
  5. [C#2.0] Comment rendre obligatoire un element dans un Web Service
    Par cosmos38240 dans le forum Services Web
    Réponses: 1
    Dernier message: 02/03/2007, 16h27

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