AzureにデプロイされたADFSによって保護されたwcfサービスがあります。コンソール アプリケーションでそのサービスを利用できます。しかし、Windows Phone 7 アプリケーションでそのサービスを利用する方法がわからない場合。私のコンソール アプリケーションでは、セキュリティ トークンを取得し、そのトークンを CreateChannelWithIssuedToken メソッドを使用して channelfactory オブジェクトに渡しています。しかし、Windows Phone アプリにはトークンを wcf サービスに渡す方法はありません。誰でもこの問題で私を導くことができますか? 前もって感謝します。
2 に答える
CreateChannelWithIssuedToken
.NET 3.5/4.0 の WIF アセンブリによって追加された拡張メソッドでした (.NET 4.5 では、これらのほとんどが System.ServiceModel 名前空間に組み込まれていると思います)。電話にはこれがないため、通常の WCF メソッドを使用してチャネルを作成および使用することになります。
これは、WinForms/WPF アプリで作業する場合にも当てはまりますが、その場合、WIF アセンブリを取り込むオプションがあります。それでも、必須ではなく、ADFS で保護されたサービスを使用することは、通常の WCF クラスで完全に実行できます。
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;
}
verify メソッドは単にいくつかの診断を実行し、例外をスローします (エンドポイントが設定されていない場合など)。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からでも、チャネルを作成してトークンを通常どおり使用できるように思われますが、そうするための正確な手順はありません. 他の誰かがそうしているかもしれませんし、これがあなたを正しい方向に導いているかもしれません。
この記事では、Silverlight から WIF で保護された WCF サービスにアクセスする方法を示します。これは、電話で行う方法とほとんど同じだと思います。
ここで役立つトレーニング キット (http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8396) ACSAndWindowsPhone7 の例があります (詳しくは見ていません)。Wade Wegner が ACS と WP7 に関する多数のブログ投稿を行っていることは知っていますが、彼が特に ADFS と OAuth タイプのメカニズムに取り組んでいるかどうかはわかりません。