Oracle Identity Cloud ServiceでのJavaアプリケーションの開発
認証フローの理解および顧客見積アプリケーションの例が、Javaサーブレットを使用してOracle Identity Cloud Serviceとの統合を実装する方法について学習します。
認証フローの理解
次のプロセス・フローでは、認証フローの手順と顧客見積アプリケーションの例とOracle Identity Cloud Service間の通信について説明します。
-
ユーザーは顧客見積アプリケーション(
https://localhost:8181/cquotes
)にアクセスし、Identity Cloud Serviceでログインをクリックします。 -
顧客見積アプリケーションは、次の形式で承認コード要求を準備します。
-
URL:
https://example.identity.oraclecloud.com/oauth2/v1/authorize?client_id=clientid&response_type=code&redirect_uri=https://localhost:8181/cquotes/return&scope=openid
-
パラメータ:
-
client_id
: Oracle Identity Cloud Serviceに登録されている顧客見積りの一意のアプリケーションID。 -
response_type
: Oracle Identity Cloud Serviceからの予想レスポンス。このステップでは、これが承認コードです。 -
redirect_uri
:ユーザーがOracle Identity Cloud Serviceで認証および認可を完了した後に認可コードが送信されるURL。 -
scope
:顧客見積アプリケーションがユーザーのかわりにアクセスおよび処理できるデータを管理します。OpenID Connectが使用されるため、スコープはopenid
です。
-
-
-
顧客見積アプリケーションにより、ユーザーはステップ2で生成されたOracle Identity Cloud Service承認コードURLにリダイレクトされます。
-
Oracle Identity Cloud Serviceは、顧客見積アプリケーション(
client_id
)から承認コード要求を受け取ります。 -
Oracle Identity Cloud Serviceユーザーがすでに認証されているかどうかを検証します。その場合は、Oracle Identity Cloud Serviceではサインイン処理がスキップされます。そうでない場合は、Oracle Identity Cloud Serviceでサインイン・プロセスが開始され、「サイン・イン」ページが表示されます。
-
ユーザーは、検証のためにサインイン資格証明をOracle Identity Cloud Serviceに送信します。Oracle Identity Cloud Service Sign - inプロセスでは、サインイン資格証明が正常に検証されるまで、パスワード・ポリシーが適用されます。
-
サインイン・プロセスに成功すると、Oracle Identity Cloud Serviceは次のリダイレクトURLを使用してユーザーを顧客見積アプリケーションにリダイレクトします。
-
URL:
-
https://localhost:8181/cquotes/return?code=code
-
-
パラメータ:
-
code
: Oracle Identity Cloud Serviceによって作成される認可コード。
-
-
-
顧客見積アプリケーションは要求から承認コードを抽出します。
-
顧客見積アプリケーションは、次のURLおよびヘッダーを使用して、ユーザー・アクセス・トークンの承認コードを交換するためにOracle Identity Cloud Serviceと直接通信します。
-
URL:
https://example.identity.oraclecloud.com/oauth2/v1/token?grant_type=authorization_code&code=code
-
リクエスト・ヘッダー:
-
Authorization=Basic
(client_id:client_secret、64-bitエンコード済) -
Accept=*/*
-
-
パラメータ:
-
grant_type
:authorization_code
を使用してOracle Identity Cloud Serviceからアクセス・トークンを要求しているため、付与タイプはauthorization_code
である必要があります。 -
code
:ユーザーのサイン・インに成功した後でOracle Identity Cloud Serviceから受信した認可コード。
-
-
ヘッダー・リスト:
-
認可: trusted application
client_id
およびclient_secret
(64ビットコード)の形式はclient_id: client_secret
です。 -
受入:顧客見積アプリケーションが想定する応答のタイプ
。
-
-
-
Oracle Identity Cloud Serviceでリクエストを検証し、次のJSON Web Token (JWT)をCustomer Quotesアプリケーションに返します。
-
JWTコンテンツ:
-
access_token
:ユーザーに関する情報が含まれます。顧客見積アプリケーションは、Oracle Identity Cloud Service APIをユーザーのかわりにコールする際にこのトークンを使用できます。access_token
の内容は、認証プロセス中に要求されるスコープに依存します。 -
id_token
: OpenID Connectのプライマリ・トークンで、scope=openid
でエンドポイントを認可するために使用されます。id_token
には、ユーザーに関する識別情報(名前や電子メールなど)が含まれています。この情報は、クライアント・アプリケーションでの検証やコンテンツの表示など、いくつかの目的で使用できます。正当な(OpenID Connectのプロバイダの署名に基づいてクライアントによって検証された)ものであり、アクティブなid_token
はユーザーが認証され、有効なトークンがあることをアプリケーションに示します。
-
-
-
顧客見積りアプリケーションはJWTトークン(
id_token
)を処理し、名前やeメールなど、Oracle Identity Cloud Serviceによって返されるユーザー情報を抽出します。 -
顧客見積アプリケーションに、名前やEメールなどのユーザーに関する情報が含まれているホーム・ページが表示されます。
Java application Codeの理解
顧客見積りアプリケーションの例では、サーブレット・テクノロジを使用しています。
-
com.example.servlet.AccessResourceServlet
:ユーザーをOracle Identity Cloud Serviceにリダイレクトして認可コードをリクエストすることで、認証フローを開始します。 -
com.example.servlet.ReturnServlet
:リダイレクトURLをOracle Identity Cloud Serviceから処理し、承認コードを受信して、com.example.utils.OICOAuthClient
クラスを使用して、アイデンティティートークンの承認コードとアクセストークンを交換します。 -
com.example.servlet.LogoutServlet
:アプリケーションのユーザー・セッションを終了しますが、Oracle Identity Cloud Serviceからユーザーにサイン・アウトしません。
-
com.example.utils.OICOAuthClient
: Oracle Identity Cloud Service REST APIのURLエンドポイントの構築、リクエストの処理、Oracle Identity Cloud Serviceレスポンスの解析、およびアプリケーションのHTTPセッションへのユーザー情報の追加を行います。 -
com.example.utils.HttpUtil
: Oracle Identity Cloud Service REST APIエンドポイントとのHTTP通信を処理します。顧客見積アプリケーションからOracle Identity Cloud Serviceへの直接通信はすべて、java.net.HttpURLConnection
クラスを介して行われます。