2012-03-02 1 views
0

J'ai un service wcf sécurisé par ADFS déployé dans azure. Je suis capable de consommer ce service dans mon application console. Mais quand je ne suis pas sûr de savoir comment consommer ce service dans Windows Phone 7 application. Dans mon application de console, je récupère un jeton de sécurité et passe ce jeton à l'objet channelfactory à l'aide de la méthode CreateChannelWithIssuedToken. Mais il n'y a pas une telle méthode dans l'application Windows Phone pour passer le jeton au service wcf. Quelqu'un peut-il me guider dans ce problème? Merci d'avance.Utilisation du service wcf sécurisé par adfs dans l'application Windows Phone

Répondre

0

Il existe un kit de formation (http://www.microsoft.com/download/fr/details.aspx?displaylang=fr & id = 8396) exemple ACSAndWindowsPhone7 qui peut aider ici (je ne l'ai pas regardé en détail). Je sais que Wade Wegner a un certain nombre de billets de blog sur ACS et WP7, mais je ne sais pas s'il a abordé ADFS spécifiquement par rapport aux mécanismes de type OAuth.

1

CreateChannelWithIssuedToken était une méthode d'extension ajoutée par l'assembly WIF dans .NET 3.5/4.0 (je crois que .NET 4.5 a intégré la plupart de ces éléments à l'espace de noms System.ServiceModel). Puisque vous ne l'aurez pas au téléphone, vous êtes bloqué avec les méthodes habituelles de la WCF pour créer et utiliser des canaux.

C'est toujours le cas lorsque vous travaillez sur des applications WinForms/WPF, bien que dans ce cas, vous ayez la possibilité d'intégrer l'assembly WIF. Pourtant, ce n'est pas obligatoire, et consommer un service sécurisé ADFS est parfaitement faisable avec les classes WCF habituelles.

Windows Phone semble prendre en charge cette fonctionnalité, mais avec some caveats. En regardant la mise en œuvre de la méthode d'extension, il ne semble pas comme ils font quoi que ce soit tout ce que la fantaisie vraiment:

public static T CreateChannelWithIssuedToken<T>(this ChannelFactory<T> factory, SecurityToken issuedToken) 
{ 
    return ChannelFactoryOperations.CreateChannelWithParameters<T>(factory, new FederatedClientCredentialsParameters 
    { 
     IssuedSecurityToken = issuedToken 
    }); 
} 

public static T CreateChannelWithParameters<T>(ChannelFactory<T> factory, FederatedClientCredentialsParameters parameters) 
{ 
    ChannelFactoryOperations.VerifyChannelFactory<T>(factory); 
    T t = factory.CreateChannel(); 
    ((IChannel)t).GetProperty<ChannelParameterCollection>().Add(parameters); 
    return t; 
} 

La méthode verify effectue simplement des diagnostics et jette des exceptions (comme si le point final n'est pas ensemble). ChannelParameterCollection est défini dans System.ServiceModel.Channels et est pris en charge dans Silverlight/WP7. Et FederatedClientCredentialsParameters est rien de spécial:

public class FederatedClientCredentialsParameters 
{ 
    public SecurityToken ActAs (get; set;) 
    public SecurityToken OnBehalfOf (get; set;) 
    public SecurityToken IssuedSecurityToken (get; set;) 
} 

Il semble que vous devriez être en mesure de créer un canal et d'utiliser votre jeton normalement, même de WP7, mais je crains que je n'ai pas les étapes exactes faire cela. Peut-être que quelqu'un d'autre le fait ou peut-être que cela vous mène dans la bonne direction. Article montre comment accéder à un service WCF WIF-protégé de Silverlight, que j'imagine est presque identique à la façon dont vous le feriez au téléphone.

Questions connexes