Active directory 使用AD用户连接到Exchange(单点登录)

Active directory 使用AD用户连接到Exchange(单点登录),active-directory,single-sign-on,exchangewebservices,Active Directory,Single Sign On,Exchangewebservices,目前,我有一个带有用户名(logonParameters.Username)和密码(logonParameters.Password)字段的登录表单。 下面的代码工作正常,但前提是我有连接到Exchange的密码。但是我们想使用单点登录,如果我们这样做,我们没有密码,对吗?但EWS需要用户名、密码和域。那么,如何使用SSO连接到Exchange var domain = logonParameters.UserName.Split('\\').First();

目前,我有一个带有用户名(logonParameters.Username)和密码(logonParameters.Password)字段的登录表单。 下面的代码工作正常,但前提是我有连接到Exchange的密码。但是我们想使用单点登录,如果我们这样做,我们没有密码,对吗?但EWS需要用户名、密码和域。那么,如何使用SSO连接到Exchange

            var domain = logonParameters.UserName.Split('\\').First();
            using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain))
                {
                // validate the credentials
                var username = logonParameters.UserName.Split('\\').Last();
                bool isValid = pc.ValidateCredentials(username, logonParameters.Password);
                if (!isValid)
                    {
                    //throw exception
                    }
                using (UserPrincipal up = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, username))
                    {                      
                    //Connect to ExchangeWebService with those AD Credentials.
                    }
                }
在EWS管理的API(或WSDL代理)中,您可以使用当前安全上下文(例如登录的用户凭据),如


这意味着让它在模拟上下文中运行,并在可能的情况下依靠kerberos进行身份验证。

在这种情况下,Exchange是Azure中的吗?@JohnRSmith nope
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2016);
service.UseDefaultCredentials = true;