ここでは、Java言語を用いてSSOリポジトリを操作するユーザプログラムの記述例を紹介します。
上記以外にSSOリポジトリを操作するユーザプログラムが必要な場合は、紹介している記述例を参考に、運用にあわせたユーザプログラムを作成してください。
上記の処理には、共通した前処理と後処理があります。これらのリポジトリ操作処理は、前処理と後処理の間に挿入してプログラムを作成してください。
以下に、共通処理について説明します。
以下の例では、ssohostという名前のホストにポート番号389を使用して、セキュリティレベル“simple”で接続します。
bindDnおよびpasswordには、管理者用DNとパスワードをそれぞれjava.lang.Stringで指定してください。
java.util.Hashtable env = new java.util.Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://ssohost:389"); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, bindDn); env.put(Context.SECURITY_CREDENTIALS, password); DirContext ctx = new InitialDirContext(env); |
管理者用DNとパスワードについては、パスワードアタックへの対策を考慮し、取り扱いには十分注意してください。
パスワードアタックへの対策については、“セキュリティシステム運用ガイド”の“セキュリティ侵害の脅威”-“Interstage シングル・サインオン”-“セキュリティ対策”を参照してください。
前処理で接続したリポジトリとの接続をクローズします。
ctxは、共通の前処理で得られた結果を使用します。
ctx.close(); |
なお、SSOリポジトリを操作するユーザプログラムを作成する際は、SSOリポジトリの正しい設計のもと、不正なSSOリポジトリデータを作成しないよう十分注意してください。
SSOリポジトリの設計については、“2.2.1 SSOリポジトリの設計”を参照してください。
前提知識としてLDAPの知識、およびJava言語の知識が必要です。使用するJava言語のAPIについては、Java言語のAPI仕様等を参照してください。
また、前処理で必要となる環境プロパティなど、Java言語を用いたアプリケーションの作成に関する詳細は“ディレクトリサービス運用ガイド”の“アプリケーションの作成(JNDI)”を参照してください。
なお、ここで紹介するプログラム例では、使用するクラスのパッケージ表記と例外の取り扱いを省略しています。実際に作成するプログラムでは、以下のimport宣言と例外の処理が必要です。
以下のimport宣言を追加してください。
import javax.naming.*;
import javax.naming.directory.*;
次の例外に対する処理を追加してください。
javax.naming.NamingException
ユーザプログラムは、セキュリティを十分考慮し、運用に合わせた場所に配置してください。また、エラーハンドリングについても、必要に応じて記述を追加してください。