如何从SPNEGO内标识获取角色名称?

编程入门 行业动态 更新时间:2024-10-26 10:26:42
本文介绍了如何从SPNEGO内标识获取角色名称?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试从Active Directory返回的SPNEGO令牌中获取角色名称,以便与Spring Security授权一起使用。我使用kerb4j进行身份验证,因为我的理解是它可以通过使用this code从令牌中获取组(即角色)信息(而不是后续的ldap查询)。

在我的Spring Web安全配置中,我有以下内容:

class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Value("${app.service-principal}") private String servicePrincipal; @Value("${app.keytab-location}") private String keytabLocation; @Override protected void configure(HttpSecurity http) throws Exception { http.exceptionHandling() .authenticationEntryPoint(spnegoEntryPoint()) .and() .authorizeRequests().antMatchers("/", "/home").permitAll() .antMatchers("/hello").access("hasRole('ROLE_ADMIN')") .anyRequest().authenticated() .and() .formLogin().loginPage("/login").permitAll() .and() .logout().permitAll().and() //spring .addFilterBefore(spnegoAuthenticationProcessingFilter(authenticationManagerBean()), BasicAuthenticationFilter.class); } @Bean public SpnegoAuthenticationProvider kerberosServiceAuthenticationProvider() { SpnegoAuthenticationProvider provider = new SpnegoAuthenticationProvider(); provider.setTicketValidator(sunJaasKerberosTicketValidator()); provider.setExtractGroupsUserDetailsService(new ExtractGroupsUserDetailsService()); provider.setServerSpn(servicePrincipal); return provider; } ExtractGroupsUserDetailsService仅获得SID,如(S-1-2-20-132925241-12333...)而不是AD组名称,例如ADMIN。如何编写ExtractGroupsUserDetailsService来提取组的名称?此信息在SPNEGO内标识中可用吗?

更新

简单地将hasRoleSpel中的Role_admin替换为SID不起作用。

更新2

给定的SID字符串与传递到hasRole中的SID字符串不匹配,因为hasRole追加了传入的字符串。将ExtractGroupsUserDetailsService更改为前缀&Role_&Quot;更改为SID(例如,Role_S-1-2-20-132925241-12333...)后,匹配起作用。

尽管如此……如何在ExtractGroupsUserDetailsService而不是SID中获取组名(例如admin)?

推荐答案 ExtractGroupsUserDetailsService仅获取SID,如(S-1-2-20-132925241-12333...)而不是AD组名称,例如ADMIN。如何编写ExtractGroupsUserDetailsService来提取组的名称?此信息在SPNEGO内标识中可用吗?

否,Kerberos PAC仅包含SID,不包含名称。(Windows访问控制从不基于名称。)您仍需要对这些内容进行LDAP搜索。

更多推荐

如何从SPNEGO内标识获取角色名称?

本文发布于:2023-11-25 08:51:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1629120.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:标识   角色   名称   SPNEGO

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!