问题标签 [security-context]
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.
vb.net - 在 vb.net 中以不同用户身份运行新进程
我目前正在使用本土方法在 Vista 中以不同用户的身份运行进程,我无法摆脱这种感觉,那就是它是 hack-ish 并且不太理想(除了它会破坏 UAC,让我的带有安全异常的应用程序,并迫使我完全禁用 UAC)。我的流程由两个项目(所以两个 EXE 文件)组成——一个“接口”和一个“启动存根”——这是流程:
- 用户有一个启动“Interface.exe notepad.exe”的快捷方式
- Interface.exe 有一个表单,询问他们想要使用的凭据
- Interace.exe 使用 ProcessStartInfo 作为新用户创建 LaunchStub.exe (LS) 的实例
- LS 使用 ProcessStartInfo(ShellExecute 设置为 true)来启动请求的文件,并且由于它已经作为请求的用户运行,因此新进程也是如此。
我有一个两步过程的原因是我希望用户能够右键单击操作系统对(.EXE、.SQL、.MSC 等)具有默认操作的任何文件并启动它,并且仅 ProcessStartInfo支持启用“UseShellExecute”,但该开关阻止我使用新凭据,所以我一次只能做一个。
这会导致一些问题 - 首先,用户必须已经存在于计算机上,这意味着他们之前必须在本地登录。如果该用户没有本地配置文件,则有时会启动所请求的应用程序,但我会收到注册表和配置文件异常,因为该应用程序希望存在尚不存在的事物(例如注册表中的 HKCU 配置单元,而用户不存在)因为他们从未登录过)。
我知道我应该能够将我的应用程序的权限“提升”给他们请求的用户,启动我的新进程,然后撤消提升,但我无法找到一个好的代码示例,并且我不确定它是否允许以完全不同的用户身份运行。这一切有意义吗?我只是不禁觉得有更好的方法来做到这一点。
更新:我刚刚尝试了一些我在网上找到的模拟代码,但无济于事。当与 ProcessStartInfo 结合使用时,它似乎仍然使用我当前的登录名来启动进程,而不是我提供的登录名,即使我已经使用提供的凭据激活了模拟。
windows-services - 服务无法访问映射的驱动器
我在许多论坛中读到,由于没有用户登录,因此无法从服务访问映射驱动器。
问题 1)我尝试将我的服务作为登录 - 作为某个帐户,我将我的网络驱动器映射到该帐户中。该服务仍然无法访问它。为什么?
问题 2)从同一个服务,我调用另一个进程。该进程将在哪个用户帐户下运行?
谢谢
sql-server - 确定当前正在进行的安全检查 (SQL Server)
除了 MS SQL Server 中的任何东西之外,我一直讨厌的一件事是安全性的工作方式。如果你觉得服务器很有趣,安全上下文会不断切换,而且通常很难(无论如何对我来说)预测或调试。
不过,在今天处理一个问题时,“我希望我可以在我的代码中添加一行,以显示 SQL Server 在此代码运行时使用的安全上下文。” 这样的命令存在吗?例如,SELECT security_context()
更清楚一点......如果我在一个存储过程中并且因此受制于 SP 所有者的安全上下文,那么我希望看到这一点。如果我在 sp_executesql 调用的代码中,并且它导致安全性位于 SQL Server 服务帐户的上下文中,那么我希望看到这一点。
至少那时我可能能够弄清楚为什么 SQL Server 认为我不应该访问某些东西。
谢谢!
例子
.net - CreateProcessAsUser 未正确设置用户
使用调用 GUI 应用程序
从 LocalSystem Windows 服务工作。窗口在用户屏幕中弹出,但进程用户仍然是LocalSystem。有什么办法可以改变吗?
PS根据要求,我hUserTokenDup
从
c# - C# SeviceSecurityContext.Current 未保留 QueueUserWorkItem
使用 ThreadPool.QueueuserWorkItem 委派线程时,ServiceSecurityContext.Current 不会持续存在(返回 null)。我调用的几个方法要求安全上下文在返回信息之前是有效的。
有没有办法创建一个将使用相同的安全上下文运行的线程?是否可以允许当前的安全上下文持续存在,或者是否需要设置线程特定的安全上下文?
security - 在父上下文与子上下文中声明 Spring Bean
我有一个 spring bean (dao) 对象,我通过以下 xml 在我的 ServletContext 中实例化它:
这个 bean 在我的 webapp-servlet.xml 文件中声明,并由我的应用程序在 ServletContext 中使用。
我也在使用 SpringSecurity。据我了解,这在不同的上下文(SecurityContext)中运行。
我的应用程序有一个 webapp-security.xml,我在其中实例化了一个自定义身份验证提供程序。我想使用我的应用程序中使用的 dao 在我的安全上下文中进行用户查找,但是当我运行时:
我收到错误说没有这样的bean“userDao”。bean 在我的其他上下文中声明的 bean 中自动装配很好,但不在我的安全上下文中。根据 Spring Docs,我相信 web.xml 中需要两个单独的上下文
所以我的问题是,我怎样才能访问我的 DAO,它位于我的 SecurityContext 中的 ServletContext 中?我的 dao 是否有范围修饰符,或者我可以在运行时在身份验证提供程序中以某种方式获取 ServletContext?作为参考,这是我想在身份验证提供程序中使用它的方式:
谢谢你向我解释这个
更新:
继续我的调查,似乎我正在使用我的 daos 的 DispatcherServlet 是一个子上下文,而安全上下文位于更高的位置。因此,我的 DispatcherServlet 中的 bean 不能被父上下文看到。我认为答案是以某种方式将我的 bean 声明移动到父应用程序上下文中,但我不知道该怎么做。这是我的 web.xml
我将我所有的 dao 创建移到 spring-dao.xml 中,在我的 spring-security.xml 中,我现在正在执行以下操作:
daos 仍然对 DispatcherServlet 上下文可见,但对我的 SecurityContext 不可见。
回答:
好吧,我想通了。以下是一些有用的链接:
http://static.springsource.org/spring-security/site/faq.html#faq-method-security-in-web-context
所以问题是我们需要确保 dao 存在于 ApplicationContext(更高的 spring 容器)中。为了确保发生这种情况,我将 web.xml 更改为:
我认为这将确保启动的第一个上下文加载器将读取我的 dao 配置(并创建我的 dao bean),然后是我的安全配置。由于 dao bean 是以这种方式创建的,因此我删除了 security.xml 中之前的“import resource="spring-dao.xml"” 语句,因为不再需要它。
在该上下文参数配置之后,我创建了 ContextLoaderListener。这是一个比 DispatcherServlet 更高级别的 spring 容器,所以我认为将它放在第一个将是第一个读取这些配置文件的人,然后他将创建 bean。然后,任何子上下文都可以访问它们。这可能不是它的工作方式,因为 DispatcherServlet 甚至可能不会读取 contextConfigLocation,但即使这样做,我认为此时 bean 已经被声明了,太糟糕了,父上下文拥有它们。
现在,为了另一个技巧......为了获得我的 DAO,我无法@Autowired 它。我不得不通过 XML 手动注入它:
当然,我在我的 dao 上创建了 getter 和 setter 方法,瞧!我不知道为什么 @Autowired 在这里不起作用。我认为这是设计使然。也许这是 SecurityContext 特有的(它不会从其他上下文中提取),或者@Autowired 通常只从当前上下文中提取,或者可能因为我通过 XML 创建了 bean,我还必须通过 xml 设置任何属性和不是通过注释?(注释已启用并在我的顶级应用程序命名空间中工作)。
无论如何..还有很多我不明白,但重要的是它终于开始工作了。
java - 我不知道使用什么 SecurityContextHolder 策略
我使用这样的代码进行身份验证:
我可以登录,它可以工作。我在日志中看到非空身份验证对象。然后我尝试浏览一些像这样的安全页面:
由于 getAuthentication(),它会抛出 NullPointerException。当我使用 SecurityContextHolder.MODE_INHERITABLETHREADLOCAL 和 SecurityContextHolder.MODE_INHERITABLETHREADLOCAL 时会发生这种情况,这与使用 SecurityContextHolder.MODE_GLOBAL 不同。
我究竟做错了什么?我不需要 SecurityContextHolder 的 MODE_GLOBAL 行为。
UPD:有时会出现问题,有时不会在同一个会话中。
c# - 在 C# 中使用 SSL (https) 使用 Web 服务
我想在 C# 中使用 ssl 安全 Web 服务。请求如下所示:
WSDL 中的端点声明如下所示:
app.config 如下所示:
我尝试使用该 C# 代码访问 Web 服务:
但是总是有meanclass()抛出的异常。在德语中它说:
“客户端身份验证”类型的异常 (...) 没有安全上下文。
我用谷歌搜索了很多,但还没有发现我做错了什么。如何制作这样的“安全上下文”?或者有什么问题?
javascript - 如何使用一组不同的凭据/安全上下文进行 Ajax 调用
我正在寻找是否可以使用与进行 AJAX 调用的页面不同的身份验证/安全/会话上下文对给定网站进行 AJAX 调用,但理想情况下使用/访问服务器上的相同 Web 应用程序(和身份验证方案)
例如:浏览器请求并接收https://web.server.com/admin_page.html(需要 AUTHENTICATION)并处理页面的 JavaScript,它指定了对类似https://web.server.com/server_info的 Ajax 调用.html(不需要凭据/身份验证)每 30 秒。
页面的 JavaScript 也会在一定时间后自动注销用户(基于服务器会话长度)。由于对服务器的每次调用都不会专门终止服务器端会话(例如最终的自动注销调用)本质上会重新启动用户的会话计时器,因此我希望能够继续进行 UNAUTHENTICATED server_info.html 调用每 30 秒一次,而不会影响用户的 AUTHENTICATED 服务器端会话。
我想我可以用服务器上的多个应用程序来做到这一点,这些应用程序碰巧访问相同的数据库和其他资源,但我更喜欢一种将它们全部保存在同一个应用程序中的方法。
我想问题是:为了做到这一点,我是否必须使用单独的服务器应用程序,或者我可以使用同一个应用程序,如果可能的话,它是否取决于所使用的服务器或应用程序技术?
session - 在多个 glassfish 服务器之间共享安全上下文
- 我的应用程序分布在多个组件(Web 应用程序)中。
- 这些组件部署在不同的 glassfish 服务器上。
- 每个 Glassfish 服务器都在不同的主机上运行。
我正在使用提供的安全领域进行身份验证。
有没有一种方法,已经在服务器 x 上通过身份验证的用户不需要在服务器 y 上再次进行身份验证(单点登录)?
我正在研究会话复制。但如果我正确理解集群,这意味着我必须将应用程序部署到整个集群(每个实例)。我需要的是一个物理分布式的解决方案。
我进行此设置的原因不是负载平衡或高可用性。这是客户的需求。
有什么想法或解决方法吗?谢谢!