[玩转系统] 配置基于证书的身份验证以运行自动化 PowerShell 脚本
作者:精品下载站 日期:2024-12-14 09:09:27 浏览:13 分类:玩电脑
配置基于证书的身份验证以运行自动化 PowerShell 脚本
有时您希望运行自动化 Exchange Online PowerShell 脚本,而不插入凭据或获取 MFA 提示。什么是安全且出色的方法?在本文中,您将了解如何配置基于证书的身份验证 (CBA) 以运行自动化 PowerShell 脚本。
基于证书的身份验证
过去,您通常将用户凭据保存在加密文件中,或使用基本身份验证在 Exchange Online PowerShell 中运行自动化脚本。从 2022 年 9 月起,基本身份验证在 Exchange Online 中已弃用,无法再使用。
基于证书的身份验证是一种新的加密方法,允许安全地自动执行 Exchange Online PowerShell 会话。这是一种安全的方法,无需在每次运行 PowerShell 脚本时提供用户凭据。它支持使用 Exchange Online 的无人值守脚本和自动会话。身份验证时也不需要用户名、密码和 MFA。
基于证书的身份验证如何工作
Exchange Online PowerShell 模块使用 Active Directory 身份验证库通过三个参数获取仅应用程序令牌:
- 应用程序 ID
- 租户 ID(组织)
- 证书指纹
您在 Azure AD 中创建的应用程序分配有一个目录角色,该角色在访问令牌中返回。 Exchange Online 使用令牌中可用的目录角色信息配置基于会话角色的访问控制 (RBAC)。
如何在 Exchange Online 中配置基于证书的身份验证
我们将指导您完成对无人值守脚本实施基于 Exchange Online 证书的身份验证的步骤。
步骤 1. 创建自签名证书
首先,您需要生成一个自签名证书。最好在要运行无人值守 PowerShell 脚本的同一台计算机上制作证书。
以管理员身份使用 Windows PowerShell 登录任何 Windows 服务器或桌面。
注意:自签名证书默认有效期为一年。
在我们的例子中,我们将为自签名证书添加 4 年以避免每年续订。
使用以下 PowerShell cmdlet 创建证书。
$mycert = New-SelfSignedCertificate -DnsName "exoip.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(4) -KeySpec KeyExchange -FriendlyName "EXO automated scripts"
证书现已存储。要查看指纹,请使用以下 cmdlet。
$mycert | Select-Object -Property Subject,Thumbprint,NotBefore,NotAfter
复制指纹并将其粘贴到记事本中。稍后当您使用 CBA 连接到 Exchange Online PowerShell 时将需要它。
PS C:\> $mycert | Select-Object -Property Subject,Thumbprint,NotBefore,NotAfter
Subject Thumbprint NotBefore NotAfter
------- ---------- --------- --------
CN=exoip.com 71E8CD2932E252ED4C70A731795D595715905460 07/02/2023 13.04.09 07/02/2027 13.14.09
我们想要创建一个 .cer 文件,以便稍后将其上传到 Azure AD 应用程序中。使用 .cer 文件,您只能从生成自签名证书的计算机连接到 Exchange Online。
创建一个名为 temp 的文件夹,将其保存在 C:\temp 中。
使用以下 PowerShell cmdlet 将证书导出到 .cer 文件。
$mycert | Export-Certificate -FilePath "C:\temp\EXOAutomatedScripts.cer"
请参阅 PowerShell 中的以下输出。
PS C:\> $mycert | Export-Certificate -FilePath "C:\temp\EXOAutomatedScripts.cer"
Directory: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 07/02/2023 13.31 796 EXOAutomatedScripts.cer
您可以在计算机上的 C:\temp 中找到 .cer 文件
我们还将创建一个 .pfx 文件,以便您可以从任何计算机连接到 Exchange Online。您可以将 .pfx 文件复制或发送给某人,以便在安装到另一台计算机上时,可以在身份验证过程中检索该文件。
使用 PowerShell cmdlet 将证书导出到 .pfx 文件。
$mycert | Export-PfxCertificate -FilePath "C:\temp\EXOAutomatedScripts.pfx" -Password $(ConvertTo-SecureString -String "P@ssw0Rd1234" -AsPlainText -Force)
这是 PowerShell 中以下输出的样子。
PS C:\> $mycert | Export-PfxCertificate -FilePath "C:\temp\EXOAutomatedScripts.pfx" -Password $(ConvertTo-SecureString -String "P@ssw0Rd1234" -AsPlainText -Force)
Directory: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 07/02/2023 13.33 2685 EXOAutomatedScripts.pfx
您可以在计算机上的 C:\temp 中找到 .pfx 文件
步骤 2. 在 Azure AD 中创建新的应用程序注册
按照以下步骤在 Azure AD 中注册新应用程序:
- 登录 Microsoft Azure
- 单击菜单 > Azure Active Directory
- 点击应用注册
- 点击新注册
- 将您的应用程序命名为EXO PowerShell自动化
- 选择仅此组织目录中的帐户 -(单个租户)
- 点击注册
您将收到一条通知,说明已成功创建应用程序,并且它将显示 EXO PowerShell 自动概述。
- 复制应用程序(客户端)ID并将其粘贴到记事本中,因为我们将在连接到 Exchange Online 时使用它
步骤 3. 设置 Azure 应用程序 API 权限
您必须向您创建的 EXO PowerShell 自动化应用程序分配 API 权限。要配置 API 权限,我们将使用脚本并编辑清单属性。
来自 EXO PowerShell 自动化概述:
- 点击清单
- 在编辑器中向下滚动到第 42 行“requiredResourceAccess”
- 选择第 43 行到第 52 行的脚本
- 复制以下 PowerShell 语法
{
"resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
"resourceAccess": [
{
"id": "dc50a0fb-09a3-484d-be87-e023b12c6440",
"type": "Role"
}
]
}
],
- 粘贴清单中的 PowerShell 语法
- 点击保存
您将收到一条通知,指出已成功更新应用程序清单。
- 点击API权限
- 点击授予 exoip365 管理员同意
- 单击是
出现绿色复选标记,表示您已成功授予管理员同意!
步骤 4. 将证书上传到应用程序
现在我们需要上传您之前创建的自签名证书。
来自 EXO PowerShell 自动化概述:
- 点击证书和机密
- 选择证书
- 点击上传证书
- 单击浏览图标在C:\temp中搜索并选择EXOAutomatedScripts.cer文件
- 添加描述 EXO 自动化脚本
- 点击添加
该证书出现在列表中。
注意:始终确保其具有与您之前创建的证书指纹相同的证书指纹。
步骤 5. 将所需的 Azure AD 角色分配给应用程序
配置的最后一步是具有注册应用程序所需权限的 RBAC 角色。
- 单击菜单 > Azure Active Directory
- 选择角色和管理员
- 选择所有角色
- 搜索交易所
- 单击Exchange 管理员
- 点击作业
- 点击添加作业
- 搜索 Azure 应用程序名称EXO PowerShell 自动
- 从结果中选择应用程序
- 点击添加
Azure 分配名称 EXO PowerShell自动化 已成功添加到 Exchange 管理员角色分配列表中。
使用基于证书的身份验证连接到 Exchange Online PowerShell
注意:您必须先安装 Exchange Online PowerShell 模块,然后才能继续操作。
我们将使用基于证书的身份验证 (CBA) 连接到 EXO PowerShell。您需要从 Microsoft Azure 门户获取值并将这些值添加到以下变量中:
- $应用程序ID
- $CertificateThumbPrint
- $组织
在前面的步骤中,我们展示了如何获取 $AppId 和 $CertificateThumbprint 值。现在,我们将在 Azure Active Directory 中找到组织名称,并将值添加到 $Organization 变量中。
- 从菜单中点击自定义域名
- 在域列表中找到它
找到所有值后,填写以下三个变量以使用基于证书的身份验证连接到 Exchange Online PowerShell:
$AppId = "89e1d6c0-5105-41a0-b741-894b2331ca07"
$CertificateThumbprint = "71E8CD2932E252ED4C70A731795D595715905460"
$Organization = "exoip365.onmicrosoft.com"
Connect-ExchangeOnline -AppId $AppId -CertificateThumbprint $CertificateThumbprint -Organization $Organization -ShowBanner:$false
检查连接是否成功的一个好方法是运行 Get-EXOMailbox cmdlet 来查看邮箱。
PS C:\> Get-EXOMailbox -ResultSize 5 | ft Name,UserPrincipalName
Name UserPrincipalName
---- -----------------
Zoe Howard [email protected]
Amanda Morgan [email protected]
Amelia Nash [email protected]
Stephen Hunter [email protected]
Carol Baker [email protected]
使用 CBA 运行 PowerShell 自动化脚本
使用以下自动化 PowerShell 脚本将 Exchange Online 中的邮箱列表导出到 C:\temp 中的 CSV 文件。该脚本被添加到每天运行的计划任务中。
注意: 在 PowerShell 脚本末尾添加 Disconnect-ExchangeOnline -Confirm:$false。如果脚本运行时没有断开会话连接,您可能会用完所有可用的远程 PowerShell 会话,并且需要等待会话过期。
# Connect Exchange Online PowerShell
$AppId = "89e1d6c0-5105-41a0-b741-894b2331ca07"
$CertificateThumbprint = "71E8CD2932E252ED4C70A731795D595715905460"
$Organization = "exoip365.onmicrosoft.com"
Connect-ExchangeOnline -AppId $AppId -CertificateThumbprint $CertificateThumbprint -Organization $Organization -ShowBanner:$false
# Split path
$Path = Split-Path -Parent "C:\temp\*.*"
# Create variable for the date stamp
$LogDate = Get-Date -f yyyyMMddhhmm
# Define CSV and log file location variables
$Csvfile = $Path + "\AllMailboxes_$logDate.csv"
Get-EXOMailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress | Sort-Object PrimarySmtpAddress | Export-CSV -Path $Csvfile -NoTypeInformation -Encoding UTF8
# Disconnect Exchange Online PowerShell
Disconnect-ExchangeOnline -Confirm:$false
您可以成功连接 Exchange Online 基于证书的身份验证来运行自动化 PowerShell 脚本!
了解更多:增加和改进 Azure MFA »
结论
您了解了如何配置基于证书的身份验证以连接到 Exchange Online 并运行自动化 PowerShell 脚本。不再涉及用户交互、用户名、密码或 MFA,这使得它变得更加容易。
您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 批量创建共享邮箱。不要忘记关注我们并分享这篇文章。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag