星期二, 12月 24, 2013

CAS Client for .NET renew="true"

過去不算短的一段時間,一直都是在本機 IIS Express 開兩個埠模擬兩個不同的網站,它們都裝上 CAS Client for .NET 來測試單一簽入,好像沒問題?今天深究為何 renew 的值不論怎麼設的效果都一樣之下,才大吃一驚:由於兩個網站都在 localhost,所以根本就共享 Cookie!

為了要確認此參數有效,整個測試環境大修:
  1. CAS Server 必須安裝憑證。
  2. 瀏覽器所在電腦必須信任該憑證,各網站以 https 連入 CAS Server。
  3. 即使兩個網站都在本機,也要設 C:\Windows\system32\drivers\etc\hosts 給它們不同的主機名稱,例如 www.ap1.com 與 www.ap2.com。
  4. 登入後,利用瀏覽器不同的頁籤訪問 renew="false" 的網站,可正常使用;但若設定 renew="true" 的網站,則必須重新登入。

星期一, 12月 09, 2013

如何確認 PreparedStatement 有在 Oracle 被執行到?

假設程式如下:

String s = "Select COUNT(*) From TABLE1 Where ID = ?";
PreparedStatement p = connection.prepareStatement(s);
Object o = (Object)"id";
p.setObject(1, o);
ResultSet r = p.executeQuery();

可以藉由 Oracle SQL Developer 執行以下的查詢(在程式執行前後各一次):

Select FETCHES From V$SQL Where SQL_TEXT = 'Select COUNT(*) From TABLE1 Where ID = :1';

如果控制在很短的時間內,第二次的結果比前次多一,則幾乎可以確定這個敘述有被執行到。其中 V$SQL 或是 V$SQLAREA 是一個內建的統計用 View,FETCHES 是這個 View 的一個欄位,SQL_TEXT 是 SQL Statement,「:1」表示查詢語句的第一個變數。

星期一, 11月 18, 2013

Virtual Box Shared Folder for Ubuntu as Guest

當 Windows 作為 VirtualBox Guest 時,要設定 Host 上的一個目錄可在 Guest 共享是很容易的,但到 Linux 做為 Guest 時則有點麻煩,原因是多了一個「掛載」的觀念,而且權限也要注意,在此稍微摘要一下(以 VirtualBox 4.2.18 + Ubuntu 12.04 為例):
  • Guest 當然還是要 Install Guest Additions
  • Shared Folder 當然還是要設,下例是命名為 shared
  • 建立一個目錄準備用來對應 Host 分享出來的目錄,下例是在一位普通使用者 user1 桌面上的 SharedByHost 目錄
  • 掛載共享目錄:sudo -t vboxsf shared /home/user1/Desktop/SharedByHost
如此一來還只做了一半,因為 SharedByHost 只能由 root 存取,若想讓 user1 共享就還要:
  • id user1 -> 取得 user1 的 uid,下例是 1000
  • sudo -t vboxsf -o uid=1000 shared /home/user1/Desktop/SharedByHost
以上即可讓 user1 存取到 Host 分享出來的目錄,不過 Guest 重啟之後還是要再掛載才有效,否則 SharedByHost 會是個空目錄。

後記:VirtualBox 4.3.2 + Ubuntu 13.10 略有改善,共享目錄會自動掛載於 /media,並加 sf_ 前綴,而在權限方面是賦予 root 使用者與 vboxsf 群組,所以更簡單的方法是將 user1 加入 vboxsf:
  • usermod -a -G vboxsf user1

星期五, 11月 15, 2013

首度測通非 Windows 平台經瀏覽器存取 SmartCard 憑證卡

以下的順序非常重要,顛倒了就會困難重重:
  • Ubuntu 12.04 (32bit)
  • PC/SC
  • EZ100PU driver
  • /etc/rc.local: /usr/sbin/pcscd&
  • reboot
  • card reader (with any? smart card) testing ok
  • JRE
  • libHicos_p11v1.so: [JRE_HOME]/lib/i386
  • view html with signed java applet
[2014/02/06 補充]
由於上個月 Java 7u51 推出,不得不更新,否則瀏覽器(還是 Java 本身?)會抱怨版本太舊。而更新會有一些連帶要求:
  • 標示所需的 Permissions 與 Codebase,可參考這個連結。
  • 若是自簽憑證,請在 Java 的控制面板「安全」頁籤,管理憑證、匯入簽署用的憑證到「Signer CA」。千萬注意,不是「Trusted Certificates」!

星期四, 10月 17, 2013

自修手錶

手錶快沒電了,一次走兩秒。昨天換了電池與防水墊圈之後,碼錶歸零歪得更嚴重,修錶的老闆說沒辦法,心裏很鬱悶。本想送原廠修的,所以上官網,無意中發現說明書上就有教怎麼調回來,感覺撿回一隻新錶的高興。

星期五, 10月 04, 2013