【发布时间】:2015-03-31 17:26:18
【问题描述】:
我有一个托管在 Azure 上的 c# 应用程序。我已将应用程序配置为通过用户的 Microsoft 帐户使用外部身份验证,这可以正常工作。但是,当我在 web.config 文件中添加授权节点时,它定义了“拒绝用户 =”?如果他们愿意,他们可以使用他们的 MS 帐户登录,而且效果很好。
因此,我在 Azure 中发现了授权功能,它允许我使用 Azure Active Directory 并通过 Azure 管理门户强制对站点进行身份验证,这也可以正常工作。但现在我无法访问我的角色定义。
所以我现在有点困惑,我的第一个问题是,有谁知道为什么 web.config 中的授权元素没有效果?
其次,我是否认为应用程序中的外部身份验证提供程序完全独立于 Azure 身份验证提供程序,因此使用一个系统比另一个系统有优势吗? OWIN 可以使用角色,这是一个优势 - 除了易于打开/关闭之外,使用 Azure 身份验证还有其他优势吗?
相关配置部分
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="60" defaultUrl="~/" protection="All"/>
</authentication>
<authorization>
<allow users="*"/>
<deny users="?"/>
</authorization>
</system.web>
<system.webServer>
<modules>
<remove name="FormsAuthenticationModule" />
</modules>
</system.webServer>
</configuration>
【问题讨论】:
-
粘贴您的确切 web.config 部分 - 授权和身份验证,以及 system.webserver 中的任何模块定义。
-
这里是 web.config 部分:
-
你有有趣的配置。首先将其设置为 Forms,然后从服务器中删除 FormsAuthenticationModule。好了,当你去掉FormsAuthenticationModule 并且Authentication 设置为Forms 时,难怪每个人都可以在不提示输入用户/密码的情况下访问该站点。
-
嗨,这部分是在某个时候自动添加的,可能是在 VS 中创建项目时。我确实尝试从 web.config 中删除 'remove name="FormsAuthenticationmodule" 元素,但它似乎没有任何区别。我会再试一次。
-
我再次从 web.config 中删除了 'remove name="FormsAuthenticationmodule" 元素并再次尝试,但是当我访问该站点时它仍然不会强制登录
标签: asp.net authentication azure authorization owin