検索
ホームページJava&#&チュートリアルJava を使用して OAuth2 ベースの認証および認可システムを開発する方法

Java を使用して OAuth2 ベースの認証および認可システムを開発する方法

Java を使用して OAuth2 に基づく認証および認可システムを開発する方法

1. はじめに
OAuth2 は、サードパーティの認証を許可するために使用されるオープン標準の認可プロトコルです。アプリケーションは、ユーザーの資格情報を共有せずに、ユーザーが別のアプリケーションに保存したリソースにアクセスします。この記事では、Java を使用して OAuth2 ベースの認証および認可システムを開発する方法を紹介します。

2. OAuth2 の基本原則
OAuth2 の基本原則は、トークンを介してユーザーのリクエストを認証することです。開発者は、独自のアプリケーションでクライアント ID と秘密キーを申請し、そのクライアント ID と秘密キーをサードパーティ アプリケーションに提供します。サードパーティ アプリケーションがリクエストを開始すると、クライアント ID、秘密キー、およびユーザー認証情報が送信され、認証サーバーにリクエストが送信されます。認証サーバーはクライアント ID と秘密キーを検証し、サードパーティ アプリケーションにトークンを返します。サードパーティのアプリケーションは、トークンを使用してユーザーのリソースにアクセスできます。

3. 開発環境の準備
まず、Java 開発環境を準備する必要があります。 Java 開発キット (JDK)、統合開発環境 (IDE)、および関連する Java 開発ライブラリをインストールします。

4. 依存関係ライブラリの追加
コードを記述する前に、OAuth2 の開発をサポートするために Java 依存関係ライブラリを追加する必要があります。

Maven 依存関係:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

5. コードを記述します

  1. Spring Boot プロジェクトを作成し、OAuth2 の関連パラメーターを構成します。

    @SpringBootApplication
    @EnableOAuth2Client
    @EnableWebSecurity
    public class OAuth2DemoApplication {
     public static void main(String[] args) {
         SpringApplication.run(OAuth2DemoApplication.class, args);
     }
    }
  2. OAuth2 クライアント ID、秘密キー、認証サーバー アドレス、およびその他のパラメーターを application.properties ファイルで構成します。

    spring.security.oauth2.client.registration.example-client.client-id=client_id
    spring.security.oauth2.client.registration.example-client.client-secret=client_secret
    spring.security.oauth2.client.registration.example-client.provider=example-provider
    spring.security.oauth2.client.registration.example-client.redirect-uri={baseUrl}/login/oauth2/code/{registrationId}
    spring.security.oauth2.client.provider.example-provider.authorization-uri=https://example.com/oauth2/authorize
    spring.security.oauth2.client.provider.example-provider.token-uri=https://example.com/oauth2/token
    spring.security.oauth2.client.provider.example-provider.user-info-uri=https://example.com/oauth2/userinfo
    spring.security.oauth2.client.provider.example-provider.user-name-attribute=name
  3. サードパーティ アプリケーションからのリクエストを処理するコントローラーを作成し、OAuth2 クライアントを使用してユーザーのリクエストを認証します。

    @Controller
    public class OAuth2Controller {
     @Autowired
     private OAuth2AuthorizedClientService authorizedClientService;
    
     @GetMapping("/auth")
     public String authorize(Principal principal) {
         OAuth2AuthenticationToken authentication = (OAuth2AuthenticationToken) principal;
    
         OAuth2AuthorizedClient authorizedClient = this.authorizedClientService
                 .loadAuthorizedClient(
                         authentication.getAuthorizedClientRegistrationId(),
                         authentication.getName());
    
         String accessToken = authorizedClient.getAccessToken().getTokenValue();
    
         // 使用令牌来访问用户资源
         // ...
    
         return "redirect:/";
     }
    }

6. テスト

  1. アプリケーションを起動し、認証サーバーのログインページにアクセスします。
  2. サードパーティ アプリケーションのログイン ボタンを使用してログインします。
  3. 認証サーバーが検証に合格すると、トークンがサードパーティ アプリケーションに返されます。
  4. サードパーティ アプリケーションは、トークンを使用してユーザーのリソースにアクセスできます。

7. 概要
この記事では、Java を使用して OAuth2 に基づく認証および認可システムを開発する方法を紹介します。 OAuth2 を通じて、サードパーティ アプリケーションがユーザー リソースにアクセスするための承認機能を実装できます。 Spring Boot と Spring Security の OAuth2 クライアント ライブラリを使用すると、開発プロセスを簡素化し、安全で信頼性の高い認証および認可システムを迅速に構築できます。

上記は単なる例であり、実際の開発では、エラー処理や権限管理など、さらに詳細な考慮が必要になる場合があります。この記事が読者に役立ち、Java を使用して OAuth2 ベースの認証および認可システムを開発する方法について予備的な理解を与えることができれば幸いです。

以上がJava を使用して OAuth2 ベースの認証および認可システムを開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。