gpt4 book ai didi

azure - 从 AzureAD 安全的 powershell 核心 Azure Function 获取 ClaimsPrincipal/Identity

转载 作者:行者123 更新时间:2023-12-02 06:40:57 25 4
gpt4 key购买 nike

我有一个使用 Powershell Core 6 开发的 Azure Function,并通过启用 Azure AD 身份验证进行保护。如果通过浏览器执行 GET 来发出匿名请求,用户将首先重定向到 Azure AD 登录,然后重定向到我的 Azure Function。 Authentication Configuration

现在,在 Powershell 函数中,我需要知道哪个用户已登录,哪个用户通常可以在 ClaimsPrincipal 中找到,如下所示: https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook-trigger?tabs=csharp

但是当我通过 powershell 访问它时,httpRequest.Context.User 为空。下面是我的函数中的代码:

using namespace System.Net

# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)

$body = @{
Context = $Request.Context;
HttpContext = $Request.HTTP.Context;
Request = $Request;
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $body
})

它基本上会返回所有内容以尝试查找用户身份

在哪里可以找到用户的身份?

我不想使用这些 header ,因为可以轻松操纵它们以使 API 正常工作。

$Request.Headers['X-MS-CLIENT-PRINCIPAL-NAME']
$Request.Headers['X-MS-CLIENT-PRINCIPAL-ID']

最佳答案

您要查找的数据应位于 $Request.Headers 下,例如:

$Request.Headers['X-MS-CLIENT-PRINCIPAL-NAME']
$Request.Headers['X-MS-CLIENT-PRINCIPAL-ID']

PowerShell 函数中的 $Request 对象结构与 C# 函数不同。具体来说,它既没有 Context 也没有 HTTP 属性,这就是您得到空值的原因。为了查看全部内容,请跟踪如下内容:

$Request | ConvertTo-Json

关于azure - 从 AzureAD 安全的 powershell 核心 Azure Function 获取 ClaimsPrincipal/Identity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62814166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com