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

Services Web Discussion :

Limiter l'accès à un webservice aux utilisateurs Iphone


Sujet :

Services Web

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 109
    Points : 83
    Points
    83
    Par défaut Limiter l'accès à un webservice aux utilisateurs Iphone
    Bonjour à tous,

    J'ai développé un service WCF spécifique pour les utilisateurs possédant un Iphone.

    Ce service est malheureusement ouvert et accessible à tous, je dois donc le sécuriser et limiter son accès aux utilisateurs Iphone uniquement.

    Est il possible de faire cela ? Comment dois-je procéder ?

    Cordialement.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par LestoK Voir le message
    Est il possible de faire cela ? Comment dois-je procéder ?
    Si ton application est hébergée par un serveur web alors c'est possible. Il suffit juste de te baser sur la chaîne de caractère renvoyée par la propriété UserAgent de la requête envoyée soit HttpContext.Current.Request.UserAgent.

    Un code que j'ai testé chez moi :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Dans le gestionnaire de l'évènement BeginRequest de l'application tu as çà :
    protected void Application_BeginRequest(object sender, EventArgs e)
            {
                if (this.GetUserOs() != UserOS.IPhone)
                {
                    Response.Write("Le service n'est limité qu'aux utilisateurs d'IPhone");
                    Response.End();
                }
            }

    Le code de la méthode GetUserOS()
    Code C# : 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
     
    public UserOS GetUserOs()
            {
                string userAgent = HttpContext.Current.Request.UserAgent.ToLower();
                if (userAgent.Contains("windows phone")) return UserOS.WindowsPhone;
                else if (userAgent.Contains("win")) return UserOS.Windows;
                else if (userAgent.Contains("mac")) return UserOS.Mac;
                else if (userAgent.Contains("iphone")) return UserOS.IPhone;
                else if (userAgent.Contains("linux")) return UserOS.Linux;
                else if (userAgent.Contains("freebsd")) return UserOS.FreeBSD;
                else if (userAgent.Contains("sunos")) return UserOS.SunOS;
                else if (userAgent.Contains("trix")) return UserOS.TRIX;
                else if (userAgent.Contains("beos")) return UserOS.BeOS;
                else if (userAgent.Contains("os/2")) return UserOS.OS2;
                else if (userAgent.Contains("aix")) return UserOS.AIX;
                return UserOS.Other;
            }

    Le type enum UserOS :
    Code C# : 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
     
    public enum UserOS
        {
            Windows,
            Mac,
            IPhone,
            WindowsPhone,
            Linux,
            FreeBSD,
            SunOS,
            TRIX,
            BeOS,
            OS2,
            AIX, 
            Other
        }

    N.B : tout le code a été inséré dans le fichier Global.asax.cs. Par contre si tu veux l'utiliser et récupérer l'OS de l'utilisateur lors de chaque appel d'une fonction de ton service WCF t'as pas besoin du gérer l'évènement BeginRequest et tu dois activer le fait que WCf prenne en compte les fonctionnalités ASP.Net en mettant la valeur de l'attribut aspNetCompatibilityEnabled dans l'élément serviceHostingEnvironment de la configuration de ton service dans le web.config.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Moi j'aurais fait le contraire, j'aurais interdit le service aux utilisateurs d'iPhone



    Plus sérieusement, il faut quand même noter que ce n'est pas une protection imparable : certains navigateurs permettent de changer le UserAgent... (FireFox le permet en tous cas)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Moi j'aurais fait le contraire, j'aurais interdit le service aux utilisateurs d'iPhone
    Vu que c'est fermé on rend à Steve JOBS la monnaie de sa pièce

    Citation Envoyé par tomlev Voir le message
    Plus sérieusement, il faut quand même noter que ce n'est pas une protection imparable : certains navigateurs permettent de changer le UserAgent... (FireFox le permet en tous cas)
    je l'avais oublié ce truc.

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/09/2011, 16h07
  2. Réponses: 25
    Dernier message: 20/07/2011, 09h10
  3. Réponses: 18
    Dernier message: 13/04/2007, 12h48
  4. Réponses: 10
    Dernier message: 07/06/2006, 12h56

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