0

OAuth2(リソースサーバーとして)で正しく動作するスプリングブートアプリケーションがあります。カスタムconfigure(HttpSecurity http)メソッドはありません。のみ春のセキュリティ:手動でデフォルト設定を戻す

spring-boot-starter-security 
spring-security-oauth2 
spring-security-jwt 

がpomに追加されます。

保護されていないエンドポイントを追加する必要がありました。だから私は、カスタム設定を追加しました:

@Configuration 
public class Security extends ResourceServerConfigurerAdapter { 

    @Override 
    public void configure(HttpSecurity http) throws Exception { 
     http.authorizeRequests() 
      .antMatchers(GET, "/public/**").anonymous() 
      .anyRequest().authenticated() 
    } 
} 

は今/public/**エンドポイントが正常に皆のために開いています。しかし、他のすべてのエンドポイントは動作を停止し、デバッグレベルに私が参照してください。

paOAuth2AuthenticationProcessingFilter:認証要求が失敗しました:エラー=「ACCESS_DENIED」、しましたerror_description =「リソースIDが含まれていない無効なトークン(のOAuth2-リソース)」

だから、私は何とか誤ってデフォルトのOAuth2設定をオーバーロードしていると思います。それを戻す方法?

+0

これはセキュリティに触れる唯一の設定です。 '@ EnableResourceServer'はメインクラスにあります。私がその 'Security'クラスを追加する前にすべて正常に動作しました – piotrek

+0

私は認証サーバとしてcloudfoundry-uaaを持っています。リソースサーバーとしてのみ機能するサーバーで問題が発生する – piotrek

+0

セキュリティクラスを削除して、エンドポイントが再び機能するかどうかを確認することができます。 –

答えて

0

回答が見つかりました。 @durのコメントに続いて、私はリソースサーバーの設定でリソースIDを設定する必要がありました(下に示すように)。トークンのaudフィールドに渡されたリソースの1つに設定する必要がありました。

@Configuration 
class Security extends ResourceServerConfigurerAdapter { 

    @Override 
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception { 
     resources.resourceId("my-resource-name"); 
    } 
} 

しかし、私は春のデフォルトのidがoauth2-resourceあるとして、それはすべてのセキュリティ設定なしで動作する理由はわかりません。設定が全くないときは無視されるようです。

関連する問題