Interstage シングル・サインオンでは、認証サーバ間連携を行う場合、シングル・サインオンシステム間でユーザ情報を通知する際に必要な変換処理を行うために、以下のカスタマイズ方法を提供しています。
7.4.1.1 ユーザ情報カスタマイズ定義ファイルに記述した変換ルールによるカスタマイズ
Interstage シングル・サインオンが提供する雛形のユーザ情報カスタマイズ定義ファイルを使用して、ユーザ情報を変換するルールを記述したユーザ情報カスタマイズ定義ファイルを作成します。
すべてのユーザ情報を変換せずに通知することも可能ですが、セキュリティを考慮し、必要なユーザ情報を通知するようカスタマイズしてください。
すべてのユーザ情報を変換せずに通知する場合は、“7.2.2.3 認証サーバ間連携の設定”時にInterstage管理コンソールにて設定を行ってください。
また、カスタマイズモジュールを使用することで、変換ルールを拡張し、ユーザ情報を詳細にカスタマイズすることができます。カスタマイズモジュールを使用してユーザ情報をカスタマイズする場合は、7.4.1.2 カスタマイズモジュールによるカスタマイズを参照してください。
変換ルールを記述したユーザ情報カスタマイズ定義ファイルを使用することで、ユーザ情報をカスタマイズすることができます。
以下に変換ルールを使用してユーザ情報がカスタマイズされる流れを示します。
変換ルールに定義したユーザ情報だけが、変換後のユーザ情報となります。
ただし、以下のユーザ情報は、変換ルールの定義にかかわらず、そのまま変換後のユーザ情報として出力されます。
認証方式
クライアントのIPアドレス
認証時刻
再認証時刻
前回サインオン日時
変換前のユーザ情報を使用して、任意のユーザ情報を生成することができます。
変換前のユーザ情報を使用しないで、新たなユーザ情報を生成することができます。
以下のユーザ情報は、変換後のユーザ情報として必ず出力される必要があります。
利用者のユーザID
以下のユーザ情報について、変換によって複数の属性値が出力される場合には、最後に出力された属性値がユーザ情報として有効となります。
利用者のDN
利用者のユーザID
変換前のユーザ情報の属性値が複数存在する場合には、属性値を昇順に並べ替えた順番で変換します。
相手シングル・サインオンシステムへユーザ情報を通知する場合、ユーザ情報の前後の空白は削除されます。
情報A,Bをカスタマイズし、利用者のユーザIDを出力する場合を例に説明します。
情報Aは情報Bよりも先に定義されているので、情報Aの属性値“user0001”が最初に処理されます。(図中(1))
属性値は昇順に並べ替えた順番で処理されるので、情報Bの属性値は“a00001”、“z12345”の順に処理されます。(図中(2)、(3))
最後に変換出力された“ID_30001”が“利用者のユーザID”の属性値となります。
Interstage シングル・サインオンが提供する雛形のユーザ情報カスタマイズ定義ファイルは、以下に格納されています。使用する環境に合わせてコピーして利用してください。
・custom_EN.xml
ASCIIコードで記述されています。
・custom_SJIS.xml
シフトJISコードで記述されています。
・custom_EUC.xml
EUCコードで記述されています。
・custom_UTF8.xml
UTF-8コードで記述されています。
C:\Interstage\F3FMsso\ssofsv\webapps\ssofsv\original\conf
/etc/opt/FJSVssofs/webapps/ssofsv/original/conf
作成したユーザ情報カスタマイズ定義ファイルは、“custom.xml”に変名し、以下に格納してください。
custom.xml
C:\Interstage\F3FMsso\ssofsv\webapps\ssofsv\custom\conf\
/etc/opt/FJSVssofs/webapps/ssofsv/custom/conf/
ユーザ情報カスタマイズ定義ファイルの作成方法
ユーザ情報カスタマイズ定義ファイルには、ユーザ情報を変換するルールをXML形式で記述します。ユーザ情報カスタマイズ定義ファイルの編集は、認証サーバを構築したマシンで、認証サーバ間連携サービスが停止した状態で行ってください。
次のタグは、XML宣言およびDTD(文書型定義)を記述しているため、ユーザ情報カスタマイズ定義ファイルの先頭に必ず記述してください。
<!-- XML宣言およびDTD修正禁止↓ --> <!DOCTYPE SSOUserInfo [ <!ELEMENT SSOUserInfo (Pluginlist, Rulelist, Systemlist)> <!ELEMENT Pluginlist (plugin*)> <!ELEMENT plugin (#PCDATA)> <!ATTLIST plugin name ID #REQUIRED type (sender | receiver) #REQUIRED> <!ELEMENT Rulelist (rule*)> <!ELEMENT rule (USER_DN, ROLE_LIST*, USER_ID, ExtraInfo*)> <!ATTLIST rule name ID #REQUIRED postmodify IDREF #IMPLIED> <!ELEMENT USER_DN (input*, create*)> <!ATTLIST USER_DN transparent (true | false) "false"> <!ELEMENT ROLE_LIST (input*, create*)> <!ATTLIST ROLE_LIST transparent (true | false) "false"> <!ELEMENT USER_ID (input*, create*)> <!ATTLIST USER_ID transparent (true | false) "false"> <!ELEMENT ExtraInfo (input*, create*)> <!ATTLIST ExtraInfo name CDATA #REQUIRED transparent (true | false) "false"> <!ELEMENT input (select*, default?)> <!ATTLIST input name CDATA #REQUIRED> <!ELEMENT create (#PCDATA)> <!ATTLIST create param1 (localname | partnername) "localname" param2 (localname | partnername) "partnername"> <!ELEMENT select (#PCDATA)> <!ATTLIST select match CDATA #IMPLIED param1 (inputvalue | localname | partnername) "inputvalue" param2 (inputvalue | localname | partnername) "localname" param3 (inputvalue | localname | partnername) "partnername"> <!ELEMENT default (#PCDATA)> <!ATTLIST default param1 (inputvalue | localname | partnername) "inputvalue" param2 (inputvalue | localname | partnername) "localname" param3 (inputvalue | localname | partnername) "partnername"> <!ELEMENT Systemlist (system*)> <!ELEMENT system (send, receive)> <!ATTLIST system name CDATA #REQUIRED> <!ELEMENT send EMPTY> <!ATTLIST send rule IDREF #REQUIRED debug (true | false) "false"> <!ELEMENT receive EMPTY> <!ATTLIST receive rule IDREF #REQUIRED debug (true | false) "false"> ]> <!-- XML宣言およびDTD修正禁止↑ --> |
ユーザ情報カスタマイズ定義ファイルで設定するXMLタグを、以下のXMLタグ表に示します。
XMLタグ表の項目、属性、および値の文字列は、大文字と小文字が区別されます。項目の出現順序は下表に記述してある順番に従ってください。
変換ルールを使用してユーザ情報がカスタマイズされる流れを参考に、内部項目2に指定する“変換前のユーザ情報”を、内部項目1に指定する“変換ルール”でカスタマイズし、小項目に指定した“変換後のユーザ情報”を生成するように記述してください。
なお、“変換前のユーザ情報”を使用しない場合は、内部項目2の指定は不要です。
また、内部項目1は複数指定することが可能であり、指定された順に変換処理が行なわれます。ある内部項目1に指定した変換ルールで属性値が生成されても、同じ小項目内に変換処理が行われていない別の内部項目1があれば、その変換処理が継続して行われます。
ルート項目 | 大項目 | 中項目 | 小項目 | 内部項目1 | 内部項目2 | 項目の省略可否 | 属性 | 属性の省略可否 | 説明 |
SSOUserInfo | Pluginlist | plugin |
|
|
| 可 | name | 不可 | ユーザ情報の変換を行うカスタマイズモジュールのクラス名を完全修飾名で指定します。 |
type | 不可 | カスタマイズモジュールの用途をtype属性に指定します。
| |||||||
Rulelist | rule |
|
|
| 可 | name | 不可 | ユーザ情報の変換ルールを、小項目を指定することにより定義します。 | |
postmodify | 可 | ||||||||
USER_DN |
|
| 不可 | transparent | 可 | 利用者のDNを生成する場合に、内部項目1を指定することで定義します。 | |||
input |
| 可 | name | 不可 | 変換前のユーザ情報を使用してユーザ情報を生成する場合に、内部項目2を指定することで定義します。 | ||||
select | 可 | match | 可 | 変換前のユーザ情報にmatch属性で指定した値が存在する場合に、生成する属性値の書式を指定してください。(注2)(注3) 変換前のユーザ情報が複数の値を持つ場合は、全ての値に対してmatch属性値との比較が行なわれます。 | |||||
param1 | 可 | ||||||||
param2 | 可 | ||||||||
param3 | 可 | ||||||||
default | 可 | param1 | 可 | 変換前のユーザ情報の値が、全てのselectタグのmatch属性で指定した値ではない場合に、生成する属性値の書式を指定してください。(注2)(注4) | |||||
param2 | 可 | ||||||||
param3 | 可 | ||||||||
create |
| 可 | param1 | 可 | 変換前のユーザ情報を使用しないで、ユーザ情報を生成する場合に、生成する属性値の書式を指定してください。(注2) | ||||
param2 | 可 | ||||||||
ROLE_LIST |
|
| 可 | transparent | 可 | ロール名を生成する場合に、内部項目1を指定することで定義します。 | |||
input |
| 可 | name | 不可 | 変換前のユーザ情報を使用してユーザ情報を生成する場合、内部項目2を指定することで定義します。 | ||||
select | 可 | match | 可 | 変換前のユーザ情報にmatch属性で指定した値が存在する場合に、生成する属性値の書式を指定してください。(注2)(注3) 変換前のユーザ情報が複数の値を持つ場合は、全ての値に対してmatch属性値との比較が行なわれます。 | |||||
param1 | 可 | ||||||||
param2 | 可 | ||||||||
param3 | 可 | ||||||||
default | 可 | param1 | 可 | 変換前のユーザ情報の値が、全てのselectタグのmatch属性で指定した値ではない場合に、生成する属性値の書式を指定してください。(注2)(注4) | |||||
param2 | 可 | ||||||||
param3 | 可 | ||||||||
create |
| 可 | param1 | 可 | 変換前のユーザ情報を使用しないで、ユーザ情報を生成する場合に、生成する属性値の書式を指定してください。(注2) | ||||
param2 | 可 | ||||||||
USER_ID |
|
| 不可 | transparent | 可 | 利用者のユーザIDを生成する場合に、内部項目1を指定することで定義します。 | |||
input |
| 可 | name | 不可 | 変換前のユーザ情報を使用してユーザ情報を生成する場合に、内部項目2を指定することで定義します。 | ||||
select | 可 | match | 可 | 変換前のユーザ情報にmatch属性で指定した値が存在する場合に、生成する属性値の書式を指定してください。(注2)(注3) 変換前のユーザ情報が複数の値を持つ場合は、全ての値に対してmatch属性値との比較が行なわれます。 | |||||
param1 | 可 | ||||||||
param2 | 可 | ||||||||
param3 | 可 | ||||||||
default | 可 | param1 | 可 | 変換前のユーザ情報の値が、全てのselectタグのmatch属性で指定した値ではない場合に、生成する属性値の書式を指定してください。(注2)(注4) | |||||
param2 | 可 | ||||||||
param3 | 可 | ||||||||
create |
| 可 | param1 | 可 | 変換前のユーザ情報を使用しないで、ユーザ情報を生成する場合に、生成する属性値の書式を指定してください。(注2) | ||||
param2 | 可 | ||||||||
ExtraInfo |
|
| 可 | name | 不可 | 拡張ユーザ情報を生成する場合に、内部項目1を指定することで定義します。 | |||
transparent | 可 | ||||||||
input |
| 可 | name | 不可 | 変換前のユーザ情報を使用してユーザ情報を生成する場合に、内部項目2を指定することで定義します。 | ||||
select | 可 | match | 可 | 変換前のユーザ情報にmatch属性で指定した値が存在する場合に、生成する属性値の書式を指定してください。(注2)(注3) 変換前のユーザ情報が複数の値を持つ場合は、全ての値に対してmatch属性値との比較が行なわれます。 | |||||
param1 | 可 | ||||||||
param2 | 可 | ||||||||
param3 | 可 | ||||||||
default | 可 | param1 | 可 | 変換前のユーザ情報の値が、全てのselectタグのmatch属性で指定した値ではない場合に、生成する属性値の書式を指定してください。(注2)(注4) | |||||
param2 | 可 | ||||||||
param3 | 可 | ||||||||
create |
| 可 | param1 | 可 | 変換前のユーザ情報を使用しないで、ユーザ情報を生成する場合に、生成する属性値の書式を指定してください。(注2) | ||||
param2 | 可 | ||||||||
Systemlist | system |
|
|
| 可 | name | 不可 | 相手シングル・サインオンシステムごとに、どのユーザ情報の変換ルールを適用するかを、小項目を指定することで定義します。 | |
send |
|
| 不可 | rule | 不可 | 相手シングル・サインオンシステムへユーザ情報を送信する場合に適用するユーザ情報の変換ルールをrule属性に指定してください。 | |||
debug | 可 | ||||||||
receive |
|
| 不可 | rule | 不可 | 相手シングル・サインオンシステムからユーザ情報を受信した場合に適用するユーザ情報の変換ルールをrule属性に指定してください。 | |||
debug | 可 |
注1)以下のユーザ情報が指定できます。変換前のユーザ情報に指定したユーザ情報が存在しない場合は、本タグは無効となります。ユーザ情報の詳細については、“6.2 環境変数によるユーザ情報の通知の設定”を参照してください。
USER_DN (利用者のDN)
ROLE_LIST (ロール名)(*1)
USER_ID (利用者のユーザID)
AUTH_METHOD (認証方式)
IP_ADDRESS (クライアントのIPアドレス)
FIRST_ACCESS_TIME (認証時刻)
EXPIRATION_TIME (再認証時刻)
LAST_SIGNON_TIME (前回サインオン日時)
上記以外の文字列 (拡張ユーザ情報) (*2)
(*1)ユーザ情報にロールセットが設定されている場合は、ロールセットに設定されているロール名が通知されます。
(*2)セションの管理を行っていないシステムでは、業務サーバに通知されませんが、認証サーバ間連携サービスには通知されます。
注2)java.util.Formatterで指定可能な書式で指定してください。詳細については、J2SE 5.0のJavaDocを参照してください。なお、相手シングル・サインオンシステムへ送信するユーザ情報を変換する場合には、属性値に指定可能な文字に制約はありませんが、相手シングル・サインオンシステムから受信したユーザ情報を変換する場合には、以下に示す制約があります。
ユーザ情報 | 制約 |
USER_DN | 以下を指定することはできません。
|
ROLE_LIST | 以下を指定することはできません。
|
USER_ID | 以下を指定することはできません。
|
ExtraInfo | 以下を指定することはできません。
|
(*1)自シングル・サインオンシステムがセションの管理を行なっている場合だけの制約です。
注3)match属性に指定された値は、大文字と小文字の区別が行われません。また、match属性に同一の値が指定されたselectタグが、1つのinputタグ内に複数定義されている場合には、最初に定義されたselectタグだけが有効となります。
注4)defaultタグを省略した場合、変換後にユーザ情報が出力されない場合があります。selectタグでユーザ情報が出力されない場合がある時は、defaultタグを必ず指定してください。
注5)以下の可変パラメタが使用できます。
入力データ値 (inputvalue)
自シングル・サインオンシステム名 (localname)
相手シングル・サインオンシステム名 (partnername)
以下の属性が省略された場合、省略値に示した値が指定されたと見なします。
属性 | 省略値 |
param1 | inputvalue |
param2 | localname |
param3 | partnername |
%から始まる書式指定子との対応付けは、param1、param2、param3属性で行ってください。
相手シングル・サインオン名を1番目の書式指定子とし、入力データ値を2番目の書式指定子として扱う場合
<select match="roleA" param1="partnername" param2="inputvalue">%s_%s</select> |
注6)以下の可変パラメタが使用できます。
自シングル・サインオンシステム名 (localname)
相手シングル・サインオンシステム名 (partnername)
以下の属性が省略された場合、省略値に示した値が指定されたと見なします。
属性 | 省略値 |
param1 | localname |
param2 | partnername |
%から始まる書式指定子との対応付けは、param1、param2属性で行ってください。
相手シングル・サインオン名を1番目の書式指定子として扱う場合
<create param1="partnername">somewhere in %s</create> |
注7)半角英数字、およびアンダスコア(_)が使用できます。先頭には英字を指定してください。なお、大文字と小文字の区別は行いません。また、以下の文字列は指定できません。
ssoRoleName
uid
ssoSessionInfo
USER_DN
AUTH_METHOD
IP_ADDRESS
FIRST_ACCESS_TIME
EXPIRATION_TIME
LAST_SIGNON_TIME
ROLE_LIST
USER_ID
FJ_IS_SSO_DN
FJ_IS_SSO_ROLE
FJ_IS_SSO_UID
FJ_IS_SSO_AUTHMETHOD
FJ_IS_SSO_IPADDRESS
FJ_IS_SSO_FIRSTACCESS
FJ_IS_SSO_EXPIRATION
FJ_IS_SSO_LASTSIGNONTIME
FJ_IS_SSO_ORIGINAL_UID
FJ_IS_SSO_AUTH_METHOD_EX
FJ_IS_SSO_IDP_AUTH_URL
FJ_IS_SSO_IDP_RESPONSE_TIME
注8)本属性に設定する値は、認証サーバのInterstage管理コンソールを使用して以下の項目に設定してください。すでに認証サーバ間連携の設定が完了している場合は、以下の項目に設定されている値を本属性に設定してください。
[システム] > [セキュリティ] > [シングル・サインオン] > [認証基盤] > [認証サーバ] > [環境設定] > [認証サーバ間連携サービス詳細設定[表示]] > [相手シングル・サインオンシステムの情報] > [相手シングル・サインオンシステムの設定]の[シングル・サインオンシステム名]
なお、本属性には1Byteから32Byteまでの半角の英数字、および以下の記号が指定できます。
ハイフン (-)
アンダースコア (_)
左括弧 (()
右括弧 ())
左角括弧 ([)
右角括弧 (])
注9)性能低下を招くため、運用時には使用しないでください。
ユーザ情報カスタマイズ定義ファイルの記述例
ロール名、ユーザID、および利用者のDNを以下のように変換する場合の記述例を示します。
ユーザ情報 | 変換方法 | |||
自シングル・サインオンシステム | 相手シングル・サインオンシステム | |||
変換前 | 変換後 | 変換前 | 変換後 | |
ロール名 | “一般利用者” | “role_no_1” | “role_no_1” | “guest” |
ユーザID | 変換なし | ユーザID | “partner_”+ユーザID | |
利用者のDN | 変換なし | 変換なし |
【自シングル・サインオンシステム側のユーザ情報カスタマイズ定義ファイル例】
相手シングル・サインオンシステム名に“systemB”を指定している例です。
<?xml version="1.0" encoding="Shift_JIS" ?> <!-- XML宣言およびDTD修正禁止↓ --> ~省略~ <!-- XML宣言およびDTD修正禁止↑ --> <SSOUserInfo> <Pluginlist> </Pluginlist> <Rulelist> <rule name="SendToSystemB"> <USER_DN transparent="true" /> <ROLE_LIST> <input name="ROLE_LIST"> <select match="一般利用者">role_no_1</select> </input> </ROLE_LIST > <USER_ID transparent="true" /> </rule> <rule name="ReceivedFromSystemB"> ~省略~ </rule> </Rulelist> <Systemlist> <system name="systemB"> <send rule="SendToSystemB" debug="false" /> <receive rule="ReceivedFromSystemB" debug="false" /> </system> </Systemlist> </SSOUserInfo> |
【相手シングル・サインオンシステム側のユーザ情報カスタマイズ定義ファイル例】
相手シングル・サインオンシステム名に“systemA”を指定している例です。
<?xml version="1.0" encoding="Shift_JIS" ?> <!-- XML宣言およびDTD修正禁止↓ --> ~省略~ <!-- XML宣言およびDTD修正禁止↑ --> <SSOUserInfo> <Pluginlist> </Pluginlist> <Rulelist> <rule name="ReceivedFromSystemA"> <USER_DN transparent="true" /> <ROLE_LIST> <input name="ROLE_LIST"> <select match="role_no_1">guest</select> </input> </ROLE_LIST> <USER_ID> <input name="USER_ID"> <default param1="partner" param2="inputvalue">%s_%s</default> </input> </USER_ID> </rule> <rule name="SendToSystemA"> ~省略~ </rule> </Rulelist> <Systemlist> <system name="systemA"> <send rule="SendToSystemA" debug="false" /> <receive rule="ReceivedFromSystemA" debug="false" /> </system> </Systemlist> </SSOUserInfo> |
Interstage シングル・サインオンでは、ユーザ情報を変換するカスタマイズモジュールを作成するためのJavaインタフェースクラスを提供します。(注)
各クラスのAPI仕様については、マニュアルCDの“ApplicationServer\javadocs”フォルダに格納されているJavaDoc(javadocs_sso_federation)を参照してください。
インタフェース名 | 用途 | 説明 |
SSOUserInfoSender | 送信用 | 本インタフェースを実装したクラスを作成し、変換を行うメソッドを実装することで、送信時のユーザ情報の変換を実現します。 |
SSOUserInfoReceiver | 受信用 | 本インタフェースを実装したクラスを作成し、変換を行うメソッドを実装することで、受信時のユーザ情報の変換を実現します。 |
注)提供するクラスが前提とするJavaのバージョンは5.0以降です。
Interstage シングル・サインオンでは、以下のユーザ情報を変換、および参照することができます。
各ユーザ情報の詳細については、“6.2 環境変数によるユーザ情報の通知の設定”を参照してください。
ユーザ情報 | 変換 | 参照 |
利用者のDN | 可能 | 可能 |
ロール名(注1)(注2) | 可能 | 可能 |
利用者のユーザID | 可能 | 可能 |
認証方式 | 不可 | 可能 |
クライアントのIPアドレス | 不可 | 可能 |
認証時刻 | 不可 | 可能 |
再認証時刻 | 不可 | 可能 |
前回サインオン日時 | 不可 | 可能 |
拡張ユーザ情報 | 可能 | 可能 |
注1)ロール名を変換することで、利用者のアクセスを制御することができます。例えば、以下のようにロール名を削除することで、ロールが設定されている保護リソースへのアクセスを拒否することができます。
public void modifyReceivedData ( SSOUserInformation userInfo, SSOSystemInformation systemInfo ) throws SSOCustomFailedException { // ロールの値を削除 userInfo.removeRole(); } |
注2)ユーザ情報にロールセットが設定されている場合は、ロールセットに設定されているロール名が通知されます。
カスタマイズモジュールを使用してユーザ情報を変換するカスタマイズ手順について、以下のような運用を例に説明します。
ユーザ情報を送信する相手シングル・サインオンシステム向けに、SSOUserInfoSenderインタフェースを実装したクラスを作成します。
例として、各シングル・サインオンシステム向けに以下のようなクラスを作成します。
Interstage シングル・サインオンシステムB:user.custom.SSOUserInfoSenderSystemB (注1)
Interstage シングル・サインオンシステムC:user.custom.SSOUserInfoSenderSystemC (注1)
このとき、ユーザ情報を送信する相手シングル・サインオンシステムに応じたユーザ情報の変換が行われるように、SSOUserInfoSenderインタフェースで宣言されている以下のメソッドを実装します。(注2)
initSender
modifySendingData
destroySender
ユーザ情報を送信した相手シングル・サインオンシステム向けに、SSOUserInfoReceiverインタフェースを実装したクラスを作成します。
例として、共通な変換を行う処理を実装する以下のクラスを作成します。
user.custom.SSOUserInfoReceiverSystemAll (注1)
このとき、ユーザ情報を送信する相手シングル・サインオンシステムに応じたユーザ情報の変換が行われるように、SSOUserInfoReceiverインタフェースで宣言されている以下のメソッドを実装します。(注2)
initReceiver
modifyReceivedData
destroyReceiver
作成したサブクラスをコンパイルします。(注3)(注4)
コンパイルしたサブクラスを含むjarファイルを作成します。ここでは、作成するファイルをcustomuserinfo.jarとします。(注5)
customuserinfo.jarを以下のディレクトリに格納します。
C:\Interstage\F3FMsso\ssofsv\webapps\ssofsv\WEB-INF\lib
/etc/opt/FJSVssofs/webapps/ssofsv/WEB-INF/lib
作成したクラス名をユーザ情報カスタマイズ定義ファイルに登録します。(注6)
相手シングル・サインオンシステム名に“systemB”、および“systemC”を指定している例です。
<?xml version="1.0" encoding="Shift_JIS" ?> <!-- XML宣言およびDTD修正禁止↓ --> ~省略~ <!-- XML宣言およびDTD修正禁止↑ --> <SSOUserInfo> <Pluginlist> <plugin name="CustomSendToSystemB" type="sender">user.custom.SSOUserInfoSenderSystemB</plugin> <plugin name="CustomSendToSystemC" type="sender">user.custom.SSOUserInfoSenderSystemC</plugin> <plugin name="CustomReceivedFromAll" type="receiver">user.custom.SSOUserInfoReceiverSystemAll</plugin> </Pluginlist> <Rulelist> <rule name="SendToSystemB" postmodify ="CustomSendToSystemB"> <USER_DN transparent="true"/> <ROLE_LIST transparent="true"/> <USER_ID transparent="true"/> </rule> <rule name="SendToSystemC" postmodify ="CustomSendToSystemC"> ~省略~ </rule> <rule name="ReceivedFromAll" postmodify ="CustomReceivedFromAll"> ~省略~ </rule> </Rulelist> <Systemlist> <system name="systemB"> <send rule="SendToSystemB"/> <receive rule="ReceivedFromAll"/> </system> <system name="systemC"> <send rule="SendToSystemC"/> <receive rule="ReceivedFromAll"/> </system> </Systemlist> </SSOUserInfo> |
注1)任意のパッケージ、およびクラス名が使用できます。また、パッケージの使用は任意です。
注2)変換を行うメソッド内で例外が発生した場合、Interstage シングル・サインオンのシステムのログが出力され、Webブラウザには「内部エラーが発生しました」というメッセージが表示されます。独自で変換処理を中断する場合は、SSOCustomFailedExceptionをスローするように実装してください。
注3)コンパイルに使用するJDKのバージョンは、認証サーバ間連携サービスを配備したワークユニットが使用するJavaのバージョンに合わせてください。
注4)コンパイル時には、以下のパスをクラスパスに追加する必要があります。
C:\Interstage\F3FMsso\ssofsv\lib\isssofsv.jar
/opt/FJSVssofs/lib/isssofsv.jar
注5)ファイル名は任意です。また、複数のjarファイルにクラスを分割することも可能です。ただし、複数のjarファイルに分割した場合、手順5.で作成した全てのjarファイルを格納する必要があります。
注6)ユーザ情報カスタマイズ定義ファイルに登録済みのクラスを修正した場合は、認証サーバ間連携サービスを再起動してください。認証サーバ間連携サービスの起動および停止については、“7.3.1 認証サーバ間連携サービスの起動・停止・削除”を参照してください。
user.custom.SSOUserInfoSenderSystemBの実装例を以下に示します。ただし、実装内容は、送信用、受信用を意識していません。
package user.custom; import com.fujitsu.interstage.sso.fsv.common.SSOCustomFailedException; import com.fujitsu.interstage.sso.fsv.data.SSOSystemInformation; import com.fujitsu.interstage.sso.fsv.data.SSOUserInformation; import com.fujitsu.interstage.sso.fsv.data.SSOUserInfoSender; import java.util.HashSet; import java.util.Set; public class SSOUserInfoSenderSystemB implements SSOUserInfoSender { public void initSender(){ // 必要に応じて、初期化処理を実装 } public void modifySendingData ( SSOUserInformation userInfo, SSOSystemInformation systemInfo ) throws SSOCustomFailedException { // 送信するユーザ情報の変換を実装 // 変換後のユーザ情報の値を準備 Set<String> convRole = new HashSet<String>(); convRole.add( new String( "guest") ); Set<String> convMail = new HashSet<String>(); convMail.add( new String( "admin@system-a.fujitsu.com") ); // ユーザIDを"ユーザID_systemA"に変更 StringBuffer convUserID = new StringBuffer( userInfo.getUserID() ); convUserID.append( "_systemA" ); userInfo.setUserID( convUserID.toString() ); // ロールを"guest"に変更 userInfo.setRole( convRole ); // 拡張ユーザ情報:mailを"admin@system-a.fujitsu.com"に変更 userInfo.setExtUserInfo( "mail", convMail ); } public void destroySender(){ // 必要に応じて、終了処理を実装 } } |