首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Az模块或Az/CLI设置unauthenticatedClientAction

无法使用Az模块或Az/CLI设置unauthenticatedClientAction
EN

Stack Overflow用户
提问于 2020-04-28 14:46:54
回答 1查看 482关注 0票数 2

我设计了一个PowerShell脚本,它能够正确地配置函数应用程序(包括CORS )的各种设置。函数应用程序工作,可以从Api管理服务调用。

当需要配置Azure AD时,我使用了Az/CLI来准确地复制我使用Portal 所做的事情(以及手动设置的完全工作)。但是它停止工作,APIM返回HTTP状态代码401 (未经授权)。

脚本中配置Azure AD的部分如下:

代码语言:javascript
复制
# $add is a simple class that contains value to be configured
# actually AllowedTokens is always empty
if ($aad) {
    'Setting Function App AAD configuration.' | Write-Verbose
    $allowedTokens = if ($aad.AllowedTokens) { "--aad-allowed-token-audiences $($aad.AllowedTokens -join ' ')"  } else { '' }
    "az webapp auth update --name $name --resource-group $group --enabled $($aad.Enabled.ToString().ToLower())" +
        " --action LoginWithAzureActiveDirectory --aad-client-id $($aad.ClientId) --aad-client-secret $($aad.ClientSecret)" +
        " --token-store true" +
        " --aad-token-issuer-url $($aad.TokenIssuerUrl) $allowedTokens" |
        Invoke-Expression
    'Function App AAD configuration set.' | Write-Verbose
}

第一件奇怪的事是如果我禁用身份验证/授权,

我保存设置,启用和再次保存,一切都开始工作。

所以我重新开始并启动了脚本。我已经查过资源了。

az auth showunauthenticatedClientAction设置为RedirectToLoginpage

az resource showunauthenticatedClientAction设置为null

当我完成上面描述的技巧时:

az auth showunauthenticatedClientAction设置为AllowAnonymous

az resource showunauthenticatedClientAction设置为null

因此,我认为这是使函数应用程序正常工作的重要区别(或者更好地说,这是正确配置它的方法)。

由于我在其他设置中成功地使用了此方法,所以我尝试使用Az/CLI设置该属性:

代码语言:javascript
复制
az resource update --name web --resource-group $group --namespace Microsoft.Web --resource-type config `
    --parent "sites/$funcName" --set properties.siteAuthSettings.unauthenticatedClientAction=AllowAnonymous

作为响应返回的JSON显示什么都没有改变。检查资源可以确认这一点。

还有一件事,当我导出资源组时,我无法在任何函数应用程序模板中看到任何unauthenticatedClientAction

unauthenticatedClientAction设置为AllowAnonymous的正确方法是什么

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 09:16:23

首先,回答您的问题,要将unauthenticatedClientAction设置为AllowAnonymous,只需使用

代码语言:javascript
复制
az webapp auth update --name <functionapp-name> --resource-group <group-name> --action AllowAnonymous

实际上,当您在门户中执行此操作时,它将更改

这是unauthenticatedClientAction设置。

那么问题就来了,我不确定你是否想用azure AD来保护你的天蓝色功能。因为当您将unauthenticatedClientAction设置为AllowAnonymous时,您的函数将允许匿名请求,因此Azure不会生效。

当需要配置Azure AD时,我使用了Az/CLI来准确地复制我使用Portal所做的事情(以及手动设置的完全工作)。但是它停止工作,APIM返回HTTP状态代码401 (未经授权)。

是的,401错误表示Azure AD auth效果,如果您启用Azure auth(设置为Log in with Azure Active Directory),则需要为客户端/用户获取访问令牌,然后使用令牌访问函数。(不知道如何在APIM中实现它,我不是APIM方面的专家:-)

有关更多细节,您可以检查这个博客和这个帖子

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61483051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档