ホームページ  >  記事  >  Java  >  Java API開発における認証にSpring Security OAuth2を使用する

Java API開発における認証にSpring Security OAuth2を使用する

WBOY
WBOYオリジナル
2023-06-18 23:03:081636ブラウズ

インターネットの継続的な発展に伴い、分散アーキテクチャを使用して開発されるアプリケーションがますます増えています。分散アーキテクチャでは、認証は最も重要なセキュリティ問題の 1 つです。この問題を解決するために、開発者は通常、OAuth2 認証を実装します。 Spring Security OAuth2 は、OAuth2 認証に一般的に使用されるセキュリティ フレームワークであり、Java API 開発に非常に適しています。この記事では、Java API開発における認証にSpring Security OAuth2を使用する方法を紹介します。

  1. Spring Security OAuth の紹介2

Spring Security OAuth (以下、SS OAuth) は Spring Security の拡張モジュールであり、以下を目的として設計された Core モジュールとなっています。 OAuth2 認証を Spring アプリケーションに統合するためのサポートを提供します。 OAuth2 認証エンドポイント (/oauth/token、/oauth/authorize など) を提供し、複数の認証方法 (認可コード、パスワード、クライアント資格情報など) をサポートするほか、JWT およびエンドポイント セキュリティもサポートします。

  1. Spring Security OAuth2 の構成

Spring Security OAuth2 は主に以下のコンポーネントで構成されます。

(1)認可サーバー:

OAuth2 プロトコルのコア関連機能を提供し、トークンの発行、認可、リフレッシュ、その他の操作を管理します。これは主に、クライアント登録センター、認可リクエスト プロセッサ、トークン マネージャー、ユーザー認証システムの 4 つのコンポーネントで構成されます。

(2) リソース サーバー:

リソース アクセスのセキュリティ保証を提供し、インターフェイス インターフェイスのアクセス制御を実装します。リソース サーバーは、リクエストが正当なものであることを確認するために、渡されたアクセス トークンを検証する必要があります。一般に、認可サーバーはリソース サーバーとして直接使用することもできます。

(3) クライアント:

クライアントは OAuth2 プロトコルのアプリケーションであり、クライアントは認可サーバーからトークンを取得します。トークンは、保護されたリソース サーバーにアクセスするために使用されます。

  1. Spring Security OAuth2 の構成

Spring Security OAuth2 の基本的な構成例を次に示します。

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private AuthenticationManager authenticationManager;

    @Autowired
    private UserDetailsService userDetailsService;

    @Autowired
    private DataSource dataSource;

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.jdbc(dataSource);
    }

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.authenticationManager(authenticationManager)
                .accessTokenConverter(accessTokenConverter())
                .userDetailsService(userDetailsService);
    }

    @Bean
    public JwtAccessTokenConverter accessTokenConverter() {
        JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
        converter.setSigningKey("my-jwt-key");
        return converter;
    }

    @Override
    public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
        oauthServer.tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()");
    }

上記の構成コードでは、まず、モジュールのアノテーション @EnableAuthorizationServer は、認可サーバーを有効にする機能をマークするために使用されます。次に、AuthorizationServerConfigurer インターフェイスを実装しました。このインターフェイスでは、configure(ClientDetailsS​​erviceConfigurer clientes) メソッドを書き換えて、クライアント詳細サービス (クライアント ID、キー、認証メカニズムなどのクライアント ライブラリ情報) を構成できます。 configure(AuthorizationServerEndpointsConfigurer endpoints) メソッドでは、認可 URL とトークン URL を構成し、OAuth2AccessToken オブジェクトを構築しました。構成オブジェクトには、認証マネージャーやトークン ストレージ インターセプターなどの関連情報が含まれています。次に、トークン署名ミドルウェアで JWT を生成し、JwtAccessTokenConverter Bean オブジェクトを使用してクライアントに返します。最後に、configure(AuthorizationServerSecurityConfigurer security) メソッドで、対応する OAuth2 サービスとリソース サーバーのセキュリティ アクセス ルールを定義します。

  1. Spring Security OAuth2 認証の使用

上記の SS OAuth 構成を完了したら、OAuth2 認証の使用を開始できます。認可サーバーからトークンを取得する必要がある場合は、認可 URL に対してリクエストを行う必要があり、そのリクエストにはクライアント ID とシークレットが含まれている必要があります。リクエストが承認されると、承認サーバーはアクセス トークン (access_token) をクライアントに返し、クライアントはそのトークンを使用して、保護されたリソース サーバーのリソースにアクセスできます。 Spring Security OAuth2では、RestTemplateまたはFeignを使用してトークンリクエストを作成し、リクエスト内の認証にBasic認証を使用できます。

  1. 概要

この記事では、Java API 開発における認証に Spring Security OAuth2 を使用する方法を、SS OAuth の基本コンポーネント、その構成方法、使用方法などを含めて紹介します。この記事の導入により、Spring Security OAuth2 の使用方法をより深く理解できると同時に、分散アプリケーションのセキュリティをより適切に保護することができます。

以上がJava API開発における認証にSpring Security OAuth2を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。