Microsoft Graph PowerShell v2 发布公开预览版 - 新的身份验证方法,支持解除阻塞场景,脚本迁移工具

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

本篇接前一篇继续介绍有些事情耽搁了所以发晚了。

为更多场景提供新的身份验证方法

1. 托管标识

在编写自动化脚本时一个常见的挑战是管理用于保护服务之间通信的秘密、凭据、证书和密钥。允许模块获取受 Azure Active Directory 保护的 Azure 资源的访问令牌从而消除管理凭据的需要。该身份由 Azure 平台管理不需要您提供或旋转任何秘密。有关更多详细信息请参阅 Azure 资源中的托管标识

a. 系统分配的托管标识
在服务实例上使用自动管理的标识。标识与服务实例的生命周期相关联。

Connect-MgGraph -Identity

b. 用户分配的托管标识
将用户创建的托管标识作为独立的Azure资源使用。

Connect-MgGraph -Identity -ClientId "User_Assigned_Managed_identity_Client_Id"

2. 客户端秘密凭证

如果您需要在后台进行交互而无需用户登录那么这种类型的授权可以帮助到你。通过向 Connect-MgGraph 添加 -ClientSecretCredential 参数增加对客户端秘密凭证的支持。有关如何获取或创建凭证请参阅 Get-Credential

$ClientCredential = Get-Credential -Username "Client_Id"
# Or create a credential object that is identical to the object that Get-Credential returns without prompting the user. This method requires a plain text password, which might violate the security standards in some enterprises. l
# $ClientSecretCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ApplicationId, $SecuredPassword
# Enter client_secret in the password prompt.
Connect-MgGraph -TenantId "Tenant_Id" -ClientSecretCredential $ClientCredential

3. 基于环境变量的认证

环境变量存储参数键和值然后作为脚本的输入并有助于在与他人共享它们时不泄漏信息。
Connect-MgGraph 中使用 -EnvironmentVariable 来支持基于环境变量的认证。需要注意的是如果使用用户名和密码进行身份验证将会抛出一个错误因为设计不支持这一点并且客户端秘密优先于证书也就是说如果客户端秘密值和证书值都存在则将使用客户端秘密。查看Azure 身份环境变量以获取更多详细信息。

# Add environment variables to be used by Connect-MgGraph.
$Env:AZURE_CLIENT_ID = "application id of the client app"
$Env:AZURE_TENANT_ID = "Id of your tenant"
$Env:AZURE_CLIENT_SECRET = "secret of the client app"

# Tell Connect-MgGraph to use your environment variables.
Connect-MgGraph –EnvironmentVariable

4. 证书凭证

如果你正在使用 Microsoft Graph PowerShell SDK v2那么仅在当前用户证书存储区中拥有证书不再是一个限制增加了在当前用户和本地机器证书存储中查找证书的支持。如果两个地方都有两个相同的证书则当前用户存储区将优先给予证书。

Connect-MgGraph -ClientId "Client_Id" -Tenant "Tenant" -CertificateThumbprint "Cert_Thumbprint"

连同所有新的身份验证方式v2中使用的认证令牌凭证不再支持 -ForceRefresh。客户应该使用 Disconnect-MgGraph 来退出当前上下文然后调用 Connect-MgGraph 来获得一个新的访问令牌。此外为了更加安全微软将 -AccessToken 的类型从 String 更改为 SecureString

更好的性能

HTTP/2 协议通过增加对多路复用、报头压缩和服务器推送的支持专注于提高性能和感知延迟。当 HTTP/2 可用时用户将受益于性能的提高当 API 不支持 HTTP/2 时SDK将优雅地退回到 HTTP/1.1

使用新的成功范围代码支持解除阻塞场景

API 返回的状态代码与 API 中记录的状态代码不同这种情况将不再影响用户。通过成功状态码范围(2xx)支持允许将所有2xx响应视为成功的请求从而解除了新场景的阻塞可以在脚本中进一步使用响应体时从响应体中获取信息。

Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId $applicationTemplateId -BodyParameter $params

输出

DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
Created

Headers:
Cache-Control                 : no-cache
Transfer-Encoding             : chunked
Location                      : https://graph.microsoft.com/
Vary                          : Accept-Encoding
Strict-Transport-Security     : max-age=31536000
request-id                    : request-id
client-request-id             : client-request-id
x-ms-ags-diagnostic           : {"ServerInfo":{"DataCenter":"Brazil South","Slice":"E","Ring":"3","ScaleUnit":"000","RoleInstance":"CP1PEPF00002F02"}}
OData-Version                 : 4.0
Date                          : Fri, 16 Dec 2022 19:22:27 GMT

Body:
{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.applicationServicePrincipal",
  "application": {
    "id": "id",
    "appId": "app-id",
    "applicationTemplateId": "application-template-id",
    "createdDateTime": "2022-12-16T19:22:26Z",
    "deletedDateTime": null,
    "displayName": "Azure AD SAML Toolkit",
    "description": null,
    "groupMembershipClaims": null,
    "identifierUris": [],
    "isFallbackPublicClient": false,
  },
  "servicePrincipal": {
    "id": "id",
    "deletedDateTime": null,
    "accountEnabled": true,
    "appId": "app-id",
    "applicationTemplateId": "application-template-id",
    "appDisplayName": "Azure AD SAML Toolkit",
    "alternativeNames": [],
    "appOwnerOrganizationId": "app-owner-organization-id",
    "displayName": "Azure AD SAML Toolkit",
    "servicePrincipalNames": [
      ""
    ],
    "servicePrincipalType": "Application",
    "tags": [
      "WindowsAzureActiveDirectoryIntegratedApp"
    ],
    "tokenEncryptionKeyId": null,
    "samlSingleSignOnSettings": null,
    "addIns": [],
    }
  }
}

注意为了可读性这里显示的响应对象被缩短了

脚本迁移工具

微软将提供一个迁移工具来帮助客户将他们的脚本从使用 Microsoft Graph PowerShell SDK v1 迁移到 v2。该工具将在 v2 版本GA时可用。客户可以在 GitHub 上联系微软并发送任何愿意分享的脚本来帮助微软测试和验证工具。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shell

“Microsoft Graph PowerShell v2 发布公开预览版 - 新的身份验证方法,支持解除阻塞场景,脚本迁移工具” 的相关文章