2015-03-31 101 views
1

我有一个托管在Azure上的c#应用程序。我已经配置了应用程序,通过用户的Microsoft帐户使用外部验证,这很好。但是,当我在web.config文件中添加授权节点(它定义了“拒绝用户=”?“)时,没有区别 - 用户可以看似浏览网站是否已登录。如果他们选择,他们可以使用他们的MS帐户登录,并且工作正常。Azure授权vs owin和web.config

因此,考虑到这一点,我发现了Azure中的授权功能,该功能允许我使用Azure Active Directory并通过Azure管理门户强制执行网站身份验证,该门户也可以正常工作。但是现在我无法访问我的角色定义。

因此,我现在有点困惑,我的第一个问题是,有谁知道为什么web.config中的授权元素没有效果?

其次,我认为应用程序中的外部auth提供程序完全独立于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> 
+0

粘贴您的确切web.config部分 - 授权和身份验证,以及您的system.webserver中的任何模块defitions。 – astaykov 2015-03-31 19:50:28

+0

以下是web.config部分: <授权> <允许用户=” * “/> <拒绝用户=”?“/> <删除name =“FormsAuthenticationModule”/> dobestar 2015-03-31 20:51:47

+0

你有有趣的配置。首先将它设置为Forms,然后从服务器中删除FormsAuthenticationModule。那么,当您删除FormsAuthenticationModule并将身份验证设置为[表单]时,毫无疑问每个人都可以访问该网站而不会被提示输入用户/密码。 – astaykov 2015-03-31 21:28:32

回答

0

你混合授权的模式。既然你使用OWIN和C#,我会假设你的应用程序是一个MVC应用程序。您应该通读Getting Started with Asp.Net Identity的详细文章和样本。这些示例很容易遍历并部署到Azure以测试不同的身份验证/授权方法。

+0

它实际上是web表单,仍然试图找出如何在authorize属性不起作用的情况下执行身份验证 – dobestar 2015-04-01 19:08:52