当前位置: 首页 > 知识库问答 >
问题:

密钥库返回带有访问令牌的401(MSI PowerShell函数应用程序)

仰雅昶
2023-03-14

我正试图用我的Azure函数使用PowerShell连接到Keyvault。已打开托管服务标识(MSI),并且在Keyvault中,我授予MSI“GET”和“List”访问策略。使用下面的脚本,我成功地获得了一个访问令牌,但是当我向Keyvault发出请求时,我总是收到401响应。

$vaultName = $Env:KeyVaultName
$vaultSecretName = $Env:VaultSecretName

$tokenAuthURI = $Env:MSI_ENDPOINT + "?resource=https://vault.azure.net/&api-version=2017-09-01"
$tokenResponse = Invoke-RestMethod -Method Get -Headers @{"Secret"="$env:MSI_SECRET"} -Uri $tokenAuthURI
$accessToken = $tokenResponse.access_token

$headers = @{ 'Authorization' = "Bearer $accessToken" }
$queryUrl = "https://$vaultName.vault.azure.net/keys/" +$vaultSecretName + "?api-version=2016-10-01"

$keyResponse = Invoke-RestMethod -Method GET -Uri $queryUrl -Headers $headers

知道为什么令牌不够吗?

共有1个答案

戚默
2023-03-14

尝试将资源URI更改为https://vault.azure.net(没有尾随斜杠)。服务器上的令牌验证需要与401响应的www-authenticate标头中返回的字符串完全相同。通常,对于令牌丢失或验证失败的情况,密钥Vault返回401(三种常见情况是令牌过期、具有不正确的资源URI、或由与Vault关联的其他承租人颁发)。

 类似资料:
  • 我正试图使用Azure函数从密钥库获取秘密,但当我试图访问它时,密钥库返回Pribund。很明显我错过了什么,但我还没能找到另一个有同样问题的帖子。下面的代码: 我已经在密钥库的访问策略中注册了该函数,并授予它获取机密的权限,并且我已经为该函数启用了托管服务标识。我还缺了什么吗?我很茫然,为什么函数不能访问金库。

  • 我遇到了很多文章,很多文章建议使用OAuth over API密钥。据我所知,在OAuth中,我们最终获得了访问令牌,它的有效期为很多天。例如,QuickBooks online OAuth令牌的有效期为6个月。 因此,访问令牌等同于API Key。无论谁得到它,都应该像API密钥一样保护它。OAuth调用应该通过HTTPS进行,类似于基于API Key的调用。 相对于OAuth的另一个优势是授权

  • 为了发送和检索信封,我正在将我的应用编程接口后端与文档签名集成。我正在使用JWT Grant流。认证选项 在DocuSign开发环境中,我能够使用JWT流和DocuSign C#SKD检索访问令牌。然后我需要调用endpoint,以检索用于调用Docusign的基本uri字段。 当我提出GET请求时https://account-d.docusign.com/oauth/userinfo,包括授权

  • 使用KeyCloak时,访问令牌与用户信息令牌有何不同? 从OAuth2/OpenIDConnect中,我了解到访问令牌提供了用户已经通过身份验证的信息,您需要使用用户信息令牌来获取关于用户及其配置文件/角色等的更多信息。 当我看到访问令牌时https://jwt.io/而不是用户信息令牌。我能够获得与用户配置文件相同的信息 为什么会这样,使用Keycloak时访问令牌与用户信息令牌有何不同?

  • 我有一个Keycloak(独立)V1.9.4。最后在AWS实例上使用Wildfly 10安装安装程序,并尝试使用Keycloak(通过Keycloak的登录页面)和Twitter4j来验证Twitter用户,然后明显地让我的应用程序验证并查看用户的时间线等。 我已经配置了身份提供程序(Twitter)、领域和我的客户端应用程序。 我还在apps.Twitter.com上设置了一个Twitter应用

  • 我用http://localhost:8080/oauth2/authorization/google登录,并正常保存到google calendar。 获取访问令牌如下所示: 包含刷新标记。 但1小时后访问令牌过期,我不知道如何刷新它。无需重新登录。 使用长寿命刷新令牌获取新的访问令牌。 我在一个Spring发现了这个带有刷新令牌的谷歌OAuth2,但对我来说不起作用。