2017-03-09 4 views
-1

검증되지 않고, 내가 MYGlobalAuthenticationConfigurerAdapter 이 같은 만든봄 부팅 기본 인증 사용자 이름은 내가 봄의 보안 안돼서

그것을 밖으로 시도하는 나의 봄 부팅 응용 프로그램에 대한 기본 인증을 만들었습니다

@Value("${username}") 
    String username; 

    @Value("${password}") 
    String password; 

    @Override 
    public void init(AuthenticationManagerBuilder auth) throws Exception { 
     auth.userDetailsService(userDetailsService()); 
    } 

    @Bean 
    public UserDetailsService userDetailsService() { 
     return new UserDetailsService() { 

      @Override 
      public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { 
       return new User(username, password, true, true, true, true, 
         AuthorityUtils.createAuthorityList("USER")); 
      } 
     }; 
    } 
을 내가 속성에서 사용자 이름과 암호를로드

참고 파일 및 I 값

이 같은

및 MyWebSecurityConfigurerAdapter에 대해 검증 :

,
@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.authorizeRequests().anyRequest().fullyAuthenticated().and(). 
    httpBasic().and(). 
    csrf().disable(); 
} 

@EnableWebSecurity 주석이있는.

나는 사용자 이름과 암호를 사용하여 내 웹 서비스 중 하나에 내가 요청이 사용자 이름이 내 속성

답변

1

이 파일에 넣어 것과 동일하지 않은 경우에도 검증 사용자 이름을 변경할 때마다 연결하는 우편 배달부 시도 어떤 경우에도 인수에서받은 것과는 아무런 관련없이 User 객체를 반환하기 때문입니다. 다음 코드를 사용해보십시오 :

@Value("${username}") 
    String username; 

    @Value("${password}") 
    String password; 

    @Override 
    public void init(AuthenticationManagerBuilder auth) throws Exception { 
     auth.userDetailsService(userDetailsService()); 
    } 

    @Bean 
public UserDetailsService userDetailsService() { 
    return new UserDetailsService() { 

     @Override 
     public UserDetails loadUserByUsername(String name) throws UsernameNotFoundException { 
      if(name.equals(username)){ 
       return new User(username, password, true, true, true, true, 
        AuthorityUtils.createAuthorityList("USER")); 
      }else{ 
       throw new UsernameNotFoundException("Could not find the user '" + name + "'"); 
      } 

     } 
    }; 
} 

UPDATE

사용자가 있지만 loadUserByUsername() 메소드 내에서 사용자 생성에 사용하는 경우에만 암호, 모든 암호에 의해 검증되지 않습니다. 이 방법에서는 사용자 이름과 반환 값으로 만 사용자를 찾고 인증은 여기서는 수행되지 않지만 봄에 내부적으로 인증이 이루어지며 사용자가 생성 한 패스워드와 패스워드가 일치하는 패스워드와 일치합니다 의뢰. 또한 액세스하는 URL에 대한 사용자의 역할을 확인하고 URL이 특정 역할에 매핑 된 경우 해당 역할을 가진 사용자에게 액세스 권한이 부여되고 다른 모든 역할에 대해서는 액세스 거부 응답이 전송됩니다. 따라서 암호로 사용자를 인증하지 않습니다.

+0

제 질문은 @md zahid raza를 참조 할 수 있습니까? https://stackoverflow.com/questions/46065063/spring-boot-basic-authentication –