远程交换开放运行空间 (c#) 访问被拒绝 - 缺少角色?

问题描述

我正在使用 Exchange 服务器,但在尝试打开运行空间时出现“拒绝访问”错误

 if(_runspace.RunspaceStateInfo.State == RunspaceState.BeforeOpen)
                    _runspace.open();
            }
            catch (Exception ex)
            {
                PowershellEnvironmentExceptionHandler.Handle(ex);
            }

我可以使用相同的凭据从 powershell 远程连接(使用 connect-exchangeonline)。

负责连接的代码是:

 class ExchangeConnectionProvider
    {

        IkeyvaultProvider _keyProvider;
        Uri _uri = new Uri("https://outlook.office365.com/powershell-liveid/");
        string _shell = "http://schemas.microsoft.com/powershell/Microsoft.Exchange";
        private static readonly ILogger _logger = LogManager.GetCurrentClassLogger();

        public ExchangeConnectionProvider(IkeyvaultProvider keyProvider)
        {
            _keyProvider = keyProvider;
        }

        string GetUserName()
        {
            var username= CloudConfigurationManager.GetSetting("exchangeUser");
            if (string.IsNullOrEmpty(username))
                return string.Empty;
        return username;
        }
        

        string getpassword()
        => CloudConfigurationManager.GetSetting("exchangePassword");

        internal WSManConnectionInfo Provide()
        {
            
            
            string username = GetUserName();
            string password = getpassword();

      
            
            _logger.Info($"Connecting to exchange with username {username}");
            return Connect(username,password);
        }

       WSManConnectionInfo Connect(string username,string password)
    {


        //password = WebUtility.HtmlDecode(password);
        securestring securePassword = new securestring();
        foreach (char c in password)
        {
            securePassword.AppendChar(c);
        }



    
        securestring secureStrin = new NetworkCredential("",password).SecurePassword;
        
        //var creds = new PSCredential(username,secureStrin);
        var creds = new PSCredential(username,securePassword);

        var connection = new WSManConnectionInfo(_uri,_shell,creds);
        connection.SkipCNCheck = true;
        connection.SkipCACheck = true;
        connection.SkipRevocationCheck = true;

        connection.AuthenticationMechanism = AuthenticationMechanism.Basic;
        connection.MaximumConnectionRedirectionCount = 2;
        return connection;
    }

当我使用具有交换管理员角色的帐户时,一切正常。 用户名/密码没有问题。

有人知道哪个角色负责允许

_runspace.open();

“拒绝访问”出现在上面。

我已经将我之前使用的用户角色(和代码正在工作)与当前用户进行了比较 当前用户

Role Management
Security Group Creation and Membership

以前的用户

Move MailBoxes
Reset Password
Migration
distribution Groups
Team MailBoxes
Mail Recipient Creation
Security Group Creation and Membership
Role Management
Recipient Policies
Message Tracking
Mail Recipients

这两个用户在云交换的不同域中工作 - 我之前在测试域(一切正常)工作。

我还对这些用户属性进行了比较(通过 get-user 命令),唯一的区别是:

交换版本:

最糟糕的是,我无法访问交换服务器设置,因此我无法为该用户分配新角色 - 我必须与公司其他部门合作,这真的需要太多时间 - 如果我愿意的话知道上面的角色需要操作会快很多 :)

交换版本:

0.20 (15.0.0.0) (current user,where i have problem)
1.1 (15.0.0.0) (prevIoUs user on test domain)

分配的 SKU:

null (current user)
true (prevIoUs user on test domain)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)