最新のソフトウェアの開発とアプリケーションの人気に伴い、ID 認証と認可を必要とするリクエストがますます増えています。 OAuth テクノロジーは、これらのリクエストに対するソリューションを提供します。 Java API 開発では、OAuth テクノロジーを使用して複数の認証および認可シナリオをサポートできます。この記事では、OAuth の基本原則と、Java API 開発におけるその具体的なアプリケーションについて紹介します。
リソース所有者は、リソース サーバーにアクセスできるすべての人物またはエンティティを指します。クライアントは、サービスにアクセスし、リソース サーバー上のリソースにアクセスできるサードパーティ アプリケーションを指します。認可サーバーは、認証情報を保存するサーバーとアクセス トークンを提供するサーバー、リソース サーバーは実際のデータを保存し、トークンを介してクライアント アクセスを認証するサーバーです。
OAuth プロセスの基本的な手順は次のとおりです。
ステップ 1: クライアントはリソース所有者に承認を要求します。リクエストには、クライアント、必要な認可タイプ、スコープ、およびリダイレクト URI の識別が含まれます。一般的な認可タイプには、「認可コード」および「リソース所有者のパスワード認証情報」が含まれます。スコープとは、リソース所有者の認可スコープを指します。リダイレクト URI は次のとおりです。 in 所有者からの承認後にリソースを配信するために使用される URI。
ステップ 2: リソース所有者がクライアントを承認します。これには、クライアントにアクセス トークンを発行するか、Web ブラウザでクライアントを直接認証することができます。リクエストによっては、リソース所有者にリクエストして指示を得ることが必要になる場合があります。
ステップ 3: クライアントは、認可アクセス トークンを使用して認可サーバーにトークンを要求します。クライアントは、独自の ID および認可アクセス トークンをパラメータとして渡します。
ステップ 4: サーバーがクライアントを認証し、リクエストを承認することを許可します。リクエストが有効な場合、認可サーバーはクライアントにアクセス トークンを発行します。
ステップ 5: クライアントはトークンを使用して、リソース サーバーから保護されたリソースを要求します。クライアントは、自身の ID とトークンをパラメーターとして渡します。
ステップ 6: トークンが有効で、クライアントが保護されたリソースへのアクセスを許可されている場合、リソース サーバーはリクエストに応答します。
まず、Spring Security と Spring OAuth2 の依存関係を追加する必要があります。これは、次の Maven 座標を介して実行できます:
b4b38e33757a6497aa8690936b905cc1
<groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.6.RELEASE</version>
09a0e22e5aaafd848ae04665be625b91
次に、承認の構成をセットアップする必要があります。サーバ。以下は基本的な構成例です。
@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 を定義します。
以上がJava API開発における認証にOAuthを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。