C# MVC web应用中的混合身份验证模式(匿名和windows)
我已经试过了,到目前为止还没有这样的运气来实现我所需要的 我们的网络上有一个MVC应用程序。在内部,它应该使用windows身份验证,我们在许多视图/控制器上使用C# MVC web应用中的混合身份验证模式(匿名和windows),c#,asp.net-mvc,authentication,C#,Asp.net Mvc,Authentication,我已经试过了,到目前为止还没有这样的运气来实现我所需要的 我们的网络上有一个MVC应用程序。在内部,它应该使用windows身份验证,我们在许多视图/控制器上使用[AuthorizeByRole(param[]Role roles)]属性 但是,我们还需要外部用户能够访问该应用程序。我们有没有广告认证的承包商和医生,加上移动应用程序使用匿名后端API 我需要做的是: 内部用户:使用windows身份验证自动登录,非常简单 外部用户:挑战windows凭据(确实如此)-如果他们点击“取消”,他们将
[AuthorizeByRole(param[]Role roles)]
属性
但是,我们还需要外部用户能够访问该应用程序。我们有没有广告认证的承包商和医生,加上移动应用程序使用匿名后端API
我需要做的是:
内部用户:使用windows身份验证自动登录,非常简单
外部用户:挑战windows凭据(确实如此)-如果他们点击“取消”,他们将成为匿名用户,并且仍然可以查看应用程序
现在发生的情况:点击cancel会使他们重定向到标准asp.net 401页面,而不是查看来宾页面。此外,移动后端只会自动获得401,根本无法访问API
有什么想法吗
更多信息
在我的web.config中,我有:
在我的API控制器中,我将[AllowAnonymous]
放在控制器和我的GetKey
方法上
在我的手机上,我进入/api/Auth/GetKey,我面临广告认证的挑战。当我点击“取消”时,我被重定向到401页。您必须单独修改控制器操作,而不是整个控制器。对于只有AD用户才能执行的操作,请使用[Authorization],并将其他方法保留为匿名用户未修饰的操作。如果控制器使用[Authorization]
属性修饰,则可以通过使用[AllowAnonymous]
属性修饰,将该控制器内的各个方法排除在授权之外
阅读更多关于它的信息
另一方面,您也可以从控制器中删除[Authorize]
属性,只标记需要授权的方法。请查看我的更新。我尝试了各种各样的方法,但似乎没有任何效果yet@Para尝试在web.config中注释掉
部分。已验证的应按预期工作(只要控制器和方法标记了各自的Authorize
或AllowAnonymous
属性)。已尝试此操作。双重检查控制器/方法上的[Authorize]-现在所有用户,即使是内部用户,都是匿名的:/@Para这似乎不太正确。你可以把你的一个控制器贴在发生这种情况的地方吗。您可以省略方法体和任何与业务相关的内容。主要是属性很重要。好的,这是一个更接近。。。。我在我们使用的Authorize属性覆盖中遗漏了一些内容。不过,下一个问题是,当我从外部访问该站点时,我并没有被要求提供凭据,只是被作为匿名/来宾传递到该站点