问题标签 [pre-authentication]

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 回答
271 浏览

java - Spring Security 动态访问评估器

我希望 Spring 安全性可以阻止访问动态 URL 更改

http://domain.com/ /** shareURL 是一个 ID,我遇到的问题是,如果我使用 shareID 1 访问,程序告诉我需要登录(一切正常)但是当我登录时尝试运行 shareID 2,程序应该再次告诉我重新登录,因为不是我的会话,但是现在..程序允许我访问这个shareID。

如何在不登录的情况下阻止该用户更改 shareID?

我也在使用预身份验证,因为如果特定的 shareID 不需要密码,spring security 会通过身份验证以避免登录页面并注入假身份验证。如果这是最好的问题

ShareID 1(不需要密码) ShareID 2(需要特定密码)

如果我使用共享 1 登录(无需密码自动登录),我可以访问共享 ID 2(因为我已登录)但不应该这样做。

Spring-security.xml(仅问题配置)
-->

我想我需要一个额外的配置来告诉 Spring Security,如果用户更改 shareID 需要登录,例如,如果我可以实现正确的方法来拦截器 URL 示例

拦截 url 模式="/share/**" 访问="hasRole('ROLE_SHARE') && sameShareIDLogged()"

对不起我的英语不好,我现在只是学习。

0 投票
1 回答
2614 浏览

java - 如何在 Spring Security 中将未找到的标头异常重定向到登录页面

我正在使用 spring security siteminder 实现解决方案。如果在请求中找不到标头,我可以检查标头中的 SM_USER 我想将请求重定向到登录页面。我该怎么做?我是 spring 新手

配置是:

0 投票
1 回答
143 浏览

spring - 使用 Spring Security 的 @PreAutorize 注释问题

@PreAuthorize在 Spring Security 3 中不起作用。

这是我的代码快照。

它给了我奇怪的错误(参考附件) 在此处输入图像描述

0 投票
0 回答
385 浏览

java - 身份验证单点登录弹簧

我有以下单点登录场景:

  1. 单击门户上的 Web 应用程序链接 (http) 获取 sso 集成页面。
  2. sso 集成页面在浏览器上出现了一段时间..然后它会自动 (http) 将数据发布到带有隐藏字段的网络应用程序
  3. Web 应用接收请求,从请求参数中提取用户信息
  4. Web 应用程序对 sso 集成进行 Web 服务调用以查看用户是否处于活动状态
  5. 在收到积极响应后,Web 应用程序显示页面。

我在 spring security 中使用扩展 AbstractPreAuthenticatedProcessingFilter 的 preauthentication 过滤器,我已经覆盖了这个函数:

函数 getUserName 执行步骤 3 和 4。

当我使用第 2 行(而不是第 1 行)时,一切正常,用户可以看到 Web 应用程序页面。当我使用第 1 行并对其进行调试时,提取的用户名与第 2 行中的相同,没有任何异常,但用户收到 HTTP 错误代码 404。在第 3 行,两个场景具有相同的值。

我完全不知道为什么会发生这种情况或错误在哪里?:( 谁能指出我正确的方向?

更新:我收到的 Http 404 响应是这样的:

在浏览器中刷新页面时,用户已登录并能够看到该页面。jsessionid 在刷新的情况下不作为 url 参数存在,但是当我使用第 2 行时,jsessionid 是否作为 url 参数存在?我无法理解这种行为。

0 投票
0 回答
873 浏览

filter - 具有摘要身份验证的 Spring Security 自定义预身份验证过滤器

我有一个使用摘要身份验证的应用程序。除了 Digest 方法之外,我还想通过检查自定义 HTTP 标头来自定义身份验证过程。如果请求中存在标头,则应像以前一样进行身份验证,否则应拒绝用户。我试图通过定义一个自定义的预身份验证过滤器来做到这一点,但不知何故它不能与 Digest 过滤器一起使用。

Preauthentication 过滤器成功,但我仍然得到 401 结果。

如果我取消注释

那么预认证过滤器被忽略。

0 投票
1 回答
4427 浏览

authentication - 通过预身份验证过滤器登录或在 Spring Security 中使用表单登录

我正在寻找一种方式,您可以通过两种方式访问​​我的网站。

1)您应该能够使用表单登录并获得您的权限并使用该网站。

2)您应该能够登录到另一个网站,并且在那里您应该能够按下带有令牌的链接并登录到我的网站。(我控制两个网站,它们使用相同的数据库)

第 1 阶段已完成并且运行良好,我已将第 2 阶段制作为类似于此https://stackoverflow.com/a/9919988/1915913的内容,并且效果也很好,我得到了一个令牌,我能够验证它并登录.

但我的问题是,我怎样才能让它们同时为我工作,为相同的资源工作。我很确定我知道问题出在哪里,我创建了一个自定义过滤器并尝试使用表单登录过滤器。那行不通,但可以吗?还是有其他方法可以获得此功能?

这在预授权过滤器似乎接管并且我无法正常登录的情况下不起作用,并且每次我进入项目中的新页面时它似乎都会调用预授权过滤器。

我为此使用的类都非常简单。

我的安全应用上下文:

我的用户详细信息服务

}

我的预授权过滤器

0 投票
1 回答
751 浏览

grails - Grails 预认证场景

我正在尝试使用 Spring Security Core在预身份验证场景中配置 Grails 应用程序。

所以我写了一个自定义的身份验证过滤器:

将其添加到 Spring:

并在 BootStrap 中注册,位置为 PRE_AUTH_FILTER:

Config.groovy 只有标准的 User、Role 和 UserRole 类名,外加一些 staticRules。

在过滤器内部,我尝试从它的方法返回各种东西getPreAuthenticatedPrincipal():用户 ID、作为字符串的用户 ID、用户名、用户对象本身……我可以看到每个请求都调用了我的过滤器(这就是我想要 set checkForPrincipalChanges = true) 无论我从它返回什么,当前用户仍然是匿名的:springSecurityService.principal仍然是__grails.anonymous.user__

我需要在我的设置中进行哪些更改,以便能够使用他们现有的组和角色对我的用户进行身份验证?我不想编写额外的身份验证提供程序,我对 Grails 的标准很好daoAuthenticationProvider。我需要从我的过滤器中返回特定的东西吗?我需要设置其他一些 Spring 类吗?

0 投票
1 回答
16443 浏览

java - 如何在 Spring Boot 中设置基于预认证头的认证?

我的应用程序从 Oracle Access Manager SSO 获得一个带有用户名的 AUTH_USER 请求标头。Spring Security “Additional Topics” 2.2.1 有一个“PreAuth”示例,这似乎是我需要的,但不是一个完整的工作示例。

以下片段来自文档/示例,不适用于基于注释的配置。

Siteminder 示例配置 - 使用带有RequestHeaderAuthenticationFilterPreAuthenticatedAuthenticationProvider以及 UserDetailsS​​ervice 的 XML 来查找用户。

这如何映射到基于 Java 的配置?

Spring Security preauth 示例具有完全不同的设置(XML 配置更加令人生畏)。没有提及预授权过滤器或如何设置标头名称。

spring-boot-sample-web-secure 扩展了 WebMvcConfigurerAdapter 而不是 WebSecurityConfigurerAdapter,并且只进行基本的基于表单的登录,没有关于如何从 pre-auth AUTH_USER 标头获取用户 ID 的信息。

我已经阅读了许多参考资料/文章,但它们似乎与当前代码和 Spring-boot 无关,因此一直试图了解如何配置应用程序预授权安全性。

0 投票
1 回答
1274 浏览

spring-security - Spring Security - Preauthentication - 数据库中定义的授权和设置角色

我们的应用程序的身份验证是通过 siteminder 代理进行的,但授权是通过我们的应用程序控制的。

我正在使用 org.springframework.security.web.authentication.preauth.RequestHeaderAuthenticationFilter 来检查标题。我还定义了 UserDetailsS​​ervice 来加载用户详细信息。

我还需要为用户设置角色,以便我可以使用 spring 安全标签库和其他 spring 方法来检查角色并显示选项。

我该如何实施?

我在我的用户详细信息服务实现中尝试了以下语句,但似乎不起作用。

我还阅读了有关 AbstractPreAuthenticatedProcessingFilter 类的信息,但看起来这对于此目的可能没有用。

在这个问题上的任何帮助都将非常有帮助。

谢谢!

0 投票
1 回答
3038 浏览

java - Spring Security HeaderPreAuthentication Principal 未从 @AuthenticationPrincipal 解析

我有一个现有的 Spring Boot 应用程序,它对由第三方身份验证服务处理的 Web 应用程序进行身份验证。与 SiteMinder 一样,第 3 方服务将标头注入 HTTP 请求,例如 USER_HEADER。我的任务是配置现有应用程序以提取此 HTTP 标头并通过 Spring Security@AuthenticatedPrincipal注释使生成的 Auth 对象可用于 MVC 层的控制器。

如前所述,项目是一个 Spring Boot 应用程序,版本 1.1.9.RELEASE,带有 Java 8。

(下面显示的代码来自一个反映功能的测试项目)

请注意,此应用程序仅是 Java Config。不允许使用 XML(来自我的领导的授权)

通过深入研究Spring Security 参考和其他各种文章,我知道我需要使用 aRequestHeaderAuthenticationFilter并将其注入过滤器链以从请求标头中获取用户名。

筛选:

如您所见,非常基本的过滤器。

使用我现在拥有的代码,用户从 HTTP 请求中提取,通过 PreAuthentication 过程进行,其中 PreAuthenticatedAuthenticationToken 由自定义 AuthenticationManager 创建,用户业务对象作为主体注入令牌,最终令牌分配给 SecurityContext:SecurityContextHolder.getContext().setAuthentication(principal);

但是,当我用 注释我的控制器方法时@AuthenticationPrincipal User user,返回的用户对象是一个空的用户对象。当我将方法参数更改为Authentication user并显式调用时user.getPrincipal(),我得到了用户对象就好了。@AuthenticationPrincipal 像这样失败有什么原因吗?

谢谢,如果需要更多详细信息,请告诉我!