问题标签 [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.

0 投票
1 回答
938 浏览

java - 如何在安全上下文中以编程方式验证和创建会话

嗨,我有一个应用程序使用自己的实现进行用户身份验证,通过在 HttpSession 中保存用户 pojo 并在会话完成时使该 HttpSession 对象无效,但我想要做的是使用安全上下文来验证用户. 假设我有 servlet AuthenticateUserServlet:

上面的代码不会给我安全上下文的力量所以我不想要的是当我检查用户是否可以登录时以某种方式告诉这个用户可以访问的安全上下文是他在我里面的角色AuthenticateUserServlet:

我已经创建了自己的 LoginModule(“my-jaas”),当我将基于表单的身份验证配置为在 tomcat7 中使用它时,它工作正常。

0 投票
0 回答
40 浏览

java - Oracle:如何以编程方式检查用户是否分配了给定资源?

我有一个用例,我想测试用户是否有分配给他的特定资源。我正在使用下面的代码,但即使用户拥有该资源,它也会返回 false。

任何帮助将不胜感激。

0 投票
1 回答
616 浏览

authentication - 使用 Dropwizard 身份验证手册

我目前在我的应用程序中使用http://www.dropwizard.io/1.1.0/docs/manual/auth.html# Dropwizard-Authentication。但我喜欢“手动”进行身份验证,这意味着来自未经过身份验证的 REST 接口上的特定登录/注销 API 调用。

是否有可能将 REST 调用转发到身份验证?

提前谢谢

0 投票
3 回答
513 浏览

java - Java Spring 并不清楚应该从 SecurityContext 的 getDetails 中得到什么

我怎么能确定今天和未来版本的 Spring 会返回什么?我没有找到有关此的文档。我怎样才能确定 Spring 决定分配给该字段的内容?

据此,可以期待西班牙宗教裁判所

0 投票
1 回答
59 浏览

java - 泽西上传文件时我无法授权用户

在默认函数中,我可以用来ContainerRequestContext requestCtx从请求中获取安全上下文和用户名。

但是由于某种原因,在消耗的函数中使用它时,MediaType.MULTIPART_FORM_DATA我收到了这个错误:

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.

代码:

没有ContainerRequestContext requestCtx上面的代码就可以了。

从我那里获取数据ContainerRequestContext并同时上传文件的最佳方式是什么?

0 投票
1 回答
5560 浏览

java - 如果我禁用授权,如何在测试中模拟安全上下文

我有这样的测试:

在测试中,我禁用了身份验证/授权

但在代码中我使用以下内容:

但这就是测试失败的原因。

我如何模拟我的测试?

附言

这个不行:

SecurityContextHolder.getContext().getAuthentication()在代码中返回 null

还有这个:

0 投票
2 回答
12191 浏览

sql-server - SQL Server:服务器主体在当前安全上下文/windows 身份验证下无法访问数据库以进行登录

我看到了像这样的其他几个问题,但没有人能解决我的问题。

我有一个 SQL 2016 Express 和一个数据库mydatabase。我使用创建了一个登录名,Windows Authentication并使用了我的 AD 用户domain\myuser。在mydatabase-> 安全 -> 用户中,我创建了一个名为myuser(用户类型 = Windows 用户,登录名 = domain\myuser)的用户。默认架构是 dbo,我在 Securables 菜单中添加mytable并赋予了以下权限:Alter、Delete、Insert、Select 和 Update。

如果我以 身份打开 SQL Management Studio domain\myuser,连接到该 SQL 服务器,然后运行use mydatabaseselect * from mytable一切正常。

现在,使用 vbscript,从运行 as 的命令提示符domain\myuser,它将失败。myscript.vbs脚本的相关部分是这样的:

这将失败:

我尝试database=mydatabase在 SQL 连接字符串中添加,但它也不起作用。

看了其他问题的一些答案,有人要求在SQL Management Studio中运行如下命令:

不清楚是 db_owner 还是受影响的用户,所以我同时运行了这两个。使用 db_owner 结果是列UserNameUserSID空,而domain\myuser它说:

Integrated Security在脚本连接字符串中的部分是否错误?我该如何解决这个问题?

0 投票
2 回答
6006 浏览

java - 具有默认系统身份验证/用户的 SecurityContext

在我的 spring 应用程序中,我希望 aSecurityContext始终持有一个Authentication. 如果它不是一个常规的UsernamePasswordAuthenticationToken,它将是一个PreAuthenticatedAuthenticationToken描述“系统用户”。这在需要用户的不同系统功能中是有原因的。如果没有用户上下文,为了避免特殊处理,我只想添加系统上下文。恕我直言,这也与单一责任原则有关。

为此,我可以简单地实现我自己的SecurityContextHolderStrategy并将其设置为SecurityContextHolderwithSecurityContextHolder.setStrategyName(MyStrategyClassName);

现在解决问题:

默认SecurityContextHolderStrategy值为 ThreadLocalSecurityContextHolderStrategy. 我对这个策略及其运作方式感到满意。我唯一要改变的是getContext()方法。

这是不可能的,因为ThreadLocalSecurityContextHolderStrategy不是public。当然,我可以简单地将代码复制粘贴ThreadLocalSecurityContextHolderStrategy到我自己的代码中,SecurityContextHolderStrategy然后按照我想要的方式实现该getContext()方法。但这给了我一种感觉,因为我可能走错了路。

我如何才能将“系统用户”Authentication作为新用户的默认设置SecurityContext

更新

我上面的方法显然不是一个解决方案,因为它极具侵入性,会创建冗余代码并且需要在 Web 过滤器链中进行特殊处理。但它应该让我了解我的目标。我正在寻找一种解决方案,该解决方案尽可能无缝地与本机 Spring 安全实现相匹配。我的问题是我对侵入性方法非常固定。这怎么能很好地解决?我无法想象我是第一个有这个要求的人。还是整个概念完全错误?

0 投票
0 回答
624 浏览

java - 在安全上下文中发送附加信息

我正在使用 oauth2,并且我有一个授权服务器和一个(单独的)资源服务器。客户端从授权服务器获取令牌,然后使用该令牌向资源服务器发出请求。当资源服务器从授权服务器获取 SecurityContext 时,我想添加其他信息。目前它获取用户的用户名,我也想添加用户 ID。在授权服务器中,我有以下设置:

其中 CurrentUser 定义如下:

}

在资源服务器中,我试图将主体转换为 CurrentUser,但主体只是一个字符串。好像没有发送。你知道我错过了什么吗?

资源服务器(一个单独的应用程序)配置如下:

在资源服务器的属性文件中,我有验证令牌的必要信息:

0 投票
2 回答
23064 浏览

kubernetes - Kubernetes、安全上下文、fsGroup 字段和运行容器的默认用户组 ID

我是 Kubernetes 的新手,我正在尝试了解一些安全知识。

我的问题是关于运行容器的用户的组 ID(= gid)。

我使用这个官方示例创建了一个 Pod:https ://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod

在文档中,他们说:

在配置文件中,runAsUser字段指定对于 Pod 中的任何容器,第一个进程以用户 ID 1000 运行。fsGroup 字段指定组 ID 2000 与 Pod 中的所有容器相关联。组 ID 2000 还与安装在 /data/demo 的卷以及在该卷中创建的任何文件相关联。

所以,我进入容器:

我看到第一个进程(即 PID 1)正在以用户 1000 => OK 运行,这就是我所期望的行为。

然后,我在文件夹 /data/demo 中创建了一个文件“testfile”。此文件属于组“20​​00”,因为 /data/demo 在组权限上具有“s”标志:

然后,我创建一个子文件夹“my-folder”并删除组权限上的“s”标志。我在此文件夹中创建了一个文件“my-file”:

我很惊讶这个文件属于组“root”,即 GID 0 的组。根据文档中的这句话,我预计它应该属于组“20​​00”:

fsGroup 字段指定组 ID 2000 与 Pod 中的所有 Container 相关联

使用以下命令,我看到容器中 UID 为“1000”的用户具有主 Unix 组“0”,而不是 2000。

有没有人有一些解释?

为什么用户的 GID 没有设置为 Pod 的安全上下文中“fsGroup”字段的值?

为什么用户的 GID 设置为 0 = root?

它是 Kubernetes 中的错误(我使用的是 v1.8.0)吗?

我误解了文档吗?

谢谢!