Spring Bootアプリケーションに認可を追加する
Auth0を使用すると、アプリケーションにすばやく認可を追加することができます。このガイドは、新規または既存のSpring BootアプリケーションにAuth0を統合する方法を説明します。
Auth0 DashboardでAPIをまだ作成していない場合は、対話型のセレクターを使ってAuth0 APIを新規作成します。そうでない場合は、統合したいプロジェクトを表す既存のAPIを選択します。
Auth0 Dashboardを使って初めてAPIをセットアップする場合には、使用の開始ガイドを確認してください。
それぞれのAuth0 APIにはAPI識別子があり、アプリケーションにアクセストークンの検証で使用されます。
アクセス許可は、ユーザーの代わりに、提供されたアクセストークンを使ってどのようにしてリソースにアクセスできるのかを定義できるようにします。たとえば、ユーザーがマネージャーアクセスレベルを持つ場合には、messages
リソースに対して読み出しアクセスを付与し、管理者アクセスレベルを持つ場合には、書き込みアクセスを付与することができます。
Auth0 Dashboardの[APIs]セクションにある[Permissions(権限)]ビューで使用可能なアクセス許可を定義することができます。
![[Auth0 Dashboard]>[Applications(アプリケーション)]>[APIs]>[Specific API(特定のAPI]>[Permissions(権限)]タブ](http://images.ctfassets.net/cdy7uua7fh8z/1s3Yp5zqJiKiSWqbPSezNO/acef814282795bef6921535f044f96e9/Quickstarts_API.png)
サンプルプロジェクトは/src/main/resources/application.yml
ファイルを使用し、これをAPIに対して正しいAuth0ドメインとAPI識別子を使用するように構成します。このページからコードをダウンロードすると、自動的に構成されます。GitHubから例を複製する場合は、ご自身で入力する必要があります。
Gradleを使用している場合、Spring Boot GradleプラグインとDependency Managementプラグインを使って必要な依存関係を追加し、依存関係のバージョンを解決することができます:
// build.gradle
plugins {
id 'java'
id 'org.springframework.boot'
version '3.1.5'
id 'io.spring.dependency-management'
version '1.1.3'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.okta.spring:okta-spring-boot-starter:3.0.5'
}
Was this helpful?
Mavenを使用している場合は、Springの依存関係をpom.xml
ファイルに追加します:
// pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.5</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.okta.spring</groupId>
<artifactId>okta-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
</dependencies>
Was this helpful?
アプリケーションをリソースサーバーとして構成し、JWTを検証するには、SecurityFilterChain
のインスタンスを提供するクラスを作成し、@Configuration
の注釈を追加します。
APIエンドポイントを保護する
以下に示されたルートは次の要求で使用することができます:
GET /api/public
:認証を必要としない要求に使用できるGET /api/private
:追加スコープのないアクセストークンを含む認証された要求に使用できるGET /api/private-scoped
:read:messages
スコープが付与されたアクセストークンを含む認証された要求に使用できる
以下の例は、SecurityConfig
クラスのfilterChain()
メソッドで指定されたHttpSecurity
オブジェクトを使用して、APIメソッドのセキュリティを確保する方法を示します。ルートマッチャーは必要な認可レベルに基づいてアクセスを制限します。
エンドポイントがJSONを返すには、Javaレコードを使用することができます。このオブジェクトのメンバー変数は、JSONのキー値にシリアル化されます。Message
と呼ばれる新しいレコードを、API呼び出し中に返すサンプルドメインオブジェクトとして作成します。
APIController
という名前の新しいクラスを作成し、エンドポイントへのリクエストを処理します。APIController
には、APIエンドポイントを保護するセクションで定義されるように、3つのルートがあります。たとえば、@CrossOrigin
の注釈からすべてのオリジンを許可します。実際のアプリケーションでは、ユースケースに対してCORS
を構成する必要があります。
サンプルプロジェクトを構築し実行するには、bootRun
Gradleタスクを実行します。
LinuxまたはmacOS:
./gradlew bootRun
Windows:
gradlew.bat bootRun
MavenとSpring Boot Mavenプラグインで独自のアプリケーションを構成している場合は、spring-boot:run
ゴールを実行することができます。
LinuxまたはmacOS:
mvn spring-boot:run
Windows:
mvn.cmd spring-boot:run
checkpoint.header
サンプルアプリケーションはhttp://localhost:3010/
で入手できます。「APIの使用」の記事でAPIをテストおよび使用する方法についてお読みください。
Next Steps
Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.
This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:
- Auth0 Dashboard - Learn how to configure and manage your Auth0 tenant and applications
- Okta Spring Boot Starter SDK - Explore the SDK used in this tutorial more fully
- Auth0 Marketplace - Discover integrations you can enable to extend Auth0’s functionality
Sign up for an or to your existing account to integrate directly with your own tenant.