问题标签 [asp.net-authorization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
authorization - 我可以根据用户凭据以编程方式确定要使用的数据库“上下文”吗?
这是对此处问题的跟进,其中答案似乎是指过于复杂和过于具体(EF,我没有使用 - 甚至没有使用 ORM)。
必须有一种比答案中暗示的烟雾、镜子和巫术更直接的方法来解决这种常见情况。
注意:我将“context”括在括号中,因为我没有使用 EF,所以它不是我在这里谈论的字面“dbcontext”。
所以我想知道:当用户通过身份验证和授权时,我可以为每个会话设置一个全局变量吗?
例如,当用户通过身份验证/授权时,我会知道应该为他提供哪些数据库上下文/内容。
因此,我似乎可以在 Global.asax.cs 的 Application_Start() 方法中设置一个值,然后更改 RepositoriesInstaller(实现 IWindsorInstaller)类以根据用户和他应该拥有的数据有条件地注册不同的具体存储库或放置条件代码在具体的存储库本身中使用这个或那个数据库实例。
这可行吗?一种方法(更改 RepositoriesInstaller / 更改具体的 Repositories 类)是首选吗?
web - 尽管设置了 Thread.CurrentPrincipal,但授权过滤器返回 401
我正在使用 HttpClient 和 HttpServer(内存中)运行集成测试。
当测试运行时,将执行令牌处理程序(消息处理程序),我添加此代码只是为了快速测试:
当我调试操作的控制器构造函数时,我会执行 base.User.Identity.IsAuthenticated 并将其设置为 TRUE。
我本来希望该操作会运行,因为 Thread.CurrentPrincipal 已设置。
为什么它不起作用?
asp.net - 带有用户 ID 和密码的 ADOMD.NET 连接字符串
从连接 SSAS 多维数据集的 asp.net Web 应用程序。需要将用户凭据传递给连接字符串。Web 应用程序使用 Windows 身份进行身份验证。Web 应用程序用户无权访问 SSAS,需要使用服务帐户凭据访问 SSAS。SSAS 服务未在 http 中公开。
有没有办法在 ADOMD.NET 连接字符串中传递用户凭据?
asp.net-mvc - 基于声明的系统中基于角色的授权
我正在使用 ASPNET 标识构建一个全新的 ASP.NET MVC 应用程序。我正在考虑是否同时使用基于角色和基于声明的混合。
混合的原因是:使用角色来控制更广泛的访问级别(定义组,例如新用户组、悉尼用户组),并基于声明来控制更复杂的访问级别,例如控制器、开发人员、测试人员)。
因此,如果我只想在悉尼用户组和开发人员级别进行控制,我可以同时使用角色和声明。
这听起来对吗,还是我应该只使用纯粹的基于声明的授权?
c# - 将 Windows 身份验证与声明混合
我觉得我可能在这里走错了路,并希望有人能够做一点路线修正!
我正在创建一个使用 Windows 身份验证的 Web 应用程序。但是,我希望将自定义声明/角色分配给特定的 Windows 用户,我计划将其存储在 SQL 数据库中。
我认为这样做的一种方法是在我的应用程序的 web.config 中启用 Windows 身份验证,但要从 WIF 添加一个 AuthenticationManager,它可以将自定义声明(直接来自数据库)添加到主体/身份。然后 AuthorizationManager 将处理对特定控制器操作的授权。
我现在遇到的问题是我的 Authentication 和 AuthorizationManagers 没有被调用。我不确定我缺少什么(它们已在 web.config 中注册),但我怀疑可能是因为我正在使用 Windows 身份验证......?此外,我的 Authorize 属性没有调用 AuthorizationManager,可能是因为我需要创建一个新属性。
这是一条可行的路线,还是我应该考虑创建一个自定义 RoleProvider ?
c# - 验证 ASP NET API 令牌?
背景
Visual Studio 2013,ASP NET WEB API 2
问题
我正在使用 .NET 的“标准”成员资格提供程序,但我需要自定义登录方法。所以我添加了一个新方法,然后我使用这个来生成令牌:
但是当我尝试使用在我的客户端中给出的这个令牌来使用一些“授权”服务时。我得到了一个未经授权的例外。如何验证此处给出的 Token 是否有效。
如果不是,我该如何生成一个有效的?
asp.net-mvc-routing - 未找到具有身份验证的 ASP MVC RouteConfig 返回错误存储库
我尝试使用我的 git 客户端在我的 asp 中进行授权,因此我的 git 客户端将被请求来自我的服务器的授权。当我尝试向我的 git 客户端发送请求时,它显示错误
这是我的路由配置
这是我使用属性的控制器:
然后这是我的属性 smartgit
asp.net - ASP.Net 中的 IIS URL 授权检查
我有一个在 IIS 7+ 下运行的 ASP.Net Web 表单应用程序当前使用 Windows 身份验证和 URL 授权保护整个应用程序,通过 IIS 在 web.config 中配置。.NET 不关心用户是谁,目前没有配置文件或角色或任何东西。
我希望添加一个附加页面(在子文件夹中),该页面可供部分用户访问,因此我将修改 web.config,如下所示:
然后,客户可以自由添加或删除他们认为合适的 AD 组。但是,就目前而言,属于 AppXUsers 组但不在 AppXPowerUsers 组中的用户仍会显示指向 mySubFolder 中页面的链接。当他们单击链接时,他们应该被拒绝访问。
有什么方法可以检测当前用户是否可以访问“mySubFolder”?
我觉得在这个阶段引入 User/RoleManagement 有点矫枉过正——应用程序不需要存储与用户相关的任何信息,它不关心用户是谁,除了“他们是否可以访问这个页面”,目前在 IIS 阶段处理。
c# - 使用 Siteminder 进行 ASP.NET 身份验证
我们的网站目前设置为使用 Windows 身份验证。当请求到达我们的代码时会自动设置用户安全主体,并且对特定文件的授权由我们的 web.config 中的授权元素控制。
我们现在被要求在我们的服务器上安装 siteminder 来处理身份验证。因此,不会自动设置用户安全主体,并且我们未经修改的代码不知道用户是谁来确定授权。
我开发了以下代码来解决该问题。它从 siteminder 注入请求的标头中获取用户名,并创建用户安全主体。
只要将 IIS 上的 AppPool 的标识设置为作为 LocalSystem 运行,此代码就可以正常工作。但是,如果您将 AppPool 的标识设置为具有较少权限的任何其他内容,例如 NetworkService 或 ApplicationPoolIdentity,您会收到以下错误消息。
“/Form1”应用程序中的服务器错误。
试图执行未经授权的操作。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.UnauthorizedAccessException:试图执行未经授权的操作。
ASP.NET 无权访问请求的资源。考虑向 ASP.NET 请求标识授予对资源的访问权限。ASP.NET 有一个基本进程标识(通常是 IIS 5 上的 {MACHINE}\ASPNET 或 IIS 6 和 IIS 7 上的网络服务,以及 IIS 7.5 上配置的应用程序池标识),如果应用程序不是模拟的,则使用该标识。如果应用程序通过 模拟,则身份将是匿名用户(通常是 IUSR_MACHINENAME)或经过身份验证的请求用户。
要授予 ASP.NET 对文件的访问权限,请在资源管理器中右键单击该文件,选择“属性”并选择“安全”选项卡。单击“添加”以添加相应的用户或组。突出显示 ASP.NET 帐户,然后选中所需访问权限的复选框。
源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[UnauthorizedAccessException:试图执行未经授权的操作。]
System.Security.Principal.WindowsIdentity.get_AuthenticationType() +300 System.Web.Hosting.IIS7WorkerRequest.SetPrincipal(IPrincipal user, IntPtr pManagedPrincipal) +181
System.Web.HttpContext.SetPrincipalNoDemand( IPrincipal principal, Boolean needToSetNativePrincipal) +701
System.Web.HttpContext.set_User(IPrincipal value) +49
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +182 System.Web.HttpApplication.ExecuteStep(IExecutionStep step , 布尔值和完成同步)+266-------------------------------------------------- ------------------ 版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.1022
此外,服务器上的事件查看器也显示了这一点。
应用程序“/Form1”中的 Web 事件提供程序“EventLogProvider”引发了以下异常(在应用程序生命周期中,每个提供程序实例最多记录一个异常):
System.UnauthorizedAccessException:试图执行未经授权的操作。
在System.Web.Management.EventLogWebEventProvider.AddWebRequestInformationDataFields(ArrayList dataFields, WebRequestInformation reqInfo) 在 System.Web.Management.EventLogWebEventProvider.ProcessEvent(WebBaseEvent eventRaised) 在 System.Web.Management的 System.Security.Principal.WindowsIdentity.get_AuthenticationType() 。 WebBaseEvent.RaiseInternal(WebBaseEvent eventRaised,ArrayList 触发规则信息,Int32 index0,Int32 index1)
根据这篇文章(Web 事件提供程序“EventLogProvider”引发了以下异常),我认为问题一定是我的代码试图写入 EventLog 但没有权限。但是,按照文章中概述的步骤 ( http://support.thycotic.com/KB/a220/giving-application-pool-access-to-event-log.aspx ) 仍然不起作用。
我希望有人能告诉我,我的代码在服务器上试图做什么,而 ApplicationPoolIdentity 无权执行,并且我们可以弄清楚需要向 ApplicationPoolIdentity 授予哪些额外权限。
c# - ASP.NET MVC 自定义角色提供程序不起作用
我已经使用下面的代码设置了一个自定义角色提供程序,但它似乎从未被使用过,而是使用了默认提供程序。[Authorize(Roles = "Administrator")]
当使用属性装饰 HomeController 时,CustomRoleProvider
正在调用构造函数(我只包含构造函数以查看是否会命中断点),但没有调用任何方法。然后我只剩HTTP Error 401.0 - Unauthorized
下一页。
除了向 web.config 添加必要的位之外,我没有做任何其他事情来让 Windows 身份验证正常工作。我认为它正在工作,因为如果我不包含<allow users="*"></allow>
(显然没有包含Authorize
属性)我会收到一个401.2.: Unauthorized: Logon failed due to server configuration
错误,所以我假设我正在通过身份验证。
我已经按照这个 SO 帖子清除了我的浏览器 cookie,但这没有任何效果。
客户角色提供者
网络配置
家庭控制器