问题标签 [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.
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()"
对不起我的英语不好,我现在只是学习。
java - 如何在 Spring Security 中将未找到的标头异常重定向到登录页面
我正在使用 spring security siteminder 实现解决方案。如果在请求中找不到标头,我可以检查标头中的 SM_USER 我想将请求重定向到登录页面。我该怎么做?我是 spring 新手
配置是:
spring - 使用 Spring Security 的 @PreAutorize 注释问题
@PreAuthorize
在 Spring Security 3 中不起作用。
这是我的代码快照。
它给了我奇怪的错误(参考附件)
java - 身份验证单点登录弹簧
我有以下单点登录场景:
- 单击门户上的 Web 应用程序链接 (http) 获取 sso 集成页面。
- sso 集成页面在浏览器上出现了一段时间..然后它会自动 (http) 将数据发布到带有隐藏字段的网络应用程序
- Web 应用接收请求,从请求参数中提取用户信息
- Web 应用程序对 sso 集成进行 Web 服务调用以查看用户是否处于活动状态
- 在收到积极响应后,Web 应用程序显示页面。
我在 spring security 中使用扩展 AbstractPreAuthenticatedProcessingFilter 的 preauthentication 过滤器,我已经覆盖了这个函数:
函数 getUserName 执行步骤 3 和 4。
当我使用第 2 行(而不是第 1 行)时,一切正常,用户可以看到 Web 应用程序页面。当我使用第 1 行并对其进行调试时,提取的用户名与第 2 行中的相同,没有任何异常,但用户收到 HTTP 错误代码 404。在第 3 行,两个场景具有相同的值。
我完全不知道为什么会发生这种情况或错误在哪里?:( 谁能指出我正确的方向?
更新:我收到的 Http 404 响应是这样的:
在浏览器中刷新页面时,用户已登录并能够看到该页面。jsessionid 在刷新的情况下不作为 url 参数存在,但是当我使用第 2 行时,jsessionid 是否作为 url 参数存在?我无法理解这种行为。
filter - 具有摘要身份验证的 Spring Security 自定义预身份验证过滤器
我有一个使用摘要身份验证的应用程序。除了 Digest 方法之外,我还想通过检查自定义 HTTP 标头来自定义身份验证过程。如果请求中存在标头,则应像以前一样进行身份验证,否则应拒绝用户。我试图通过定义一个自定义的预身份验证过滤器来做到这一点,但不知何故它不能与 Digest 过滤器一起使用。
Preauthentication 过滤器成功,但我仍然得到 401 结果。
如果我取消注释
那么预认证过滤器被忽略。
authentication - 通过预身份验证过滤器登录或在 Spring Security 中使用表单登录
我正在寻找一种方式,您可以通过两种方式访问我的网站。
1)您应该能够使用表单登录并获得您的权限并使用该网站。
2)您应该能够登录到另一个网站,并且在那里您应该能够按下带有令牌的链接并登录到我的网站。(我控制两个网站,它们使用相同的数据库)
第 1 阶段已完成并且运行良好,我已将第 2 阶段制作为类似于此https://stackoverflow.com/a/9919988/1915913的内容,并且效果也很好,我得到了一个令牌,我能够验证它并登录.
但我的问题是,我怎样才能让它们同时为我工作,为相同的资源工作。我很确定我知道问题出在哪里,我创建了一个自定义过滤器并尝试使用表单登录过滤器。那行不通,但可以吗?还是有其他方法可以获得此功能?
这在预授权过滤器似乎接管并且我无法正常登录的情况下不起作用,并且每次我进入项目中的新页面时它似乎都会调用预授权过滤器。
我为此使用的类都非常简单。
我的安全应用上下文:
我的用户详细信息服务
}
我的预授权过滤器
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 类吗?
java - 如何在 Spring Boot 中设置基于预认证头的认证?
我的应用程序从 Oracle Access Manager SSO 获得一个带有用户名的 AUTH_USER 请求标头。Spring Security “Additional Topics” 2.2.1 有一个“PreAuth”示例,这似乎是我需要的,但不是一个完整的工作示例。
以下片段来自文档/示例,不适用于基于注释的配置。
Siteminder 示例配置 - 使用带有RequestHeaderAuthenticationFilter和PreAuthenticatedAuthenticationProvider以及 UserDetailsService 的 XML 来查找用户。
这如何映射到基于 Java 的配置?
Spring Security preauth 示例具有完全不同的设置(XML 配置更加令人生畏)。没有提及预授权过滤器或如何设置标头名称。
spring-boot-sample-web-secure 扩展了 WebMvcConfigurerAdapter 而不是 WebSecurityConfigurerAdapter,并且只进行基本的基于表单的登录,没有关于如何从 pre-auth AUTH_USER 标头获取用户 ID 的信息。
我已经阅读了许多参考资料/文章,但它们似乎与当前代码和 Spring-boot 无关,因此一直试图了解如何配置应用程序预授权安全性。
spring-security - Spring Security - Preauthentication - 数据库中定义的授权和设置角色
我们的应用程序的身份验证是通过 siteminder 代理进行的,但授权是通过我们的应用程序控制的。
我正在使用 org.springframework.security.web.authentication.preauth.RequestHeaderAuthenticationFilter 来检查标题。我还定义了 UserDetailsService 来加载用户详细信息。
我还需要为用户设置角色,以便我可以使用 spring 安全标签库和其他 spring 方法来检查角色并显示选项。
我该如何实施?
我在我的用户详细信息服务实现中尝试了以下语句,但似乎不起作用。
我还阅读了有关 AbstractPreAuthenticatedProcessingFilter 类的信息,但看起来这对于此目的可能没有用。
在这个问题上的任何帮助都将非常有帮助。
谢谢!
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 像这样失败有什么原因吗?
谢谢,如果需要更多详细信息,请告诉我!