EDI連携機能では、標準で認証サービスFJCloud-Oと連携することができます。
FJCloud-O以外の認証サービスと連携する場合は、連携する認証サービス用に新規クラスを実装してください。
ここではEclipseを用いて開発する手順を説明します。
インストール後に配備されるTicket.warを用いて、新規クラスを実装します。
/opt/FJSVbsb/bdpp/products/EDI_COOPERATION/api/Ticket.war
Ticket.warを用いてWebプロジェクトを作成します。
メニューバーから[ファイル] > [インポート]を選択します。
インポート・ウィザードの選択で[Web] > [WARファイル]を選択し、[次へ]をクリックします。
WARインポートで[参照]をクリックし、Ticket.warを選択します。
[完了]をクリックして、Webプロジェクトにデータを取り込みます。
ビルド時に必要なライブラリーをビルドパスに追加します。
ランタイム環境の追加
メニューバーから[ウィンドウ] > [設定]を選択します。
[サーバー] > [ランタイム環境] > [追加]を選択します。
事前にインストールしたApache Tomcatのバージョンを選択し、[次へ]をクリックします。
[参照]をクリックし、Apache Tomcatのインストールディレクトリを選択し、[完了]をクリックします。
[適用して閉じる]をクリックして、設定を反映します。
ビルドパスの設定
プロジェクトを右クリックします。
[ビルドパス] > [ビルドパスの構成]をクリックします。
[ライブラリー]タブ > [ライブラリーの追加]をクリックします。
[サーバー・ランタイム]を選択し、[次へ]をクリックします。
事前にインストールしたApache Tomcatを選択します。
[適用して閉じる]をクリックして、設定を反映します。
認証サービスの追加には、下記のファイルの修正と新規作成が必要です。
種別 | 格納場所 | ファイル名 | 概要 |
---|---|---|---|
修正 | src/main/java/com/fujitsu/ bdis/ticket/api | Init.java | checkSettingProperties関数に利用する認証サービス用の処理を追加 |
修正 | src/main/java/com/fujitsu/ bdis/ticket/common | Constants.java | 許可サービス名のリストに利用する認証サービスを追加 |
修正 | UserInfoFactory.java | 新規クラスの呼び出し処理を追記 | |
新規 | UserInfoOptionService.java(任意) | 追加する認証サービスのユーザー情報、認証認可エンドポイントのポリシーを扱うクラスを実装 |
Init.java
checkSettingProperties関数に利用する認証サービス用の処理を追加します。
private void checkSettingPropeties() throws PropertyException { <省略> if(authServiceName.equals("option_service")) {
if(userInfoUrl.isEmpty()) {
throw new PropertyException(String.format(msgFormat, "user_info_url"));
}
} <省略> }
Constants.java
許可サービス名のリストALLOWED_SERVICE_NAME_LISTに、利用する認証サービス名を追加します。
public static final List<String> ALLOWED_SERVICE_NAME_LIST;
static {
List<String> list = new ArrayList<String>();
list.add("noauth");
list.add("fjcloud-o");
list.add("option_service");
ALLOWED_SERVICE_NAME_LIST = Collections.unmodifiableList(list);
}
UserInfoFactroy.java
UserInfoFactoryクラスに、新規作成するクラスのインスタンスの作成処理を追加します。
// 認証元のサービス名(追加) private static final String AUTH_SERVICE_NAME_OPTION = "option_service" ; public static AbstractUserInfo createInstance() throws SecurityException, IOException, LogException, TicketException { <省略> if(AUTH_SERVICE_NAME_OPTION.equals(auth_service_name) {
return new UserInfoOptionService();
) <省略> }
UserInfoOptionService.java
抽象クラスAbstractUserInfoを継承して、追加する認証サービスのユーザー情報、認証認可エンドポイントのポリシーを扱うクラスを実装します。
抽象メソッドgetUserInfoをオーバーライドして、追加する認証サービスからユーザー情報を取得、抽出する処理を記述してください。
形式 | public getUserInfo (HttpServletRequest request) throw AuthenticationException, LogException, UserInfoException | ||
概要 | リクエストからユーザー情報を取得する関数 | ||
パラメーター | 型 | 名称 | 説明 |
HttpServletRequest | request | リクエストパラメーター | |
返却値 | Map<String,String> | user_info | リクエストに含まれていたユーザー情報 |
正常処理 |
| ||
エラー処理 | エラー名称 | 発生条件 | |
LogException | ログ書き込み時 | ||
AuthenticationException | トークンチェック時 | ||
UserInfoException | 上記以外のエラーの場合 |
格納抽出APIの設定ファイルsetting.propertiesを下記のとおり修正してください。
プロパティ名 | 説明 |
---|---|
auth_service_name | UserInfoFactroy.javaに記述した認証元のサービス名を設定します。 |
user_info_url | ユーザー情報を取得しにいくURLを設定します。 |
新規クラスを追加したWARファイルを作成し、Apache Tomcatへ配備します。
メニューバーから[ファイル] > [エクスポート]を選択します。
エクスポート・ウィザードの選択で[Web] > [WARファイル]を選択し、[次へ]をクリックします。
WARエクスポートで[参照]をクリックし、名前を付けて保存で[ファイル名]Ticket、[ファイルの種類].warを設定し、[保存]をクリックします。
[完了]をクリックして、WARファイルをエクスポートします。
WARのエクスポートで出力したTicket.warを下記のディレクトリへ配備後、Apache Tomcatを再起動してください。
{Apache Tomcatのインストールディレクトリ}/webapps