春のセキュリティコンテキストからアプリケーションコンテキストにアクセスする

davvs

承認にSpringセキュリティを使用するSpringMVCアプリケーションがあります。

ユーザーを承認するカスタムAuthenticationProviderを実装しました。

このカスタムAuthenticationProviderで、アプリケーションコンテキストで定義されたBeanにアクセスしたいと思います。

これは可能ですか?もしそうなら、どのように?

web.xml:

 ...
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>WEB-INF/spring-security.xml</param-value>
 </context-param>
  ...
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
  ...
 <servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>/</url-pattern>
 </servlet-mapping>

spring-security.xml:

  ...
  <authentication-manager>
    <authentication-provider ref="customAuthenticationProvider"/>
  </authentication-manager>

  <beans:bean class="com.example.davvstest.CustomAuthenticationProvider" id="customAuthenticationProvider">
    <beans:property name="loginService" ref="loginService" />
  </beans:bean>
  ...

ディスパッチャー-servlet.xml:

  <bean class="com.example.davvstest.LoginService" name="loginService">
  </bean>

CustomAuthenticationProvider.java:

package com.example.davvstest;

import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;

public class CustomAuthenticationProvider implements AuthenticationProvider {

    private LoginService loginService;

    public LoginService getLoginService() {
        return loginService;
    }

    public void setLoginService(LoginService loginService) {
        this.loginService = loginService;
    }

    @Override
    public Authentication authenticate(Authentication authentication)
            throws AuthenticationException {
        if (!loginService.checkAuth(authentication.getName())){
            throw new BadUserNameException("Bad username");
        }
        return authentication;
    }

    @Override
    public boolean supports(Class<?> authentication) {
        return true;
    }

}

LoginService.java:

package com.example.davvstest;

public class LoginService {

    public LoginService() {
    }

    public boolean checkAuth(String username){
        return true;
    }
}

私が得るエラーは次のとおりです。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.filterChains': Cannot resolve reference to bean 'org.springframework.security.web.DefaultSecurityFilterChain#0' while setting bean property 'sourceList' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.DefaultSecurityFilterChain#0': Cannot resolve reference to bean 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0' while setting constructor argument with key [1]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0': Cannot resolve reference to bean 'org.springframework.security.authentication.ProviderManager#0' while setting bean property 'authenticationManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.authentication.ProviderManager#0': Cannot resolve reference to bean 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.authenticationManager': Cannot resolve reference to bean 'customAuthenticationProvider' while setting constructor argument with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customAuthenticationProvider' defined in ServletContext resource [/WEB-INF/spring-security.xml]: Cannot resolve reference to bean 'loginService' while setting bean property 'loginService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'loginService' is defined
スジェイ・ムンバラディ

親コンテキストは、子コンテキストからの依存関係を持つことはできません。

この場合、customAuthenticationProvider Beanは親コンテキストの一部であり、子WebコンテキストloginServiceからの依存関係があります。

だからあなたはすべきです

  1. 個別のservices-context.xmlを作成し、loginServiceBean定義をdispatcher-servlet.xmlからservices-context.xmlに移動します。
  2. contextConfigLocationweb.xmlの値リストにservices-context.xmlを追加します

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

非アクティビティ/アプリケーションコンテキストからのconfirmDeveiceCredentialIntent

分類Dev

チェックリスト-認証によるWebアプリケーションのセキュリティ

分類Dev

非アクティビティシングルトンクラスからアプリケーションコンテキストを取得する

分類Dev

Kotlinのコンパニオンオブジェクトのアプリケーションコンテキストにアクセスする

分類Dev

ホストからコンテナのWebアプリケーションにアクセスする方法

分類Dev

WindowsのコンテキストメニューからJavaアプリケーションを実行する

分類Dev

Androidのストレージクラスのアプリケーションコンテキストにアクセスする

分類Dev

thymeleaf電子メールテンプレートからのアプリケーションコンテキストBeanへのアクセス

分類Dev

シングルトン内のアプリケーションコンテキストにアクセスする

分類Dev

春のブートデータレストアプリケーションにおけるセキュリティ確保JSON-PATCHパス

分類Dev

Spring-Bootアプリケーションの外部でSpringコンテキストにアクセスすることは可能ですか?

分類Dev

Springamqpメッセージから実行されるトランザクションのセキュリティコンテキストを確立する方法

分類Dev

春のセキュリティアプリケーションのユーザー・クラス

分類Dev

iOSアプリケーションのセキュリティに関するベストプラクティス

分類Dev

Extjs / Javaアプリケーションにセキュリティを実装するためのベストプラクティス

分類Dev

春のセキュリティ:セッションのステータスを保存し、アプリの再起動後にセッションを取得する

分類Dev

非アクティビティクラスのアプリケーションコンテキスト?

分類Dev

Springセキュリティコアプラグイン-コントローラーからユーザーIDにアクセスする方法

分類Dev

アクティビティコンテキストまたはアプリケーションコンテキストをいつ呼び出すか?

分類Dev

アプリケーションコンテキストからのSpringBeanの削除

分類Dev

C#アプリケーションからWindowsエクスプローラーのコンテキストメニューにアクセスするにはどうすればよいですか?

分類Dev

C#のアセンブリのコンテキストでは、アクティベーションスコープは何を指しますか?

分類Dev

複数の春の「アプリケーションコンテキスト」を持つ目的は何ですか

分類Dev

春のセキュリティ-カスタムキープアライブコントローラー

分類Dev

春のセキュリティ-カスタムキープアライブコントローラー

分類Dev

春のセキュリティは、react jsベースのWebアプリケーションを開発するために本当に必要ですか?

分類Dev

Springセキュリティキークロークアダプターからログアウトしますが、アプリケーションにアクセスするためにログインする必要はありません

分類Dev

万一AndroidのネイティブReactRootViewの使用アクティビティやアプリケーションコンテキストに反応しますか?

分類Dev

異なるセキュリティコンテキストからVBSスクリプトを実行する

Related 関連記事

  1. 1

    非アクティビティ/アプリケーションコンテキストからのconfirmDeveiceCredentialIntent

  2. 2

    チェックリスト-認証によるWebアプリケーションのセキュリティ

  3. 3

    非アクティビティシングルトンクラスからアプリケーションコンテキストを取得する

  4. 4

    Kotlinのコンパニオンオブジェクトのアプリケーションコンテキストにアクセスする

  5. 5

    ホストからコンテナのWebアプリケーションにアクセスする方法

  6. 6

    WindowsのコンテキストメニューからJavaアプリケーションを実行する

  7. 7

    Androidのストレージクラスのアプリケーションコンテキストにアクセスする

  8. 8

    thymeleaf電子メールテンプレートからのアプリケーションコンテキストBeanへのアクセス

  9. 9

    シングルトン内のアプリケーションコンテキストにアクセスする

  10. 10

    春のブートデータレストアプリケーションにおけるセキュリティ確保JSON-PATCHパス

  11. 11

    Spring-Bootアプリケーションの外部でSpringコンテキストにアクセスすることは可能ですか?

  12. 12

    Springamqpメッセージから実行されるトランザクションのセキュリティコンテキストを確立する方法

  13. 13

    春のセキュリティアプリケーションのユーザー・クラス

  14. 14

    iOSアプリケーションのセキュリティに関するベストプラクティス

  15. 15

    Extjs / Javaアプリケーションにセキュリティを実装するためのベストプラクティス

  16. 16

    春のセキュリティ:セッションのステータスを保存し、アプリの再起動後にセッションを取得する

  17. 17

    非アクティビティクラスのアプリケーションコンテキスト?

  18. 18

    Springセキュリティコアプラグイン-コントローラーからユーザーIDにアクセスする方法

  19. 19

    アクティビティコンテキストまたはアプリケーションコンテキストをいつ呼び出すか?

  20. 20

    アプリケーションコンテキストからのSpringBeanの削除

  21. 21

    C#アプリケーションからWindowsエクスプローラーのコンテキストメニューにアクセスするにはどうすればよいですか?

  22. 22

    C#のアセンブリのコンテキストでは、アクティベーションスコープは何を指しますか?

  23. 23

    複数の春の「アプリケーションコンテキスト」を持つ目的は何ですか

  24. 24

    春のセキュリティ-カスタムキープアライブコントローラー

  25. 25

    春のセキュリティ-カスタムキープアライブコントローラー

  26. 26

    春のセキュリティは、react jsベースのWebアプリケーションを開発するために本当に必要ですか?

  27. 27

    Springセキュリティキークロークアダプターからログアウトしますが、アプリケーションにアクセスするためにログインする必要はありません

  28. 28

    万一AndroidのネイティブReactRootViewの使用アクティビティやアプリケーションコンテキストに反応しますか?

  29. 29

    異なるセキュリティコンテキストからVBSスクリプトを実行する

ホットタグ

アーカイブ