如何安全连接Office365Online

随着Office 365 在中国的迅速普及,越来越多的公司开始使用Office 365及相关服务。能够熟练使用并管理Office 365 就成为广大公司IT管理员的一个必备技能。

10年积累的成都网站设计、网站制作、外贸营销网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有广元免费网站建设让你可以放心的选择与我们合作。

今天我们就来介绍一种较为安全便捷的方式的连接Office 365 Online,即在PowerShell界面,通过加密用户名和密码的方式连接Office 365 Online。那我们使用PowerShell对Office 365 Online进行远程管理,有如下优点:

  • Office 365 拥有仅可使用 Office 365 PowerShell 配置的功能
  • Office 365 PowerShell 善于执行批量操作
  • Office 365 PowerShell 善于筛选数据
  • Office 365 PowerShell 方便打印或保存数据
  • Office 365 PowerShell 支持跨服务器产品管理
  • Office 365 PowerShell 会显示无法通过 Microsoft 365 管理中心看到的其他信息

在连接过程中,如果用户名和密码以明文形式输入,就会带来安全风险。如果采用以下PowerShell脚本就可以避免这个缺点:预先定义两个函数,分别用于加密和解密字符串;然后检查本地是否存在已经加密的用户名和密码文件,如果没有,提示用户输入用户名和密码,并将其以密文形式存到本地;最后,读取本地加密的用户名和密码,并将其解密,用于远程连接Office 365 Online。

脚本代码分为以下三个部分介绍给大家。

第一部分,定义加密和解密的函数。

 
 
 
  1. # This function is to encrypt a string. 
  2. function Encrypt-String($String, $Passphrase, $salt="SaltCrypto", $init="IV_Password", [switch]$arrayOutput)  
  3. {  
  4.     $r = new-Object System.Security.Cryptography.RijndaelManaged  
  5.     $pass = [Text.Encoding]::UTF8.GetBytes($Passphrase)  
  6.     $salt = [Text.Encoding]::UTF8.GetBytes($salt)  
  7. $r.Key = (new-Object ` 
  8.                   Security.Cryptography.PasswordDeriveBytes $pass, $salt, "SHA1", 5).GetBytes(32)  
  9. $r.IV = (new-Object ` 
  10.               Security.Cryptography.SHA1Managed).ComputeHash ` 
  11.               [Text.Encoding]::UTF8.GetBytes($init) )[0..15]  
  12.     $c = $r.CreateEncryptor()  
  13.     $ms = new-Object IO.MemoryStream  
  14.     $cs = new-Object Security.Cryptography.CryptoStream $ms,$c,"Write"  
  15.     $sw = new-Object IO.StreamWriter $cs  
  16.     $sw.Write($String)  
  17.     $sw.Close()  
  18.     $cs.Close()  
  19.     $ms.Close()  
  20.     $r.Clear()  
  21.     [byte[]]$result = $ms.ToArray()  
  22.     return [Convert]::ToBase64String($result)  
  23. }  
  24.  
  25. # This function is to de-encrypt a string. 
  26. function Decrypt-String($Encrypted, $Passphrase, $salt="SaltCrypto", $init="IV_Password")  
  27. {  
  28.     if($Encrypted -is [string]){  
  29.         $Encrypted = [Convert]::FromBase64String($Encrypted)  
  30.        }  
  31.     $r = new-Object System.Security.Cryptography.RijndaelManaged  
  32.     $pass = [Text.Encoding]::UTF8.GetBytes($Passphrase)  
  33.     $salt = [Text.Encoding]::UTF8.GetBytes($salt)  
  34. $r.Key = (new-Object Security.Cryptography.PasswordDeriveBytes ` 
  35.                  $pass, $salt, "SHA1", 5).GetBytes(32) 
  36. $r.IV = (new-Object ` 
  37.               Security.Cryptography.SHA1Managed).ComputeHash ` 
  38.               ( [Text.Encoding]::UTF8.GetBytes($init) )[0..15]  
  39.     $d = $r.CreateDecryptor()  
  40.     $ms = new-Object IO.MemoryStream @(,$Encrypted)  
  41.     $cs = new-Object Security.Cryptography.CryptoStream $ms,$d,"Read"  
  42.     $sr = new-Object IO.StreamReader $cs  
  43.     Write-Output $sr.ReadToEnd()  
  44.     $sr.Close()  
  45.     $cs.Close()  
  46.     $ms.Close()  
  47.     $r.Clear()  
  48. Clear-Host 

第二部分,从本地的文本文件中读取加密的Office 365用户名和密码。只第一次需要手工输入用户名和密码,然后将加密的用户名和密码以密文形式存储到本地磁盘。此后无需输入。

 
 
 
  1. #Try to read the encrypted user name and password from the specific path, if there are, read and de-encrypt them. If there are not, prompt for input and encrypt them. 
  2. $uencrypted = Get-Content -ErrorAction SilentlyContinue -Path 'C:\$Home\Desktop\Username.txt' 
  3. $pencrypted = Get-Content -ErrorAction SilentlyContinue -Path 'C:\$Home\Desktop\password.txt' 
  4. If ($null -ne $uencrypted -and $null -ne $pencrypted) 
  5.     $udecrypted = Decrypt-String $uencrypted "U_MyStrongPassword" 
  6.     $pdecrypted = Decrypt-String $pencrypted "P_MyStrongPassword" 
  7.     $pdecrypted = ConvertTo-SecureString $pdecrypted -AsPlainText -Force 
  8. Else 
  9.     $ustring = read-host "Please Enter Office 365 User name"  
  10.     $pstring = read-host "Please Enter Office 365 User Password"  
  11.     $uencrypted = Encrypt-String $ustring "U_MyStrongPassword" 
  12.     $uencrypted | Out-File "$HOME\Desktop\Username.txt" 
  13.     write-host "Store the encrypted Username successfully!"  
  14.     $pencrypted = Encrypt-String $pstring "P_MyStrongPassword" 
  15.     $pencrypted | Out-File "$HOME\Desktop\password.txt" 
  16.     write-host "Store the encrypted password successfully!" 
  17.     $udecrypted = Decrypt-String $uencrypted "U_MyStrongPassword" 
  18.     $pdecrypted = Decrypt-String $pencrypted "P_MyStrongPassword" 
  19.     $pdecrypted = ConvertTo-SecureString $pdecrypted -AsPlainText -Force 

第三部分,连接Office 365 Online。 执行以下命令后,就可以在PowerShell下,远程管理Office 365 Exchange Online了。

 
 
 
  1. #Connect to Office 365 online or Azure 
  2. $LiveCred = New-Object System.Management.Automation.PSCredential $udecrypted, $pdecrypted     
  3. $Session = New-PSSession -ConfigurationName Microsoft.Exchange ` 
  4.                      -ConnectionUri https://partner.outlook.cn/powershell -Credential $LiveCred ` 
  5.                      -Authentication Basic –AllowRedirection -ErrorAction Stop ` 
  6.                      -Name "$($Credential.UserName)" 
  7. Import-PSSession $Session 
  8. Connect-MsolService –Credential $LiveCred -AzureEnvironment AzureChinaCloud 

注意:执行最后一个命令,需要预先安装Microsoft Online Services Sign-In Assistant。安装方法可自行百度,本篇不做介绍。

当前标题:如何安全连接Office365Online
文章链接:http://www.gawzjz.com/qtweb/news19/168919.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联