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