2012-05-03 130 views
3

我承認並不熟悉JAAS API,但需要幫助我們調查升級到jre 7時遇到的問題。以前可以使用的應用程序使用當前登錄的Windows用戶名自動登錄停止工作。經過一番討論後,它涉及到這一行代碼。Credentials.acquireTGTFromCache(null,null)使用jre 7返回null

sun.security.krb5.Credentials.Credentials.acquireTGTFromCache(null, null); 

此使用JRE 6,當我在最簡單的形式寫了一個測試類,仍然可以看到相同的行爲,所以它不能是由於在使用的JRE 7 JVM時返回null,但返回正確的crendentials代碼在我們自己的類中。

package test; 

import sun.security.krb5.Credentials; 

public class Scratch { 
    public static void main(final String args[]) throws Exception { 
     final Credentials yaoza = Credentials.acquireTGTFromCache(null, null); 
     System.out.println(yaoza); 
    } 
} 

難道這是某種配置問題?任何答案或指向正確的方向將不勝感激。謝謝!

+0

出於好奇 - 您可以確認在JRE 6或JRE 7下運行時 - 您的應用程序正在以「管理員」身份運行[處於升高狀態]還是筆記? – hawkeye

+0

對不起,但我不完全按照你的問題。我以非管理員身份登錄到Windows,並在Eclipse中運行我的測試類。 – RAY

+0

當你運行eclipse時,你是否右鍵點擊圖標並選擇「以管理員身份運行」(如果你不知道,那麼我認爲答案是否定的) – hawkeye

回答

1

在Windows註冊表中,在這裏:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters 

有明顯應該是以下重點:

allowtgtsessionkey REG_DWORD (1) 

...根據某人在這個線程: https://forums.oracle.com/forums/thread.jspa?threadID=2343216

由於在那裏提到,它可能是JDK6中的一個錯誤,它首先在工作。

+0

我是否從某個地方認識你? – RAY