(32個)電子商取引プラットフォームの-securityを使用するのは簡単春の雲マイクロサービスアーキテクチャB2B2CのJavaバージョン

セキュリティ単純な原理:

権限を管理するためには、URLをインターセプトするインターセプタを大量に使用してください。しかし、これほど多くのインターセプタは、それが不可能であることは2つのコアプロセスの内部の主要な応力の面でそれぞれ1を探ります。

しかし、達成するために必要なコンポーネントの一部のインターセプタのインプリメンテーション内で、リソースへのアクセスは、エクスプローラ迎撃AbstractSecurityInterceptorトークので、それを管理している。まず、著作権管理は、ログイン認証インターセプターAuthenticationProcessingFilterトークので、ログイン認証なしで行うことはできませんので、そこAuthenticationManagerは、accessDecisionManagerおよびその他のコンポーネントをサポートします。

今、おそらく全体のプロセス、ユーザーのログイン、ブロックされますAuthenticationProcessingFilterの上に行くために、次のことができ、実装AuthenticationManagerを呼び出し、AuthenticationManagerは、その情報をデータベース上にあってもよいので、ユーザ認証情報(異なる別のプロバイダ電話サービスを取得するためにproviderManagerのを呼び出しますユーザーの検証に使用権限情報は、後でアクセスリソースの準備ができて、グローバル・キャッシュ内のユーザーSecurityContextHolderバネにカプセル化される場合は、LDAPサーバ上にある、)細かいxml設定ファイルであってもよいです。

リソースへのアクセス(すなわち、権限管理)、URLにアクセスするとき、すべての必要な権限を取得するためにFilterInvocationSecurityMetadataSourceの道を呼び出す、傍受するAbstractSecurityInterceptorインターセプタを通過しますが、承認マネージャAccessDecisionManagerを呼び出し、URLを傍受し、承認マネージャは、この春に渡します、:グローバルキャッシュSecurityContextHolderユーザーの許可についての情報を得るには、傍受されますと、フルアクセスがしたいURL URLをブロックして、配布ポリシー(など一票の決定、負の投票、多数決、そこ)に従いました十分な権限が返された場合、アクセスが十分でないと、エラーが不十分なアクセス許可のページにある呼び出します。

良い複雑なように話したが、読者は少しめまいかもしれないが、それは本当に背後にある、重要ではありませんが、読者は、コードの後ろにコードを読み取ることができ、この単純な原理を見るに戻り、その後、説明することによって達成され、豊作があるかもしれません。

春ブーツの使用における安全保障は、
第1ばねセキュリティパッケージに導入されています。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

春のセキュリティは設定クラスを記述するために非常に重要な必要性がいて
、次のコードに示すように、抽象クラスWebSecurityConfigurerAdapterを継承することで
、このBeanの目的は、メモリ内に我々のユーザーを維持することです、これはまだデバッグに使用することができますが、我々は中に開発しましたそのようなではありません

@Bean
        @Override
        protected UserDetailsService userDetailsService(){
            InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
            manager.createUser(User.withUsername("user_1").password("123456").authorities("USER").build());
            manager.createUser(User.withUsername("user_2").password("123456").authorities("USER").build());
            return manager;
        }

これが完了した後、我々はユーザーを認証するにはログインする必要がありますので、あなたが直接することができるためにも、インターセプタにクラスを追加する必要がある上に、我々はuserdetailます

  @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
            auth.userDetailsService(userDetailsService);
        }

また、このような暗号化方式などのような他のパラメータを、そこに設定することがあります。
このクラスで記述することを怠っようにあなたが海を傍受するように設定することができ、認証を必要としないこと

/** 
* 忽略设置的接口 
*/

@Override
  public void configure(WebSecurity web) throws Exception {
    String ignoring = env.getProperty("msi.auth.ignoring","/health|/info");
    web.ignoring().antMatchers(ignoring.split("\\|"));
  }

どんなにあなたはユーザーメモリを保存したり、データベース操作に保存される方法、操作が置かする必要はありません

  @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
            auth.userDetailsService(userDetailsService);
        }

おすすめ

転載: blog.csdn.net/vvx0206/article/details/93845567