【问题标题】:Authorization in Azure vs owin and web.configAzure 与 owin 和 web.config 中的授权
【发布时间】: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


【解决方案1】:

您正在混合授权模式。由于您使用的是 OWIN 和 c#,因此我假设您的应用程序是 MVC 应用程序。您应该阅读Getting Started with Asp.Net Identity 的详细文章和示例。这些示例很容易通过并部署到 Azure 以测试不同的身份验证/授权方法。

【讨论】:

  • 实际上是网络表单,由于授权属性不起作用,仍在试图弄清楚如何强制执行身份验证
猜你喜欢
  • 2016-07-29
  • 2011-09-28
  • 2014-05-24
  • 1970-01-01
  • 2016-09-14
  • 2010-10-13
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多