来自 SIteminder 的每个请求的 SM_USER(以及静态请求)

Posted

技术标签:

【中文标题】来自 SIteminder 的每个请求的 SM_USER(以及静态请求)【英文标题】:SM_USER for every requests from SIteminder (Static requests as well) 【发布时间】:2020-05-30 06:29:15 【问题描述】:

Siteminder 将 SM_USER (userId) 发送回应用程序以处理所有请求,包括静态资源请求。除了指定的 Url,我们不需要在每个请求标头中都使用 userId。 谁能帮助如何在 Spring boot+Siteminder 配置中避免这种情况?

下面使用 Siteminder 过滤器,

@覆盖 受保护的无效配置(HttpSecurity http)抛出异常 http.addFilterBefore(siteminderFilter(), RequestHeaderAuthenticationFilter.class) …… ……

@豆 公共 RequestHeaderAuthenticationFilter siteminderFilter() 抛出异常 RequestHeaderAuthenticationFilter 过滤器 = new RequestHeaderAuthenticationFilter(); filter.setPrincipalRequestHeader(smEmpID); filter.setAuthenticationManager(authenticationManagerBean()); filter.setCheckForPrincipalChanges(true); filter.setExceptionIfHeaderMissing(false); 返回过滤器;

谢谢。

【问题讨论】:

我需要避免从所有静态请求头中读取 userId。 您可以忽略静态资源的模式,例如:@Override public void configure(WebSecurity web)web.ignoring().antMatchers("/resources/**", "/static-files/**"); 我们仍然看到同样的问题,谢谢 它造成了什么问题,你是如何发现它的? 【参考方案1】:

您可以在 ACO 中设置 DisableUserNameVars=No,它将停止发送 SM_USER

对于您需要用户 ID 的网址,您可以使用用户 ID 设置自定义标头,例如 HTTP_SM_USER。

请注意,根据文档,不建议在应用程序中使用 SM_USER。

对于少数其他应用程序(例如与 SAP 或其他应用程序集成),您必须拥有 SM_USER,因此您无法逃脱。

【讨论】:

以上是关于来自 SIteminder 的每个请求的 SM_USER(以及静态请求)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SiteMinder 受保护的环境中处理 CORS 预检请求?

从 C# 桌面应用程序到受 Siteminder 保护的服务器的 HTTP 请求

Apache Shiro(授权)+ SiteMinder(认证)

Grails、Spring Security 和 Siteminder - 资源或用户详情问题

如何为 Pivotal Cloud Foundry 托管的 JSP/Servlet 应用程序从 SiteMinder 会话注销?

json elastic:获取SiteMinder配额更新