2012-03-02 13 views
0

私は、azureにデプロイされたADFSによってセキュリティ保護されたwcfサービスを持っています。私は自分のコンソールアプリケーションでそのサービスを利用することができます。しかし、私はWindowsの電話7アプリケーションでそのサービスを消費する方法がわからないとき。 私のコンソールアプリケーションでは、セキュリティトークンを取得して、そのトークンをCreateChannelWithIssuedTokenメソッドを使用してchannelfactoryオブジェクトに渡しています。しかし、Windowsの電話アプリでトークンをwcfサービスに渡す方法はありません。この問題で誰も私を導くことができますか? ありがとうございます。Windowsの電話アプリケーションでadfsによってセキュリティ保護されたwcfサービスを使用しています

答えて

0

トレーニングキット(http://www.microsoft.com/download/en/details.aspx?displaylang=en & id = 8396)ここに役立つACSAndWindowsPhone7の例があります(私はそれを見ていません詳細に)。 Wade WegnerにはACSとWP7のブログ記事がいくつかありますが、ADFSとOAuthタイプのメカニズムの違いについてはわかりません。

1

CreateChannelWithIssuedTokenは、.NET 3.5/4.0のWIFアセンブリで追加された拡張メソッドでした(.NET 4.5では、System.ServiceModel名前空間に組み込まれているものがほとんどです)。あなたは電話でそれを持っていないので、あなたはチャネルを作成し、使用するための通常のWCFメソッドに悩まされています。

これはWinForms/WPFアプリケーションで作業している場合でも同じですが、その場合はWIFアセンブリをインポートするオプションがあります。それでも、必須ではなく、ADFSで保護されたサービスを利用することは、通常のWCFクラスでは完全に実行可能です。

some caveatsでは、Windows Phoneがこのような機能をサポートしているようです。拡張メソッドの実装を見てみると、彼らは本当にすべてが空想を何もしているように、それはいないようです:

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; 
} 

確認する方法は、単にいくつかの診断を実行して、このようなエンドポイントがない場合などの例外を(スローセット)。 ChannelParameterCollectionはSystem.ServiceModel.Channelsで定義され、Silverlight/WP7でサポートされています。そしてFederatedClientCredentialsParametersは、特別なことは何もどちらかではありません:

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

あなたが私は怖いけれども、私は正確な手順を持っていない、でもWP7から、チャネルを作成し、通常はそれをあなたのトークンを使用することができるはずのように思えますそうするために。たぶん誰か他の人がやっているのかもしれません。

This記事は、SilverlightからWIFで保護されたWCFサービスにアクセスする方法を示しています。これは、あなたが電話でどのように行うのかとほぼ同じです。

関連する問題