Allow/Deny 位用户在 Azure 应用服务中使用 web.config

Allow/Deny users using web.config in Azure app service

我有一个应用程序服务,其中包含如下所示的 3 个虚拟路径。

Virtual path                 Physical path            Type
/                            site\wwwroot             Application
/app2                        site\wwwroot\app2        Application
/app3                        site\wwwroot\app3        Application

如何使用 web.config 通过 Azure 安全组控制对我的站点的访问?我有 3 个安全组,我想允许访问如下。

允许 sg1 访问我的根 /

允许 sg2 访问我的根目录 & /app2

允许 sg3 访问我的根目录 & /app3

在我的本地 IIS 盒中,我能够执行类似下面的操作来控制访问。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <customErrors mode="Off"/>
        <authentication mode="Windows"/>
        <authorization>
            <allow roles="GLOBAL\sg1"/>
            <deny users="*"/>
        </authorization>
    </system.web>
    <location path="app2">
        <system.web>
            <authorization>
                <allow roles="Global\sg1"/>
                <allow roles="Global\sg2"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </location>
    <location path="app3">
        <system.web>
            <authorization>
                <allow roles="Global\sg1"/>
                <allow roles="Global\sg3"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </location>

</configuration>

我可以在 Azure 应用服务中复制这个吗?

我尝试了一个简单的基本案例,如下所示。我可以转到我的 /,因为它没有限制,但我在浏览 /app2

时收到错误 The page cannot be displayed because an internal server error has occurred.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <location path="app2">
        <system.web>
            <customErrors mode="Off"/>
            <authentication mode="Windows"/>
            <authorization>
                <allow roles="GLOBAL\sg1"/>
                <allow roles="GLOBAL\sg2"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </location>
</configuration>

请帮忙:(

Can I replicate this in Azure app services?

不,您不能,因为您描述的是 Active Directory 行为。应用服务未与 AD 集成。

下一个最好的方法是 Azure AD 身份验证,但这将需要更改代码并且最终看起来完全不同:https://docs.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad