ASP.Net应用程序中的混合Windows + Forms身份验证。寻求建筑建议

时间:2016-03-09 12:35:43

标签: asp.net authentication owin wif katana

我想实现混合Windows&为我们的ASP.NET Web应用程序表单身份验证我已经看到了几种方法的细节,一些在Stackoverflow上,从简单的重定向到OWIN解决方案看起来非常可怕,老实说我无法跟踪发生的事情!我真的可以使用一些建筑建议了!

目前,我们有几个Web应用程序(都在一个根域下)都使用表单身份验证。用户被重定向到单个身份验证应用程序,该应用程序验证其凭据并检查他们是否已被授予对要使用的应用程序的访问权限。 Web服务器面向公众,托管在外部数据中心的DMZ中。

我希望登录到我们公司AD的用户能够访问这些应用程序,而无需通过表单身份验证。非公司用户(如客户或未登录AD的公司用户)(例如,在客户所在地使用计算机的员工)将被发送到表单进行身份验证。

回顾我到目前为止所读到的内容:

  • 简单重定向。

此类方法 - https://msdn.microsoft.com/en-us/library/ms972958.aspxhttp://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/ - 仍然使用表单身份验证。但是登录URL目标是使用Windows身份验证保护的aspx页面。经过域身份验证的用户可以访问此页面,因此可以解除Windows用户名并用于创建普通表单票证。非域用户将获得401权限被拒绝错误,IIS被配置为将此类错误重定向到正常的身份验证表单。

这似乎是一种简单的方法,但我想(a)它对我不起作用,因为Web服务器位于DMZ中,无法访问我们的AD,以及(b)大多数对此技术的引用似乎都很旧,所以我猜这是一种过时的方法。

  • Windows Identity Foundation。

我非常喜欢这种方法。我已经阅读了Pluralsight上的一些材料,但我们没有涵盖我们的确切要求。我们有AD FS 2.0(我很快就会更新到3.0)。是否可以将域用户定向到充当STS的AD FS来获取令牌,但是非域用户是否可以通过DMZ中的简单STS进行用户名/密码身份验证?从图中我看到,WIF可以信任多个STS,但是用户是否可以自动定向到特定的STS,具体取决于例如IP地址或区分内部/外部访问的其他方式?

另外,我已经看过很多关于这个主题的Powerpoint,但有人可能会指出我的一些具体例子的方向,因为我似乎无法找到任何。

  • OWIN /卡塔纳。

这似乎是现在最受欢迎的方式,新的ASP.NET项目从一开始就添加了这个。我再次看了一些Pluralsight视频。我遵循了请求管道和中间件的想法(我已经使用了很多BizTalk,因此这个概念很熟悉)。但是当我获得身份验证中间件时,我失去了这个阴谋。我将不得不重新访问这些材料。我确实发现这段代码表明它符合我的要求 - https://github.com/MohammadYounes/MVC5-MixedAuth/tree/WindowsFirst - 但说实话,这超出了我的理解范围。

有人可以告诉我Katana是否可以用来实现我想要的,以及是否有比此示例代码中使用的更简单的方法?

所以,总的来说,我想我可以使用一些关于我应该使用哪种方法的建议。或者,还有更好的方法?提前谢谢。

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是安装ADFS代理/ WAP。

然后使用拆分DNS,外部用户重定向到代理(FBA),内部用户重定向到内部ADFS(IWA)。

WIF / OWIN等的问题在于它们会让您进入ADFS,但它们无法确定ADFS的身份验证方式。