[玩转系统] 将基于证书的身份验证与 Microsoft Graph PowerShell SDK 结合使用
作者:精品下载站 日期:2024-12-14 04:04:27 浏览:14 分类:玩电脑
将基于证书的身份验证与 Microsoft Graph PowerShell SDK 结合使用
远离交互式会话
在更新使用 Microsoft Graph PowerShell SDK 访问 Microsoft 365 数据的 Azure AD 帐户的许可证等文章中,我们使用了在交互式会话中发出的命令。正如我在本文中指出的那样,这种方法非常适合探索 Graph SDK cmdlet 的工作原理,同时也为程序员和管理员提供了一些需要理解的要点。最严重的问题是权限累积,随着时间的推移收集的同意意味着用于 SDK 的服务主体可能会获得过度许可。解决方案是使用在 Azure AD 中注册的单独应用程序,并获得足够的权限来完成工作;这带来了管理挑战,但更安全。
如果您选择使用注册应用程序,则可以使用仅应用程序身份验证而不是委派访问权限。仅应用程序身份验证意味着应用程序使用 X.509 证书作为其凭据。该证书可以是自签名的(用于测试目的)或由证书颁发机构颁发。 Microsoft 有关对 Microsoft Graph PowerShell SDK 使用仅应用程序身份验证的文档包含配置在 Azure AD 中注册的应用程序以进行仅应用程序身份验证的步骤。本文介绍了我使用这些步骤的经验。
获得证书
您可能没有等待使用的 X.509 证书,但使用 PowerShell 可以轻松创建它们。此代码示例运行 New-SelfSignedCertificate cmdlet 来创建一个新证书,该证书存储在运行该命令的工作站上当前用户的本地证书存储中:
$Cert = New-SelfSignedCertificate -DnsName office365itpros.onmicrosoft,com -CertStoreLocation "Cert:\CurrentUser\My" -FriendlyName "MicrosoftGraphSDK" -Subject "Test Cert for Microsoft Graph SDK"
Get-ChildItem "Cert:\CurrentUser\My$($Cert.thumbprint)"
PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My
Thumbprint Subject
---------- -------
FC92991B21219F178AFB37C12DF231B6AFC3D790 CN=office365itpros.onmicrosoft
如果要在本地计算机的证书存储中创建证书,请指定Cert:\LocalMachine\My 作为存储位置。如果您以管理员身份运行 PowerShell,则只能在本地计算机存储中创建新证书。出于测试目的,可以将您使用的证书存储在商店中。当需要将某些内容投入生产时,您需要在运行代码的计算机上安装不同的证书。
创建证书后,我们将其导出到 .cer 文件。这是我所做的:
Get-ChildItem "Cert:\CurrentUser\My$($Cert.thumbprint)" | Export-Certificate -FilePath C:\temp\MicrosoftGraphSDK.cer
Directory: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 06/10/2021 17:01 861 MicrosoftGraphSDK.cer
将证书连接到应用程序
Azure AD 注册的应用程序充当容器来保存对一组图形权限的同意。这些权限使应用程序能够使用图形查询访问数据。当脚本使用仅应用程序身份验证进行连接时,它通过传递应用程序已知的证书的指纹而不是交互式密码或应用程序机密等其他机制来进行身份验证。
为此,我们必须将使用 Export-Certificate cmdlet 创建的证书文件加载到应用程序中。这是通过转到应用程序属性的证书和机密部分并选择上传证书选项来完成的(图 1)。
请记住,应用程序拥有我们想要用于图形查询的权限,我们需要向应用程序添加所需的图形权限。确切的权限根据应用程序想要访问的数据而有所不同。您可以通过在交互式会话中运行代码来进行试验,找出正确的权限集,然后将它们添加到应用程序中。在图 2 中,我添加了五个应用程序权限,范围从 Auditlog.Read.All(需要读取用户登录数据)到 User.Read.All(需要阅读有关用户帐户的信息)。
请注意,委派的User.Read权限已被删除。这是我们不需要的默认权限。
连接到 Microsoft Graph
我们需要三条信息才能使用 Connect-MgGraph cmdlet 连接到 Graph:
- 租户标识符。您可以从应用程序属性中复制它。
- 应用程序标识符。同样,这可以在应用程序属性中找到。
- 证书指纹。这可以作为证书的属性提供(请参见上面的示例)。
有了这些信息,我们可以运行如下命令(请记住根据您的租户的情况替换租户标识符、应用程序标识符和证书指纹值):
Connect-MgGraph -TenantId "a562313f-14fc-43a2-9a7a-d2e27f4f3478" -AppId "d86b1929-b818-411b-834a-206385bf5347" -CertificateThumbprint "FC92991B21219F178AFB37C12DF231B6AFC3D790"
Welcome To Microsoft Graph!
要检查您是否已使用正确的设置进行连接,请运行 Get-MgContext cmdlet。这里要检查的重要事项是客户端标识符、租户标识符和指纹的输入设置以及可用的权限(范围)。上下文范围应报告 Process,而不是 CurrentUser(交互式登录),并且不应显示帐户名称。
Get-MgContext
ClientId : d86b1929-b818-411b-834a-206385bf5347
TenantId : a562313f-14fc-43a2-9a7a-d2e27f4f3478
CertificateThumbprint : FC92991B21219F178AFB37C12DF231B6AFC3D790
Scopes : {Group.Read.All, MailboxSettings.Read, User.Read.All, Organization.ReadWrite.All...}
AuthType : AppOnly
AuthProviderType : ClientCredentialProvider
CertificateName :
Account :
AppName : Microsoft Graph PowerShell SDK Cert
ContextScope : Process
Certificate :
如果出现问题,请运行 Disconnect-MgGraph cmdlet 终止会话,返回并检查应用设置(特别是,确保已同意所有必需的权限),然后再试一次。
运行代码
使用正确的权限成功连接后,您就可以运行代码。与往常一样,交互式提示不起作用,因此可能需要进行一些调整才能获取为交互式会话创建的代码并使其在后台作业中工作。之后,需要弄清楚操作细节,例如:
- 用于身份验证的 X.509 证书以及如何将它们安装在正确的位置
- 如何提交脚本作为后台作业。
- 处理输出(例如,通过电子邮件发送包含脚本结果的文件)。
所有这些都是另一天的工作。
猜你还喜欢
- 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