如何使用PowerShell通过证书身份验证连接SharePoint Online
可以使用证书身份验证通过PowerShell连接SharePoint Online,该方案相比账号密码认证安全性更高,更适合自动化无人值守的运行场景。
前置准备步骤
- 登录Azure Active Directory管理中心,注册一个新的应用程序,记录下该应用的客户端ID以及所属租户的租户ID
- 为注册的应用分配SharePoint Online对应的操作权限,例如创建站点需要Sites.FullControl.All应用权限,分配完成后需要点击「授予管理员同意」完成权限激活
- 生成用于身份验证的证书,将证书的公钥(.cer格式)上传到Azure AD应用的「证书和密码」板块,证书私钥(.pfx格式)保存在运行脚本的设备上,或安装到设备的证书存储中
- 升级SharePoint Online Management Shell到最新版本,确保支持证书认证的相关参数
证书认证连接代码示例
替换原有账号密码认证的连接逻辑,以下为从本地证书存储读取证书的实现代码:
# 基础配置参数 $TenantId = "你的Azure AD租户ID" $ClientId = "注册的Azure AD应用客户端ID" $CertThumbprint = "上传到Azure AD的证书指纹" $AdminCenterUrl = "https://testenvironment-admin.sharepoint.com" $SiteUrl = "https://testenvironment.sharepoint.com/sites/SharepointDemo2" $SiteTitle = "SharePoint Demo2" $siteOwner = "test@testenvironment.onmicrosoft.com" # 从当前用户的证书存储中获取指定证书 $Cert = Get-ChildItem -Path "Cert:\CurrentUser\My\$CertThumbprint" # 采用证书身份验证连接SharePoint Online管理中心 Connect-SPOService -Url $AdminCenterUrl -ClientId $ClientId -TenantId $TenantId -Certificate $Cert # 创建通信站点的逻辑保持不变 New-SPOSite -Url $SiteUrl -Owner $SiteOwner -Template "STS#3" -Title $SiteTitle -StorageQuota 1048
如果你的证书是pfx文件格式,没有安装到证书存储,可以用以下代码加载证书:
$PfxFilePath = "证书pfx文件的本地路径" $PfxPassword = ConvertTo-SecureString "pfx文件的保护密码" -AsPlainText -Force $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($PfxFilePath, $PfxPassword)
注意事项
- 为Azure AD应用分配权限时遵循最小权限原则,仅授予执行操作必需的权限,避免过度授权带来的安全风险
- 证书私钥和pfx密码需要妥善保管,避免泄露,建议定期轮换证书,降低安全隐患
内容的提问来源于stack exchange,提问作者Aarish Rahman
相关产品推荐
相关产品推荐

