【问题标题】:Authenticate with SSPI to vSphere using C# API使用 C# API 通过 SSPI 向 vSphere 进行身份验证
【发布时间】:2012-12-05 17:28:04
【问题描述】:

我正在使用 C# 库连接到 vSphere (VimClient)。我用这个方法登录:

VimClient client = new VimClient();
client.Connect("https://vSphereMachine/sdk");
client.Login("userName", "password");

我正在登录的用户是进程使用的当前用户。有没有办法可以使用当前登录的用户进行身份验证?

这个帖子似乎提供了建议,但我在那里尝试过的没有任何效果:http://communities.vmware.com/message/1125103

这可能是因为我不熟悉 .NET 中的 SSPI 实现。

【问题讨论】:

    标签: c# sspi vsphere


    【解决方案1】:

    由于VMWare.Vim.dll 只是包装了生成的WCF 服务客户端,我能够使this sample project 适应直接使用dll。这是我对他的LoginBySspiPackage 方法的改编。

        private UserSession LoginBySspiPackage(SspiPackageType sspiPackage, string serviceSpn)
        {
            Log($"Logging in to VSphere instance {VimClient.ServiceUrl} using SSPI.");
            var sspiClient = new SspiClient(serviceSpn, sspiPackage);
            var sessionManager = new SessionManager(VimClient, VimClient.ServiceContent.SessionManager);
    
            var serverNotReady = true;
            UserSession session = null;
    
            while (serverNotReady)
            {
                try
                {
                    var base64String = Convert.ToBase64String(sspiClient.Token);
                    session = sessionManager.LoginBySSPI(base64String, "en");
    
                    serverNotReady = false; // Connected!  
                }
                catch (VMware.Vim.VimException e)
                {
                    if (e.MethodFault is SSPIChallenge)
                    {
                        var sspiChallenge = e.MethodFault as SSPIChallenge;
                        var base64String = Convert.FromBase64String(sspiChallenge.Base64Token);
                        sspiClient.Initialize(base64String);
                    }
                    else if (e.MethodFault is InvalidLogin)
                    {
                        throw new InvalidLoginException(e.Message);
                    }
                    else
                    {
                        throw;
                    }
                }
            }
    
            return session;
        }
    

    【讨论】:

      猜你喜欢
      • 2014-03-16
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 2017-03-03
      • 2016-04-16
      • 1970-01-01
      • 2021-07-18
      • 2015-12-08
      相关资源
      最近更新 更多