- IDCSサンプルアプリケーションのデプロイ
- WebLogicとIDCSのSAML連携
はじめに
Oracle Cloud Infrastructure (OCI) Marketplaceで提供されているWebLogic Serverイメージを利用して、サンプルとして提供されているJavaアプリケーションと認証プラットフォームとして提供されているOracle Identity Cloud Service (IDCS) の連携を試してみました。SAML2.0を使用してOracle Identity CloudServiceをWebLogicServerと統合することで、IDCSに登録されているIDCSユーザーのWebLogic ServerでホストされているアプリケーションへのSSOが可能になります。検証に利用したWebLogicの環境構築は前回の記事をご参照ください。
検証環境
- WLS 14.1.1.0.210420.01 : OCI Marketplaceで提供されているOracle WebLogic Server Enterprise Edition
- macOS 10.15.7 Catalina : ビルド用のクライアント環境
- Apache NetBeans IDE 11.3 : ビルド用IDE
- JDK 1.8 : ビルド環境
- Apache Tomcat 10.0.6 : ビルド環境 (servlet-api.jar利用用途)
edashboardアプリケーションのビルドとデプロイ
edashboardアプリケーションのビルド
GutHubのリポジトリよりIDCSのサンプルアプリケーションをダウンロードし、NetBeansよりプロジェクトのインポートを実行します。edashboardプロジェクトのLibrariesにビルド環境のservlet-api.jarを追加し、ビルドを実行します。(筆者のビルド環境ではUserBean.javaのソースファイル中でjavax.servlet.http.HttpServletRequestをjakarta.servlet.http.HttpServletRequestに変更)
~/NetBeansProjects/idm-samples-master/edashboard/dist/edashboard.warのようにWARファイルが生成されるので、生成されたWARファイルをWebLogic稼働環境のoracleユーザーがアクセス可能なディレクトリ(例: /tmp) にscpなどのツールでアップロードしておきます。
WebLogicへのアプリのデプロイ
WebLogic Server管理コンソール左上部のチェンジ・センターよりロックして編集を選択します。
ドメイン構造メニューのデプロイメントよりデプロイメントのサマリー画面、構成タブに表示されたインストールボタンを選択します。
事前にアップロードしたedashbord.warのファイルを選択して次へ、インストール・タイプの選択はデフォルトのこのデプロイメントをアプリケーションとしてインストールするを選択し次へ、edashboardに指定可能なターゲットにクラスタのすべてのサーバーを選択し次へ、オプション設定はッデフォルトのまま次へ、追加構成画面ではデフォルトのはい、デプロイメントの構成画面に移動します。のまま終了を選択します。その後、WebLogic Server管理コンソール左上部のチェンジ・センターより変更のアクティブ化を選択します。
再度、デプロイメントのサマリー画面よりedashboardを選択し、制御タブからedashboardを選択して起動を選択します。デプロイメントの起動の画面ではいを選択し、デプロイメントのサマリー画面でedashboardの状態がアクティブで、ヘルスがOKであることを確認した後、サンプルアプリケーションが稼働するURL、http://ComputeインスタンスのPublicIPアドレス:9073/edashboard/index.jsp# にアクセスすると、認証画面が表示されるのでユーザー名にWebLogicの管理者アカウント名 (例: weblogic)、管理者パスワードでログインして、edashboardの稼働を確認します(この時点では下記のようなAuthorization Errorの画面が表示されれば正常です)。
WebLogicのSAML有効化
WebLogicのセキュリテイ・レルムの構成
WebLogic Server管理コンソール左上部のチェンジ・センターよりロックして編集を選択します。ドメイン構造メニューのセキュリティ・レルムよりセキュリティ・レルムのサマリー画面よりmyrealmを選択します。myrealmの設定画面のプロバイダ・タブから認証プロバイダの新規ボタンより下記のように認証プロバイダを作成します。
- 新しい認証プロバイダの作成
- 名前 : 任意 SAML2IdentityAsserter
- タイプ : SAML2IdentityAsserter
再度、認証プロバイダの新規ボタンより下記のように認証プロバイダを追加作成します。
- 新しい認証プロバイダの作成
- 名前 : 任意 SAMLAuthenticator
- タイプ : SAMLAuthenticator
認証プロバイダの並べ替えボタンより下記のような順に認証プロバイダを並べ替えます。
- SAMLAuthenticator
- SAML2IdentityAsserter
- DefaultAuthenticator
- DefaultIdentityAsserter
ここで、SAMLAuthenticatorを選択し、制御フラグをSUFFICIENTに変更して保存を選択します。次に、DefaultAuthenticatorを選択し、制御フラグをOPTIONALに変更して保存を選択します。その後、WebLogic Server管理コンソール左上部のチェンジ・センターより変更のアクティブ化を選択します。その後、WebLogicが稼働する検証環境をOS再起動します。
管理コンソール左上部のチェンジ・センターよりロックして編集を選択します。環境メニューのサーバーよりedashboardアプリケーションがデプロイされた管理対象サーバ(例: WLS_server_1) を選択し、設定画面よりフェデレーション・サービスタブ内のSAML2.0全般を選択します。検証用なので下記のようなダミーの情報を入力し、保存ボタンを選択します。
- 一般
- レプリケートされたキャッシュの有効化 : 無効
- 連絡先(名): System
- 連絡先(姓): Administrator
- 連絡先のタイプ: 管理
- 連絡先の勤務先: Example
- 連絡先の電話番号: 12345678901
- 連絡先の電子メール・アドレス: admin@example.com
- 組織名: Example
- 組織URL: https://example.com
- 公開サイトのURL: https://ComputeインスタンスのPublicIPアドレス:9074/saml2
- エンティティID: wlsentity
- バインド
- 受信者チェックの有効化 : 無効
フェデレーション・サービスタブ内のSAML 2.0サービス・プロバイダを選択します。有効にチェックし、優先バインドにPOSTを選択、デフォルトURLに*https://ComputeインスタンスのPublicIPアドレス:9074/edashboard/index.jsp*を入力し、**保存**ボタンを選択します。そして、管理コンソール左上部の**チェンジ・センター**より**変更のアクティブ化**を選択します。
IDCSへサンプルアプリケーションの登録
IDCSの管理画面へのナビゲート
OCIダッシュボードにログインし、OCIダッシュボードメニューから、アイデンティティとセキュリティ>フェデレーションにアクセスし、OracleIdentityCloudServiceを選択し、アイデンティティ・プロバイダの詳細画面を表示します。Oracle Identity Cloud Service Consoleに表示されたURLより、IDCSのサービス・コンソールにアクセスできます。
IDCSグループの作成とユーザーの登録
下記のようにIDCSグループを作成し、ユーザーを割り当てていきます。
IDCSグループ | edashboardアプリのJAZNロール | 認可ページ |
---|---|---|
Employee | appemployee | Index, My Profile, and Employee Perks |
Manager | appmanager | Index, My Profile, Employee Perks, and Management Watch |
Security | appsecurity | Index, My Profile, Employee Perks, and Security Report |
IDCS管理コンソールのナビゲーション・メニューよりGroupsを選択し、Addボタンより前述のグループを作成します。
次にIDCSグループにユーザーを割り当てていきます。本記事では、自分のIDCSアカウントをManagerグループにアサインします。IDCSグループの一覧からManagerグループの詳細画面のUsersタブのAssignボタンより自分のユーザーを追加します。
IDCSへedashboardアプリの登録
IDCS管理コンソールのナビゲーション・メニューよりApplicationsを選択し、AddボタンよりSAML Applicationを登録します。入力項目は下記を参考ください。
- App Details
- Name : Employee Dashboard
- Description : Intranet portal for employees
- Application Icon : edashboardプロジェクト内のedashboard_logo.gifをアップロード
- Application URL: https://ComputeインスタンスのPublicIPアドレス:9074/edashboard
- SSO Configuration (General)
- Entity ID : wlsentity
- Assertion Consumer URL : https://ComputeインスタンスのPublicIPアドレス:9074/saml2/sp/acs/post
- SSO Configuration (Advances Setting)
- Include Signing Certificate in Signature : 選択
- Logout Binding : POST
- Single Logout URL : https://ComputeインスタンスのPublicIPアドレス:9074/edashboard/logout
- Logout Response URL : https://ComputeインスタンスのPublicIPアドレス:9074/edashboard
- SSO Configuration (Attribute Configuration)
- Name : Groups
- Format : Basic
- Type : User Attribute
- Value : Group Membership
- Condition : All Groups
FinishボタンよりApplicationを作成し、Employee Dashboardを選択後、Activateを行ってください。
その後、Employee Dashboardの詳細画面、SSO ConfigurationタブのDownload Identity Provider MetadataボタンよりIDCSMetadata.xmlをダウンロードします。さらに、UsersタブよりEmployee Dashboardにアクセス可能なIDCSユーザーを追加します。
WebLogicのIDPとしてIDCSを登録
先ほどダウンロードしたIDCSMetadata.xmlをWebLogic稼働環境のoracleユーザーがアクセス可能なディレクトリ(例: /tmp) にscpなどのツールでアップロードしておきます。そして、WebLogic Server管理コンソール左上部のチェンジ・センターよりロックして編集を選択します。ドメイン構造メニューのセキュリティ・レルムよりセキュリティ・レルムのサマリー画面よりmyrealmを選択します。myrealmの設定画面のプロバイダ・タブに表示される認証プロバイダの一覧からSAML2IdentityAsserterを選択します。さらに、管理タブより、アイデンティティ・プロバイダ・パートナの新規ボタンを選択し、新しいシングル・サインオンのアイデンティティ・プロバイダ・パートナを選択します。ここで名前にIDCS_IDPと入力し、先ほどアップロードしておいたIDCSMetadata.xmlのパス (例: /tmp/IDCSMetadata.xml) を指定します。
作成されたIDCS_IDPを選択して、有効にチェック、リダイレクトURLに/edashboard/*と入力して、上部の 保存 を選択して変更を更新します。
IDCSとの連携のテスト
http://ComputeインスタンスのPublicIPアドレス:9073/edashboard/index.jsp# にアクセスすると、IDCSの認証画面にリダイレクトされ、ユーザー名とパスワードを入力し認証します。
認証に成功すると下記のような認証済のedashboardの画面が表示されます。
ログインしたユーザーがIDCSのグループSecurityに属している場合は全てのページを閲覧することができますが、Managerのグループに属しているユーザーの場合はSecurity ReportページにアクセスするとAuthorization Errorが表示されアクセスできないことを確認できます。一方で、Employeeのグループに属しているユーザーでアクセスした場合は、Security Reportページに加えてManagement watchページにもアクセスできないことが確認できます。
まとめ
WebLogic Server上で稼働するJavaアプリケーションとOracle Identity Cloud Service (IDCS) の連携を確認することができました。今回の検証は無償利用可能なOracle Identity CloudServiceの基本機能の範囲で実現しています。
関連情報
公式ドキュメント Oracle Identity Cloud Service
Oracle Identity Cloud Service: Integrating with Weblogic Server
Identity Cloud Services and Weblogic Federation with Virtual Users and Groups
GitHub: Employee Dashboard