【问题标题】:consuming wcf service secured by adfs in windows phone application在 Windows Phone 应用程序中使用由 adfs 保护的 wcf 服务
【发布时间】:2012-03-02 12:17:05
【问题描述】:

我有一个由部署在 Azure 中的 ADFS 保护的 wcf 服务。我可以在我的控制台应用程序中使用该服务。但是当我不确定如何在 windows phone 7 应用程序中使用该服务时。 在我的控制台应用程序中,我正在检索一个安全令牌并使用 CreateChannelWithIssuedToken 方法将该令牌传递给 channelfactory 对象。但是在 windows phone 应用程序中没有这种方法可以将令牌传递给 wcf 服务。谁能指导我解决这个问题? 提前致谢。

【问题讨论】:

    标签: wcf adfs


    【解决方案1】:

    CreateChannelWithIssuedToken 是 WIF 程序集在 .NET 3.5/4.0 中添加的扩展方法(我相信 .NET 4.5 中的大部分内容现在已内置到 System.ServiceModel 命名空间中)。由于您不会在手机上使用此功能,因此您只能使用常规的 WCF 方法来创建和使用频道。

    在处理 WinForms/WPF 应用程序时仍然是这种情况,但在这种情况下,您可以选择引入 WIF 程序集。不过,这不是必需的,并且使用常规 WCF 类完全可以使用 ADFS 保护的服务。

    Windows Phone 似乎支持这个东西,虽然有some caveats。查看扩展方法的实现,他们似乎并没有真正做任何花哨的事情:

    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 开始,但恐怕我没有这样做的确切步骤。也许其他人会这样做,或者这可能会引导您朝着正确的方向前进。

    This 文章展示了如何从 Silverlight 访问受 WIF 保护的 WCF 服务,我想这与您在手机上的操作几乎相同。

    【讨论】:

      【解决方案2】:

      有一个培训工具包 (http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8396) 示例 ACSAndWindowsPhone7 可能对这里有所帮助(我没有详细查看) .我知道 Wade Wegner 有许多关于 ACS 和 WP7 的博客文章,但不确定他是否专门针对 ADFS 和 OAuth 类型机制进行了处理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2012-09-30
        • 1970-01-01
        • 2013-04-14
        • 1970-01-01
        相关资源
        最近更新 更多