CreateChannelWithIssuedToken
был методом расширения, добавленным сборкой WIF в .NET 3.5 / 4.0 (я полагаю, что .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, хотя, боюсь, я этого не делаюесть точные шаги, чтобы сделать это.Может быть, кто-то другой делает, или, может быть, это ведет вас в правильном направлении.
В этой статье показано, как получить доступ к WIF-службе WCF, защищенной WIF, из Silverlight, которая, как мне кажется, практически идентичнасделал бы это по телефону.