パス変数に応じて、APIにhttpbasicとOAuth2の両方を使用できますか?

チンタンパンディア:

私のアプリケーションでは、特定のAPI呼び出しにのみOAuth2セキュリティを提供したいと考えています。私の質問は、パス変数に基づいてHttpBasicまたはOauth2認証を提供できるかどうかです。

以下は、私が検討する2つのシナリオです。

1)ユーザー(パス変数に名前が指定されている)xyzについて、xyzにOAuthの機能がない場合、httpBasicを使用して認証したいとします

2)別のユーザーabcがOAuthの機能を持っている場合、Oauth / OpenId connectを使用して認証します。

ユーザーに機能を割り当てるテーブルがあります。以下はテーブルの概要です。

名前、機能

xyz、HttpBasic

abc、Oauth

チンタンパンディア:

さて、私は自分でいくつかの研究を行い、解決策を見つけることができました。これが私がしたことです、

-WebSecurityConfigurerAdapterを使用して1つのhttpbasic構成を作成しました。インターセプターがタスクを開始する前に、認証ヘッダーがBasicかBearerかをチェックする1つのリクエストマッチャーを作成しました。

      //By default this filter order is 100 and OAuth has filter order 3
      @Order(2)
    public class MicroserviceSecurityConfigurationHttpBasic extends  WebSecurityConfigurerAdapter { 
          @Override
          protected void configure(HttpSecurity http) throws Exception {
             http.csrf().disable().exceptionHandling()
            .authenticationEntryPoint(customAccessDeniedHandler())
            .and().headers().frameOptions().disable()
            .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .requestMatcher(new BasicRequestMatcher())
            .authorizeRequests()
            .antMatchers("/api/**").authenticated()
            .and().httpBasic();

          }
          private class BasicRequestMatcher implements RequestMatcher {
            @Override
            public boolean matches(HttpServletRequest httpRequest) {
             String auth = httpRequest.getHeader("Authorization");
             String requestUri = httpRequest.getRequestURI();
             //Fetching Identifier to provide OAuth Security to only specific urls
             String identifier= requestUri.substring(requestUri.lastIndexOf("/") + 1, requestUri.length());

            //Lets say for identifier ABC only, I want to secure it using OAuth2.0
           if (auth != null && auth.startsWith("Basic") && identifier.equalsIgnoreCase("ABC")) {
             auth=null;
              }
           //For ABC identifier this method will return null so then the authentication will be redirected to OAuth2.0 config.
           return (auth != null && auth.startsWith("Basic"));
            }
        }
  }

-この後、ResourceServerConfigurerAdapterを使用してOAuth2.0構成を作成しました。その一例を次に示します。

    //Default filter order=3 so this will be executed after WebSecurityConfigurerAdapter 
    public class MicroserviceSecurityConfiguration extends ResourceServerConfigurerAdapter {
       ...
      //Here I am intercepting the same url but the config will look for bearer token only
      @Override
public void configure(HttpSecurity http) throws Exception {
    http.csrf().disable().exceptionHandling()
    .and().headers().frameOptions().disable()
    .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
    .and().authorizeRequests()
    .antMatchers("/api/**").authenticated();
    }
   }

参照:https : //github.com/spring-projects/spring-security-oauth/issues/1024

同じリソースに対してOauth2またはHttp-Basic認証を使用したSpringセキュリティ

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

xlwtは、タイトルとリンクの両方の変数を使用してセルにハイパーリンクを作成できますか?

分類Dev

名前解決の失敗に応じて、Androidは3GとWifiの両方を使用してルーティングできますか?

分類Dev

@Autowireを使用して、パス変数に応じてどのBeanを使用するかを決定できますか?

分類Dev

Ubuntu / DebianをUSBにインストールして、PCとMacの両方で使用できますか?

分類Dev

Googleスプレッドシートを使用して(OAuth2を使用して)APIに接続できますか、それとも1時間ごとにスケジュールされた応答をPostmanからGoogleスプレッドシートに送信できますか?

分類Dev

2つの変数が同じオブジェクトを参照し、一方が変更されたときに両方が値を変更できますか?

分類Dev

同じプロジェクトでUIにXamarin.FormsとXamarin.Nativeの両方を使用できますか?

分類Dev

oauth2のSwashbuckle.AspNetCoreの問題は、リクエストに応じて常に401を取得します

分類Dev

getとpostrestapiの両方に同じリソース名を使用しても大丈夫ですか?

分類Dev

こんにちは... id_public変数は81&86として結果を与えるべきではありませんか?両方の派生クラスで異なるメモリ位置を使用するのはなぜですか?

分類Dev

MongoDBとMySQLの両方でsolrをどのように使用できますか?

分類Dev

forループでコードと変数の両方の割り当てにリスト要素を使用する

分類Dev

リストと要素の両方で同じスライス表記を使用して同じ結果を得ることができますか?

分類Dev

URLに応じてiframeのsrcを変更できますか?

分類Dev

整数値と文字値の両方に応じてカスタムリストを並べ替えるにはどうすればよいですか

分類Dev

数値変数とカテゴリ変数の両方を使用して、PySparkに「機能」列を作成します

分類Dev

同じデータを2つの異なる変数に割り当てると、両方の変数+ Angular6が更新されます

分類Dev

同じ列に両方の変数があるテーブルからすべての行を取得します

分類Dev

PHP / CURLを使用してJSON本文とPOST値の両方を同時に投稿できますか?

分類Dev

同じJavaビルドでMavenとgradleの両方を使用できますか?

分類Dev

同じJavaビルドでMavenとgradleの両方を使用できますか?

分類Dev

使用しているイテレータの要素に応じて、複数の変数の使用をどのように処理できますか?別名、どうすればこのRubyコードを乾かすことができますか?

分類Dev

メソッドとクラスの両方の型パラメーターを単一の制約でどのように使用できますか?

分類Dev

条件に応じて、jinja2エントリの色をどのように変更できますか?(フラスコを使用)

分類Dev

CSPを使用してリクエストをhttps:AND'self 'の両方に制限できますか?

分類Dev

c#を使用してDocuSign APIで埋め込みサインとリモートサインの両方を有効にできますか?

分類Dev

JqueryとC#の両方で同じWCFにアクセスできますか?

分類Dev

OAuth 2 リクエストで Microsoft Graph と Office 365 の両方のスコープを使用するにはどうすればよいですか?

分類Dev

状態に応じて、GtkButtonで2つの子のスタイルを変えることはできますか?

Related 関連記事

  1. 1

    xlwtは、タイトルとリンクの両方の変数を使用してセルにハイパーリンクを作成できますか?

  2. 2

    名前解決の失敗に応じて、Androidは3GとWifiの両方を使用してルーティングできますか?

  3. 3

    @Autowireを使用して、パス変数に応じてどのBeanを使用するかを決定できますか?

  4. 4

    Ubuntu / DebianをUSBにインストールして、PCとMacの両方で使用できますか?

  5. 5

    Googleスプレッドシートを使用して(OAuth2を使用して)APIに接続できますか、それとも1時間ごとにスケジュールされた応答をPostmanからGoogleスプレッドシートに送信できますか?

  6. 6

    2つの変数が同じオブジェクトを参照し、一方が変更されたときに両方が値を変更できますか?

  7. 7

    同じプロジェクトでUIにXamarin.FormsとXamarin.Nativeの両方を使用できますか?

  8. 8

    oauth2のSwashbuckle.AspNetCoreの問題は、リクエストに応じて常に401を取得します

  9. 9

    getとpostrestapiの両方に同じリソース名を使用しても大丈夫ですか?

  10. 10

    こんにちは... id_public変数は81&86として結果を与えるべきではありませんか?両方の派生クラスで異なるメモリ位置を使用するのはなぜですか?

  11. 11

    MongoDBとMySQLの両方でsolrをどのように使用できますか?

  12. 12

    forループでコードと変数の両方の割り当てにリスト要素を使用する

  13. 13

    リストと要素の両方で同じスライス表記を使用して同じ結果を得ることができますか?

  14. 14

    URLに応じてiframeのsrcを変更できますか?

  15. 15

    整数値と文字値の両方に応じてカスタムリストを並べ替えるにはどうすればよいですか

  16. 16

    数値変数とカテゴリ変数の両方を使用して、PySparkに「機能」列を作成します

  17. 17

    同じデータを2つの異なる変数に割り当てると、両方の変数+ Angular6が更新されます

  18. 18

    同じ列に両方の変数があるテーブルからすべての行を取得します

  19. 19

    PHP / CURLを使用してJSON本文とPOST値の両方を同時に投稿できますか?

  20. 20

    同じJavaビルドでMavenとgradleの両方を使用できますか?

  21. 21

    同じJavaビルドでMavenとgradleの両方を使用できますか?

  22. 22

    使用しているイテレータの要素に応じて、複数の変数の使用をどのように処理できますか?別名、どうすればこのRubyコードを乾かすことができますか?

  23. 23

    メソッドとクラスの両方の型パラメーターを単一の制約でどのように使用できますか?

  24. 24

    条件に応じて、jinja2エントリの色をどのように変更できますか?(フラスコを使用)

  25. 25

    CSPを使用してリクエストをhttps:AND'self 'の両方に制限できますか?

  26. 26

    c#を使用してDocuSign APIで埋め込みサインとリモートサインの両方を有効にできますか?

  27. 27

    JqueryとC#の両方で同じWCFにアクセスできますか?

  28. 28

    OAuth 2 リクエストで Microsoft Graph と Office 365 の両方のスコープを使用するにはどうすればよいですか?

  29. 29

    状態に応じて、GtkButtonで2つの子のスタイルを変えることはできますか?

ホットタグ

アーカイブ