QC集成LDAP指南

1. 用户导入设置

 

    登录 QC 后台site administration,如下图点击“LDAP Import Settings”。这个设置主要是在qc里面设置要与LDAP集成的各项参数用来从LDAP server导出用户到QC中。

 

 在下图中我们要输入LDAP的URL基本格式为:

如果是非加密访问:ldap://<ldap_server>:389

如果是加密访问: ldaps://<ldap_server>:636

对于有些LDAP服务器不开放匿名访问,这个时候我们需要输入访问的用户名和密码,如果开放匿名访问我们就可以选择匿名访问。

 

    当设置好URL和认证用户信息以后,我们可以点击“Test Connection”来测试设置是否正确,如果正确则会出现如下成功提示框。

  
    在下一步中我们就要设置过滤条件,这个根据LDAP的目录结构来设置过滤条件,基本原则是越top的目录越放在后面。默认情况下,是将整个目录结构全部显示出来。下图所示我们过滤到了人(people)这一层。如果组织LDAP用户比较少的话我们就不用设置过滤条件(用默认的),当用户信息量非常多的时候设置过滤条件就显得非常的重要,否则进行导入操作就需要花费很长的时间,甚至会Timeout。

 

     设置好filter后可以点击“Advanced…”到下面这一非常关键步骤,“Username”字段必须和LDAP server上唯一标示用户的字段(这里是uid)相对应,如果不清楚该填什么请咨询LDAP管理员或者借助第三方的工具(比如LDAP Browser)来查看。

 

 2. 导入用户

     当我们设置好导入用户的各项参数后,我们就可以点击如下按钮开始导入用户信息到QC中。

 

    从如下图中我们可以看到QC从LDAPServer那边将符合条件的用户列表给我们显示出来,我们可以选中将要导入的用户(勾选)然后点击Import按钮导入用户。如果将要导入的用户在QC里面已经存在,QC给我们相应的选择(update/rename/skip)来解决具体的冲突。

 

 

 

 

3. 设置认证方式

       如果用户都成功导入到QC以后,我们就可以改变整个QC用户的登录认证方式,点击下图所示的“AuthenticationSettings”按钮。

 

        在如下的图示中我们就可以选择让用户登陆QC 的时候用什么认证方式。默认情况下是“Quality Center”模式,如果确实需要和LDAP集成,我们可以选择第二个选项并且填入LDAP的URL。

 

 

        当我们将QC的认证方式改成LDAP模式后,在如下图中我们看到刚刚导入的用户具体信息中多了“DomainAuthentication”字段,里面填的就是该用户在LDAP Server端的信息。完成以上步骤后,QC就和LDAP集成起来了。所有的用户再登陆QC就必须使用LDAP的账号和密码。

 

4. 注意事项

     前面的步骤我们简单的说明了如何将LDAP和QC集成使用,在实际操作过程中我们还会遇到很多的问题,下面我列出了两个常见的问题及其解决办法。

a>    Q: 修改QC认证方式后所有的用户都不能登陆QC(包括Project 和site Administration)

      A: 出现这个问题主要有两方面的原因,其一,LDAP设置没有设对,详细情况请参见第三步;其二,如果单单是无法进入Site Administration, 那是因为没有将具体的从LDAP导入的用户设置成SiteAdministrator。解决的办法如下:

 

      Step1: 用system帐户登陆QC数据库,执行如下SQL 语句将QC认证方式改回到QC自身认证方式

      update qcsiteadmin_db.paramst set t.param_value='QualityCenter' where t.param_name='authentication';

   commit;

 

      Step2:用原来的Site Administrator 登录QC后台重新检查并且设置相关参数

 

b>    Q:设置好filter后,在导入用户的时候,每个用户前面没有checkbox可供勾选。

A:  出现这个问题的原因是在设置如下图“User Name” 字段mapping的时候和LDAPServer端标示用户的字段不匹配所致,具体的解决办法是找LDAP管理员帮忙将正确的自端填入重新导入即可。

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Spring Boot 中,可以使用 Spring LDAP 来实现 LDAP 认证。具体步骤如下: 1. 配置 pom.xml,引入 Spring LDAP 相关依赖: ```xml <dependency> <groupId>org.springframework.ldap</groupId> <artifactId>spring-ldap-core</artifactId> <version>${spring-ldap.version}</version> </dependency> ``` 2. 配置 application.yml,设置 LDAP 连接信息: ```yaml spring: ldap: urls: ldap://localhost:389 base: dc=my-domain,dc=com username: cn=Manager,dc=my-domain,dc=com password: password ``` 3. 实现 LdapUserDetailsMapper,将 LDAP 用户信息映射为 Spring Security User 对象: ```java @Component public class LdapUserDetailsMapper implements UserDetailsContextMapper { @Override public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> authorities) { String password = (String) ctx.getObjectAttribute("userPassword"); List<GrantedAuthority> grantedAuthorities = new ArrayList<>(); for (GrantedAuthority authority : authorities) { grantedAuthorities.add(new SimpleGrantedAuthority(authority.getAuthority())); } return new User(username, password, grantedAuthorities); } @Override public void mapUserToContext(UserDetails user, DirContextAdapter ctx) { throw new UnsupportedOperationException("Not supported yet."); } } ``` 这里将 LDAP 中的 "userPassword" 属性作为密码,LDAP 中的权限信息作为 Spring Security 的 GrantedAuthority 对象,最终将它们封装为一个 User 对象。 4. 配置 WebSecurityConfigurerAdapter,实现 LDAP 认证: ```java @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private LdapUserDetailsMapper ldapUserDetailsMapper; @Autowired private Environment env; @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .antMatchers("/user/**").hasRole("USER") .anyRequest().authenticated() .and() .formLogin() .and() .logout(); http.csrf().disable(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.ldapAuthentication() .userSearchBase(env.getProperty("spring.ldap.user-search-base")) .userSearchFilter(env.getProperty("spring.ldap.user-search-filter")) .groupSearchBase(env.getProperty("spring.ldap.group-search-base")) .groupSearchFilter(env.getProperty("spring.ldap.group-search-filter")) .contextSource() .url(env.getProperty("spring.ldap.urls")) .managerDn(env.getProperty("spring.ldap.username")) .managerPassword(env.getProperty("spring.ldap.password")) .and() .userDetailsContextMapper(ldapUserDetailsMapper); } } ``` 这样就可以通过 LDAP 认证来控制访问权限了。在这个例子中,请求 "/admin/**" 的用户需要拥有 ADMIN 角色,请求 "/user/**" 的用户需要拥有 USER 角色,其他请求需要认证通过即可访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值