【问题标题】:How to call WCF Http Service behind SiteMinder如何在 SiteMinder 后面调用 WCF Http 服务
【发布时间】:2011-03-10 15:32:32
【问题描述】:

我正在尝试调用托管在 ASP.NET 应用程序中的 WCF 4 Http Web 服务。该服务受到 SiteMinder 的保护。

我想知道如何以编程方式调用 Web 服务,更具体地说,我需要传递哪些信息才能在 SiteMinder 中获得授权以访问我的资源。

我正在从同一服务器上运行的 ASP.NET 应用程序发出请求,因此我可以访问身份验证 cookie。

【问题讨论】:

    标签: asp.net web-services cookies siteminder


    【解决方案1】:

    首先获取 SiteMinder 身份验证令牌,如下所示:

        private string ObtainSiteMinderSession()
        {
            var cookie = Request.Cookies["SMSESSION"];
            return cookie != null ? cookie.Value : string.Empty;
        }
    

    然后像这样(使用 Microsoft.Http.dll)通过您的 Web 服务调用传递此令牌:

    using Microsoft.Http;
    using Microsoft.Http.Headers;
    

    ...

    var Client = new HttpClient(baseUri);
    
    // Add SMSESSION
    var smCookie = new Cookie();
    smCookie.Add("SMSESSION", ObtainSiteMinderSession());
    Client.DefaultHeaders.Cookie.Add(smCookie);
    
    using (var httpRequest = new HttpRequestMessage(Verbs.GET, "/LoadData/"))
    { ... }
    

    【讨论】:

    • 我必须创建一个 Cookie 而不是使用来自 Request.Cookies["..."] 的 Cookie 的原因是它们是不同的 .NET 类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    相关资源
    最近更新 更多