【问题标题】:Use Kerberos-ticket in C# client application在 C# 客户端应用程序中使用 Kerberos-ticket
【发布时间】:2012-05-23 11:43:57
【问题描述】:

我有一个使用 Windows 凭据自动登录的网络应用程序。 我现在想使用我的 Windows 帐户在 c# windows 应用程序中使用来自这个 web 应用程序的信息。因此,我需要能够从该网站获取会话 cookie。 在这里你可以看到我的一段代码,我想在其中检索 cookie:

       string URLAuth = extractParameterFromProperties("relatieBeheer_login_url");
        WebClient webClient = new WebClient();
        webClient.Credentials = CredentialCache.DefaultCredentials;
       // webClient.UseDefaultCredentials = true;

        byte[] responseBytes = webClient.DownloadData(URLAuth);
        //byte[] responseBytes = webClient.UploadValues(URLAuth, "POST", formData);
        string resultAuthTicket = Encoding.UTF8.GetString(responseBytes);
        if(resultAuthTicket.Contains("Verkeerde combinatie gebruikersnaam")){
            sessionCookie="NoSession";
        }else{
                WebHeaderCollection cookies = webClient.ResponseHeaders;
                sessionCookie = cookies[HttpResponseHeader.SetCookie];
        }

当我调试应用程序时,我看不到凭据中没有填写任何内容: 域、用户名和密码为空。

欢迎任何帮助。

【问题讨论】:

    标签: c# webclient kerberos single-sign-on


    【解决方案1】:

    DefaultCredentials 返回的 ICredentials 实例不能用于查看当前安全上下文的用户名、密码或域。

    http://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultcredentials.aspx

    【讨论】:

    • 好的,但是你的意思是 DefaultCredentials 确实应该发送 Kerberos-ticket 吗??
    • @user1370849 我认为它们应该与身份验证一起发送,但是由于安全原因,您无法在变量中看到它们。
    • 我可以通过任何方式解决此问题。在wireshark中我看不到任何Kerberos票通过,而当我只是美元à网络浏览器时我可以看到它通过
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多