我有一个Azure功能,该功能已启用身份验证并设置为需要身份提供程序:
应用程序服务身份验证:已启用限制访问:需要身份验证未经身份验证的请求:返回HTTP 401未经授权的令牌存储:启用
身份提供程序-应用程序(客户端)ID(已删除的应用程序的名称):客户端ID已删除客户端密码设置名称:Microsoft提供程序身份验证密码
当我使用Power Automate POST到HTTP函数时,它可以工作。这告诉我安全性已经设置好,并且按预期工作。当我尝试使用桌面直接从PowerShell POST到函数时,我得到了401未授权。这是一个GCCH环境。
这是PowerShell代码,我在这里获得了一个誓言令牌,并试图使用它来POST到HTTP函数。我尝试使用带有和不带有“code=”的HTTP URL,但都不起作用。
#These URLs are used to access get the token; scope has not been required is uses the app ID
$loginURL = "https://login.microsoftonline.us"
$resource = "https://graph.microsoft.us"
$Tenant = "mytenant.onmicrosoft.us"
$ClientID = "removed"
$Secret="removed"
$fcnKey = "removed"
$fcnURL = "https://removed?" #Azure function url without the code at the end
$AuthBody = @{
grant_type="client_credentials";
resource=$resource;
client_id=$ClientID;
client_secret=$Secret}
$Oauth = Invoke-RestMethod -Method POST -Uri $loginURL/$Tenant/oauth2/token?api-version=1.0 -Body
$AuthBody -ContentType "application/x-www-form-urlencoded"
$AuthToken = @{
'Authorization'="$($Oauth.token_type) $($Oauth.access_token)";
'Content-Type' = "application/json";
'x-functions-key' = $fcnkey;}
#This returns a 401 unauthorized
Invoke-RestMethod -Headers $AuthToken -Uri $fcnURL -Method POST
#This also returns a 401 unauthorized
$AuthToken = @{
'Authorization'="$($Oauth.token_type) $($Oauth.access_token)";
'Content-Type' = "application/json";}
$FullURL = "https://removed?code=removed"
Invoke-RestMethod -Headers $AuthToken -Uri $fullURL -Method POST
1条答案
按热度按时间bfnvny8b1#
正如@jdweng 建议的那样,请检查此MS Doc Azure AD身份验证流中的身份验证类型和授权过程。
检查以下步骤是否有助于解决问题: