Java API開発における認証にOAuthを使用する

WBOY
リリース: 2023-06-18 09:59:32
オリジナル
1796 人が閲覧しました

最新のソフトウェアの開発とアプリケーションの人気に伴い、ID 認証と認可を必要とするリクエストがますます増えています。 OAuth テクノロジーは、これらのリクエストに対するソリューションを提供します。 Java API 開発では、OAuth テクノロジーを使用して複数の認証および認可シナリオをサポートできます。この記事では、OAuth の基本原則と、Java API 開発におけるその具体的なアプリケーションについて紹介します。

  1. OAuth の概要
    OAuth (Open Authorization) は、リソース所有者とサービス プロバイダー間の承認のためのオープン スタンダードです。 OAuth は、ユーザー名やパスワードなどの訪問者の論理資格情報を渡すことなく、ユーザーまたはサービスに代わって別のサービスのデータへのアクセスを承認します。これは、異なるアプリケーション間のシームレスな統合をサポートする、安全かつエレガントで便利なソリューションです。
  2. OAuth プロトコル
    OAuth プロトコルの中核は承認プロセスです。 OAuth 認可プロセスには、リソース所有者、クライアント、認可サーバー、リソース サーバーという 4 つの主な参加者が関係します。ほとんどの OAuth アプリケーションは、これらのアクターによって完了できます。

リソース所有者は、リソース サーバーにアクセスできるすべての人物またはエンティティを指します。クライアントは、サービスにアクセスし、リソース サーバー上のリソースにアクセスできるサードパーティ アプリケーションを指します。認可サーバーは、認証情報を保存するサーバーとアクセス トークンを提供するサーバー、リソース サーバーは実際のデータを保存し、トークンを介してクライアント アクセスを認証するサーバーです。

OAuth プロセスの基本的な手順は次のとおりです。

ステップ 1: クライアントはリソース所有者に承認を要求します。リクエストには、クライアント、必要な認可タイプ、スコープ、およびリダイレクト URI の識別が含まれます。一般的な認可タイプには、「認可コード」および「リソース所有者のパスワード認証情報」が含まれます。スコープとは、リソース所有者の認可スコープを指します。リダイレクト URI は次のとおりです。 in 所有者からの承認後にリソースを配信するために使用される URI。

ステップ 2: リソース所有者がクライアントを承認します。これには、クライアントにアクセス トークンを発行するか、Web ブラウザでクライアントを直接認証することができます。リクエストによっては、リソース所有者にリクエストして指示を得ることが必要になる場合があります。

ステップ 3: クライアントは、認可アクセス トークンを使用して認可サーバーにトークンを要求します。クライアントは、独自の ID および認可アクセス トークンをパラメータとして渡します。

ステップ 4: サーバーがクライアントを認証し、リクエストを承認することを許可します。リクエストが有効な場合、認可サーバーはクライアントにアクセス トークンを発行します。

ステップ 5: クライアントはトークンを使用して、リソース サーバーから保護されたリソースを要求します。クライアントは、自身の ID とトークンをパラメーターとして渡します。

ステップ 6: トークンが有効で、クライアントが保護されたリソースへのアクセスを許可されている場合、リソース サーバーはリクエストに応答します。

  1. Java API 開発での OAuth の使用
    Java API 開発では、多くの場合、ユーザーの認証と認可の処理と管理が必要になります。 OAuth テクノロジーはこれらの目的に非常に役立ちます。次の例では、Spring Security と Spring OAuth2 を使用します。

まず、Spring Security と Spring OAuth2 の依存関係を追加する必要があります。これは、次の Maven 座標を介して実行できます:

<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.3.6.RELEASE</version>
ログイン後にコピー

次に、承認の構成をセットアップする必要があります。サーバ。以下は基本的な構成例です。

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

@Autowired
private DataSource dataSource;

@Autowired
private AuthenticationManager authenticationManager;

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

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

@Bean
public TokenStore tokenStore() {
    return new JdbcTokenStore(dataSource);
}
ログイン後にコピー

}

この構成では、有効にします。 @EnableAuthorizationServer アノテーションを使用した OAuth2 認可サーバー。 jdbcTemplate を使用してクライアントの詳細を取得するために、クライアントの詳細サービスを設定します。認証マネージャーとトークン ストレージも設定する必要があります。

次に、リソース サーバーの構成を設定する必要があります。以下は基本的な構成例です。

@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {

@Override
public void configure(HttpSecurity http) throws Exception {
    http.csrf().disable().anonymous().disable().authorizeRequests().antMatchers("/api/**").authenticated();
}

@Override
public void configure(ResourceServerSecurityConfigurer resources) {
    resources.resourceId("api");
}
ログイン後にコピー

}

この構成では、 @EnableResourceServer アノテーションを使用して OAuth2 リソース サーバーを有効にします。リソースを保護するために、configure メソッドを使用して HTTP セキュリティを構成します。 resourceId メソッドを使用して、リソース サーバーの ID を定義します。

  1. 結論
    OAuth テクノロジーは、異なるアプリケーション間のシームレスな統合をサポートするために使用できる強力な認証プロセスです。 Java API 開発では、認証と認可に OAuth を使用して、保護されたリソースへの適切なアクセスを確保し、ユーザーのセキュリティを保護できます。 Spring SecurityとSpring OAuth2を利用することで、OAuth技術の基本機能を簡単に実装できます。

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート