Java
Feb 09, 2008
CAS認証について
どこぞで使っているCAS(Central Authentication Service)認証を使ったサービスをちょっと使ったので前から気になっていることをまとめて書く。
- クライアントとアプリケーションの参照しているDNSが両方乗っ取らられたら死ぬよね。認証サーバが変なとこ挿していても気付かない。
- さてアプリ側のDNSのみ乗っ取られたとする。偽CASサーバーを立ててアプリ側からそっちを見るようにする。偽CASサーバーは通常は透過的に本物のCASサーバーに接続させているとする。CASの手続として認証が終わったことにするとGETでチケットをアプリに渡して、アプリはチケットの検証を偽CASに問い合わせる。通常ならチケットは使い捨てのランダムな文字列なので、手動で適当にチケットを生成するなどの横取りは難しい。が、偽CASが偽チケットを許可したらどうなるか…。
- SSL証明書でサーバーの信頼性を確保?EV SSLじゃなかったら最近のSSL証明書なんてどこまで信用できるのやらという見方もできるよね。大体アプリのコードの中でSSL証明書の検証していますか?
- さて、この推測に誤りはあるのだろうか?
- さて、正しいものとして進める。確かにDNSを外部から乗っ取るのは楽ではないかもしれないが、DNSの管理者はアプリの管理者と同一とは限らない中でDNSの信頼性に頼るやりかたでいいのだろうか。脆弱性とはではいかんけどさ。SSL証明書がどこまで信用できるかがポイントかなあ。
- ところでせっかくのポータル上で動いてないのはなぜだろう。
Aug 14, 2007
Alfrescoインストール
ECM(Enterprise Content Management)をインストールする。
- Alfrescoのサイトからtomcatバンドルをダウンロード。バージョンは2.1。
- /opt/alfrescoにtarballを展開。
- DBはHSQLで妥協。
- JAVA_HOME=/usr/lib/jvm/java-6-sun sh alfresco.sh start で起動。JAVA_HOMEがないと怒られる。
- sambaが動いているとポートがかぶるので問題あります。止めときましょう。
- http://localhost:8080/alfresco にアクセス
- 見えた。ばんざーい。
Aug 02, 2007
Openbravoに挑戦
オープンソースのERPのOpenbravoに挑戦。
2.31betaのバイナリパッケージをインストール。むー、tomcatがエラーを吐く。
2007/08/01 20:15:31 org.apache.catalina.loader.WebappClassLoader validateJarFile
情報: validateJarFile(/var/lib/tomcat5.5/webapps/openbravo/WEB-INF/lib/servlet-a
pi.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class:
javax/servlet/Servlet.class
多分jarファイルの衝突とかなんとかだろう。
ちがった。こんなのどうでもいい。
2007/08/01 20:28:35 org.apache.catalina.core.StandardContext start
致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/openbravo]
こっちのほうが問題だ。
捜せば同じ問題で悩んでいる人がいた。tomcatのセキュリティのパラメータらしい。Debianは/etc/default/tomcat5.5を編集する。TOMCAT5_SECURITY=noとすればOK。よし、ログイン画面が出たとこで今日は終了する。
Apr 29, 2007
apacheds-1.5.0を使ってみる
いつのまにか(4/12)にリリースされていた。
# java -jar apacheds-1.5.0-linux-i386-setup.jar
を実行する。適当にウィザードに答える。管理者がuid=admin,ou=systemになっていた。間違えてメモしていたかな。conf/server.xmlに設定が書いてあるので気にいらなかったら変更する。
Multi-Master replicationが実装されたそうなので、そのうち試してみることにする。
Apr 21, 2007
Sun Java Enterprise System 5
ためしにインストール。
Solarisが普通なんだろうけどCentOS4に入れてみる。インストーラは見慣れたSunのJavaを使ったインストーラかね。
メモリは1GB、スワップに4GB要求とはさすがだね。
なんだかいっぱいありすぎてわけがわかりません。何ができるんですか、これ。
えーと、CentOSに入れようとしたら途中から進まなくなったので中断。何か管理ツールに接続できないようだ。意味わかんね。
Mar 25, 2007
JasperReportsで日本語を使う
次は日本語だね、って適当にやってみるとエラーが出る。
次にJavaのコードの変更。コード中に適当に日本語のデータを埋め込む。よし、これで実行…、あれ?
net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName : HeiseiMin-W3
pdfEncoding : UniJIS-UCS2-H
isPdfEmbedded : false
at net.sf.jasperreports.engine.export.JRPdfExporter.getFont(JRPdfExporter.java:1465)
at net.sf.jasperreports.engine.export.JRPdfExporter.getChunk(JRPdfExporter.java:1368)
at net.sf.jasperreports.engine.export.JRPdfExporter.getPhrase(JRPdfExporter.java:1351)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportText(JRPdfExporter.java:1708)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:590)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:554)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:519)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:306)
at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:126)
at MapArrayDSReport.main(MapArrayDSReport.java:68)
というようなエラーが。調べてみるとiTextがデフォルトでCJKに対応してないからということが原因だった。iTextAsian.jarをダウンロードしてきてCLASSPATHに追加すると見事表示された。ここはまるので注意。
- http://www.lowagie.com/iText/faq.html#asianfonts
- http://itextpdf.sourceforge.net/ - 本当は上のFAQのリンクがあるんだけど、Not Foundなので直接こっちから
JasperReportに挑戦
やっとこさJasperReportを使ったプログラムを書けた。
public static void main(String[] args) {
String templatePath = "./template/AircraftReport.jrxml";
String destPath = "./JasperSample1.pdf";
try {
JasperReport jasperReport = JasperCompileManager
.compileReport(templatePath);
JRDataSource dataSource = createReportDataSource();
JasperPrint print = JasperFillManager.fillReport(jasperReport,
new HashMap(), dataSource);
JasperExportManager.exportReportToPdfFile(print, destPath);
System.out.println("done");
} catch (Exception e) {
e.printStackTrace();
}
}
てな具合です。
ThinkITの記事はデータソースがデータベースとの接続を前提とした記事になっていたので別のコードを見なきゃデータソース変更の方法がわからなかっただけです。一回書いてみると別にデータソースの変更に面倒な話は何もない。Eclipseを使ったから勝手に補完にヘルプで楽だった。
Tikal
Eclipseのpluginの管理ツールのTikalを使ってみる。
Mar 21, 2007
JPype
PythonからJavaのライブラリを呼び出すソフトウェア。
CインターフェイスからVMを呼び出すのかなとソースを斜め読みした適当な発言。
これでJasperReportsがPythonから使えれば便利だと思う。
ちなみにこんなふうになる。
>>> from jpype import *
>>> startJVM("/usr/lib/jvm/java-6-sun/jre/lib/i386/server/libjvm.so", "-ea")
>>> java.net.URL("http://example.com")
<jpype._jclass.java.net.URL object at 0xb7d301ec>
>>> u = java.net.URL("http://example.com")
>>> u.host
u'example.com'
>>> u.protocol
u'http'
これはすごいかも。
Jan 22, 2007
JasperIntelligence
JasperIntelligenceをためすことに。
Jan 21, 2007
BIRT
帳票ツールのBIRTをためそうとしたが…。
Jan 11, 2007
iReportとJRE
JasperReportsで遊ぶことにしたので、フォーム作成ツールのiReportを動かそうとする。

