2017-04-09 11 views
0

残りのAPIで認証を受けるのに苦労しています。私はSpring Bootとmavenを使用してまとめました。私はまったく認証されることができません。ここでスプリングブートの完全な認証の問題 - どこが間違っているのかわからない

は私の現在のセキュリティ設定です:

@Configuration 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
@EnableWebSecurity 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.authorizeRequests() 
      .antMatchers("/", "/person/getAll").permitAll() 
      .anyRequest().authenticated(); 
    } 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth.inMemoryAuthentication() 
      .withUser("user").password("password").roles("USER"); 
    } 
} 

、ここでは、 "/人/のgetAll" エンドポイント...今

@RequestMapping("/getAll") 
List<Person> getAllPeople() 
{ 
    log.info("Getting all users in system."); 
    return repository.findAll(); 
} 

は、私がここに持っているもの、そのエンドポイントであるということです(セキュリティ設定のperminAllセクションに記載されているため) -

しかし、今私は "ROLE_USER" rを持っていなければなりません私の人のリストを取り戻すために。

私はこのメソッドの上に@PreAuthorise( "hasRole( 'ROLE_USER')")を追加しようとしましたが、403レスポンスになります。これは本当に期待していませんでしたすべて。私はそれが私には、以下のカールのいずれかのコマンドを実行して見ることができるようになる考え出しデータ:みんなの健全性のために

curl --user user:password localhost:8080/person/getAll 

または

curl user:[email protected]:8080/person/getAll 

- 現在、この質問(Iに記載されているように私は、コードを使用する場合データを取り戻す - パスワードが間違っていても、haha)

長期的には、私の目標は実際にメモリのものを取り除き、通常のクエリを実行して認証情報を取得することですが、今。

+0

ここには役立つかもしれない投稿があります。 antMatchers( "/")の前に '.antMatchers("/person/getAll ")。hasRole(" ROLE_USER ")'を入れたいと思うでしょう。antMatchersの順序はhttp: //stackoverflow.com/questions/43052745/how-to-fix-role-in-spring-security/43055173#43055173 – jmw5598

答えて

0

私はちょうどSpring Bootとmavenを使用して、残りのAPIで認証されることに問題があります。 私はまったく認証できません。

私はあなたがあなたのページを訪問したときに場所を取るために持っているしたいセキュリティの種類、あなたの春のセキュリティ設定ファイルで指定されていませんでしたので、あなたがすべてで認証できないと考えています。

たとえば、httpBasicまたはformLoginのセキュリティを選択できます。今

、私がここに持っているもの、実際に動作するエンドポイントである - をしかし、(私はそれがセキュリティ設定のperminAllセクションに記載されているので)それが認証されていないです -

例の場合あなたは春のセキュリティ設定でhttpBasicを追加します場合は、HTTP基本認証、を取得しますファイルが、あなたはどのようなセキュリティメソッドを指定しないとき、あなたは任意の認証を取得していないでしょう

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.httpBasic() 
     .and() 
     .authorizeRequests() 
     .antMatchers("/", "/person/getAll").permitAll() 
     .anyRequest().authenticated(); 
} 
+0

ありがとう!!これはまさに私が必要としていたものです。 – MickeyThreeSheds

関連する問題