带有ADFS和Windows身份验证的.NET MVC5

懒人编码器

我正在为我们计划使用WIF 4.5在MVC5中构建的应用程序开发原型,该应用程序将针对ADFS服务器进行身份验证。到目前为止,我可以使用ADFS实施,但是存在一个要求,即允许内部网上的用户被动地对某个控制器(例如Admin控制器)进行身份验证,而外部用户将使用ADFS在Home控制器上进行身份验证。乍一看,我认为这将是一个简单的web.config设置,但是现在看来情况并非如此。

ADFS与应用程序不在同一个域上,但是我希望Windows身份验证在应用程序所在的域上进行。

我的问题是:A)是否可能,或者我是否正在尝试执行框架不打算处理的事情?B)我怎样才能做到这一点?

我尝试了几种不同的组合

<location path="Admin">
  <system.web>
    <!--Having this here throws an error-->
    <authentication mode="Windows"></authentication>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>`

<system.web>
  <authentication mode="None|Federated|Windows" />
  <authorization>
    <deny users="?" />
  </authorization>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" requestValidationMode="4.5" />
</system.web>

看来,如果强制执行任何身份验证,则始终是ADFS。在Visual Studio 2013中使用带有ASP.NET的本地组织身份验证选项(ADFS)来开始模板,并输入了管理员提供的元数据。因此,我的项目或多或少是该模板的原始实现,并进行了一些自定义,以使用从ADFS工作流程中获取的用户对象。

在位置节点中设置身份验证模式时,上面引用的错误是

使用超出应用程序级别注册为allowDefinition ='MachineToApplication'的节是错误的。此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的。

我收集的内容与没有将虚拟目录设置为IIS中的应用程序有关,但这不是理想的结果。此外,当我确实尝试遵循此错误时,我仍然无法正常进行身份验证。

稍作修改后,我发现实际上需要设置IISExpress设置(最终是IIS),这是可以的。所以加

<location path="WebApplication4/Admin">
    <system.webServer>
        <security>
            <authentication>
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="false" />
            </authentication>
        </security>
    </system.webServer>
</location>

到我的applicationhost.config确实开始提示浏览器输入用户名和密码,但我还发现

  <system.webServer>
    <modules>
      <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
      <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
    </modules>
  </system.webServer>

似乎最终会完全劫持我的身份验证,并迫使所有内容都通过ADFS服务器。我可以手动调用ADFS身份验证的方法,因此我想做的就是以某种方式告诉控制器不要使用它,而要使用Windows身份验证。看来,如果我只是将那些模块注释掉,但是它将破坏我的ADFS工作流程,但是它将在管理控制器上正确使用Windows身份验证。

朱利安·雅各布斯

您不能覆盖给定位置的身份验证方法。您的应用程序只能有一种身份验证方法。

对于Windows身份验证,除非托管该应用程序的服务器与您的Intranet用户位于同一域中,否则它将起作用。

如果Intranet中也有ADFS,则可以在2个ADFS实例之间建立联盟。然后,您可以对外部/内部用户进行身份验证。

对于您的授权规则,您将需要使用声明来授予对admin部分的访问权限。您需要添加一个声明转换模块,以在内部ADFS对用户进行身份验证时添加一个管理员角色声明,您可以使用该角色来设置控制器的权限。

如您所料,这不是一个简单的解决方案,如果您那里没有ADFS,则需要在内部进行更多基础结构设置。

另一种方法是在您的应用程序中配置您的内部用户。如果您只需要向少数用户授予访问权限,则这可能是一种更简单的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Windows身份验证和ASP.NET MVC 4中的表单身份验证的混合

来自分类Dev

使用Windows身份验证和OWIN的ASP.NET MVC5 / AngularJS / Web API应用

来自分类Dev

SignalR ASP.NET MVC5身份

来自分类Dev

了解ASP.NET MVC5的新身份验证机制

来自分类Dev

ASP.NET MVC5身份定制

来自分类Dev

使用托管在GoDaddy上的ASP.NET MVC5 OWIN身份验证在5分钟后过期

来自分类Dev

具有表单身份验证的ASP.NET MVC和具有基本身份验证的WebApi

来自分类Dev

如何使用MVC5 ASP.NET Identity Framework对SignalR .NET客户端进行身份验证

来自分类Dev

使用ADFS本地组织身份验证和Visual Studio 2013 localhost开发的MVC5 Web应用

来自分类Dev

带有Twitter新政策的ASP.NET MVC 5外部身份验证

来自分类Dev

如何将ASP.NET MVC5身份验证添加到现有数据库

来自分类Dev

如何使用ASP.NET MVC5 Windows身份验证对首次登录执行一次操作

来自分类Dev

ASP.NET MVC 5:应用程序池,Windows身份验证和Active Directory

来自分类Dev

使用ExternalLoginCallback进行身份验证如何获取UserId和UserName ASP.NET MVC5

来自分类Dev

ASP.NET 5 MVC 6中没有实体框架的身份验证和授权

来自分类Dev

在ASP.NET MVC5中使用自定义登录进行表单身份验证

来自分类Dev

覆盖Asp.net身份MVC5

来自分类Dev

SignalR ASP.NET MVC5身份

来自分类Dev

ASP.NET MVC5身份定制

来自分类Dev

使用托管在GoDaddy上的ASP.NET MVC5 OWIN身份验证在5分钟后过期

来自分类Dev

具有表单身份验证的ASP.NET MVC和具有基本身份验证的WebApi

来自分类Dev

带有ELMAH.MVC的ASP.NET MVC站点-Windows身份验证

来自分类Dev

身份:在两个不同的asp.net mvc5应用程序中的身份验证

来自分类Dev

如何使用ASP.NET MVC5 Windows身份验证对首次登录执行一次操作

来自分类Dev

ASP.NET MVC5身份实现

来自分类Dev

在ASP.NET MVC5中使用自定义登录进行表单身份验证

来自分类Dev

带有ViewModel的ASP.NET MVC5控制器CRUD(2个模型)

来自分类Dev

创建带有局部视图数据asp.net mvc5的弹出窗口

来自分类Dev

登录时的 ASP.NET MVC5 身份验证

Related 相关文章

  1. 1

    Windows身份验证和ASP.NET MVC 4中的表单身份验证的混合

  2. 2

    使用Windows身份验证和OWIN的ASP.NET MVC5 / AngularJS / Web API应用

  3. 3

    SignalR ASP.NET MVC5身份

  4. 4

    了解ASP.NET MVC5的新身份验证机制

  5. 5

    ASP.NET MVC5身份定制

  6. 6

    使用托管在GoDaddy上的ASP.NET MVC5 OWIN身份验证在5分钟后过期

  7. 7

    具有表单身份验证的ASP.NET MVC和具有基本身份验证的WebApi

  8. 8

    如何使用MVC5 ASP.NET Identity Framework对SignalR .NET客户端进行身份验证

  9. 9

    使用ADFS本地组织身份验证和Visual Studio 2013 localhost开发的MVC5 Web应用

  10. 10

    带有Twitter新政策的ASP.NET MVC 5外部身份验证

  11. 11

    如何将ASP.NET MVC5身份验证添加到现有数据库

  12. 12

    如何使用ASP.NET MVC5 Windows身份验证对首次登录执行一次操作

  13. 13

    ASP.NET MVC 5:应用程序池,Windows身份验证和Active Directory

  14. 14

    使用ExternalLoginCallback进行身份验证如何获取UserId和UserName ASP.NET MVC5

  15. 15

    ASP.NET 5 MVC 6中没有实体框架的身份验证和授权

  16. 16

    在ASP.NET MVC5中使用自定义登录进行表单身份验证

  17. 17

    覆盖Asp.net身份MVC5

  18. 18

    SignalR ASP.NET MVC5身份

  19. 19

    ASP.NET MVC5身份定制

  20. 20

    使用托管在GoDaddy上的ASP.NET MVC5 OWIN身份验证在5分钟后过期

  21. 21

    具有表单身份验证的ASP.NET MVC和具有基本身份验证的WebApi

  22. 22

    带有ELMAH.MVC的ASP.NET MVC站点-Windows身份验证

  23. 23

    身份:在两个不同的asp.net mvc5应用程序中的身份验证

  24. 24

    如何使用ASP.NET MVC5 Windows身份验证对首次登录执行一次操作

  25. 25

    ASP.NET MVC5身份实现

  26. 26

    在ASP.NET MVC5中使用自定义登录进行表单身份验证

  27. 27

    带有ViewModel的ASP.NET MVC5控制器CRUD(2个模型)

  28. 28

    创建带有局部视图数据asp.net mvc5的弹出窗口

  29. 29

    登录时的 ASP.NET MVC5 身份验证

热门标签

归档