2

我的应用程序曾经接受用户名/密码来验证远程共享(在 Windows 服务器上),然后获取文件列表等。

public int ConnectNetResource(string server, string user, string password, ref string driveLeter) {
        NETRESOURCE net = new NETRESOURCE();
        net.dwScope = 0;
        net.dwType = 0;
        net.dwDisplayType = 0;
        net.dwUsage = 0;
        net.lpRemoteName = server;
        net.lpLocalName = driveLeter;
        net.lpProvider = null;

        return WNetAddConnection2(ref net, password, user, 0);

    }

现在,我们需要使用 SmartCard 进行身份验证。我有 GetSmartCards 的代码,但我不知道如何使用证书进行身份验证。

public static X509Certificate2 GetClientCertificate()
    {
        X509Certificate2 certificate = null;
        var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
        try
        {
            store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
            // Nothing to do if no cert found.
            if (store.Certificates != null && store.Certificates.Count > 0)
            {
                if (store.Certificates.Count == 1)
                {
                    // Return the certificate present.
                    certificate = store.Certificates[0];
                }
                else
                {
                    // Request the user to select a certificate 
                    var certificates = X509Certificate2UI.SelectFromCollection(store.Certificates, "Digital Certificates", "Select a certificate from the following list:", X509SelectionFlag.SingleSelection);
                    // Check if one has been returned
                    if (certificates != null && certificates.Count > 0)
                        certificate = certificates[0];
                }
            }
        }
        finally
        {
            store.Close();
        }
        return certificate;

    }

GetClientCertificate 函数将返回用户选择的证书,现在我如何使用此证书连接到远程共享。我可以使用什么 API 或 .dll。

顺便说一句,我是一名 Windows 工程师,他可以谷歌代码并使其以某种方式工作。将非常感谢工作代码。谢谢你。

4

0 回答 0