当前位置: 首页 > 知识库问答 >
问题:

Java 1.8 JAAS无法识别我自己生成的keytab中的主体

阳德润
2023-03-14

Java在我自己的keytab文件中找不到我的主体名称
我希望Java JAAS模块在我的keytab文件中找到主体时生成TGT。我还在同一个keytab文件中使用了kinit,这确实有效。

虽然JAAS按照配置文件的指示找到了keytab,但我得到了下一条消息:

...
Native config name: C:\Windows\krb5.ini
getRealmFromDNS: trying YEF.GSC.RD
Acquire TGT from Cache
>>>KinitOptions cache name is C:\Users\tester1\krb5cc_tester1
>> Acquire default native Credentials
Using builtin default etypes for default_tkt_enctypes
default etypes for default_tkt_enctypes: 17 16 23.
LSA: Found KrbCreds constructor
LSA: Got handle to Kerberos package
LSA: Response size is 0
LSA: Error calling function Protocol status: 1312
LSA: A specified logon session does not exist. It may already have been terminated.
>>> Found no TGT's in LSA
Principal is john@YEF.GSC.RD
null credentials from Ticket Cache
Looking for keys for: john@YEF.GSC.RD
Key for the principal john@YEF.GSC.RD not available in c:/user/tester1/keytab

(我使用debug标志-Dsun.security.krb5.debug=true来获取这些详细信息,并独立运行它而不是webstart,只是为了在不增加webstart启动开销的情况下开始工作)
配置文件说:

  WEBSTART_CLIENT_CONTEXT {
       com.sun.security.auth.module.Krb5LoginModule required 
       useTicketCache=true
       doNotPrompt=false   
       principal=john
       renewTGT=true
       useKeyTab=true
       keyTab="c:/user/tester1/keytab"
       debug=true; 
    };  

我在客户端机器上本地生成的keytab文件是:

c:\Users\tester1>klist -k -t -K -e keytab

Key tab: keytab, 6 entries found.

[1] Service principal: tester1@YEF.GSC.RD
         KVNO: 1
         Key type: 17
         Key: 0x2dccdcd29d17e2719eb5af9f1b0f7448
         Time stamp: Oct 30, 2015 15:37:02
[2] Service principal: tester1@YEF.GSC.RD
         KVNO: 1
         Key type: 16
         Key: 0xcd10890becd5fbcb526e9104765116807a5ecd38da762ab0
         Time stamp: Oct 30, 2015 15:37:02
[3] Service principal: tester1@YEF.GSC.RD
         KVNO: 1
         Key type: 23
         Key: 0xb9218bada80f02c685e1958a5042f5fc
         Time stamp: Oct 30, 2015 15:37:02
[4] Service principal: john@YEF.GSC.RD
         KVNO: 1
         Key type: 17
         Key: 0x7d4b7a98e179d7284dcd7ff3a69c890e
         Time stamp: Nov 02, 2015 13:24:37
[5] Service principal: john@YEF.GSC.RD
         KVNO: 1
         Key type: 16
         Key: 0x4ca17a0b2a58679207162cf13864c143d05e869101b5a2ef
         Time stamp: Nov 02, 2015 13:24:37
[6] Service principal: john@YEF.GSC.RD
         KVNO: 1
         Key type: 23
         Key: 0xb9218bada80f02c685e1958a5042f5fc
         Time stamp: Nov 02, 2015 13:24:37

但是由于某种原因,JAAS找不到john@YEF.GSC.RD,正如它所说:

负责人钥匙john@YEF.GSC.RDc:/user/tester1/keytab中不可用

互联网上有人提到KVNO为0。因此,我还使用以下方法进行了测试:

ktab-k keytab-ajohn@YEF.GSC.RD-n 0

但发生了完全相同的错误。想知道java希望在keytab中找到什么...

在Windows 7计算机上使用Java 1.8.0

共有1个答案

廖绍辉
2023-03-14

您的问题很可能与path错误有关。在您的配置中,您使用pathkeyTab="c:/user/tester1/keytab",当您使用klist工具检查它时,您使用另一个路径c:\User\tester1

您的配置应该指向正确的路径。如果这不是打字错误,那么应该是:

keyTab="c:/Users/tester1/keytab"

 类似资料:
  • 我更新了我的应用程序,并在我的设备上测试了它。如果我在eclipse中通过run按钮测试应用程序,那么一切工作都很好,但是如果我将它导出到一个apk中并尝试安装apk,它就会失败。 没有错误代码或其他什么,只是说app还没有安装。 知道为什么会这样吗?我在我的应用程序中只做了一些改动:我从我的应用程序中移除了basegameutils库,并迁移到了没有basegameutils的新api。就是这样

  • 问题指出: 创建一个具有长度和宽度双属性的矩形类。默认构造函数应该将这些属性设置为1。提供计算矩形周长和面积的方法,以及两个数据字段的访问器和赋值器。length和width的mutator方法应该验证传入的数字是否大于0.0且小于20.0——如果不符合这些标准,就不应该更改字段的值。 在同一文件中编写一个驱动程序类来测试您的矩形类。它应该提示用户输入矩形的长度和宽度,然后打印出矩形的面积和周长。

  • 我很难让Intellij识别从ANTLR4生成的源代码。对生成的代码的任何引用都显示为错误,代码完成不起作用,等等。

  • 事情是这样的...我认为注释处理器正在运行,但不知何故,android gradle插件无法在编译时输入生成的源代码。我检查了app/build/generated/source/apt/test/目录,并在其中发现,但由于某种原因,它没有作为依赖项导入。 有什么想法吗?这里是一个测试项目的链接,显示了我的问题

  • 问题内容: 1.分享违规 在遵循 http://programmaticponderings.wordpress.com/2012/08/08/convert- vs-2010-database-project-to-ssdt-and-automate-publishing-with-jenkins- part-33 /之后 2.使用MS build构建ms项目 在添加C:\ Windows \

  • 问题内容: 我通过清单中的“导出向导”导出了我的eclipse插件,似乎一切进行得很好(没有错误)。它在zip文件的插件目录中创建了一个.jar文件。 我以为将jar放入我的Eclipse插件目录中将进行安装(在重新启动eclipse之后),但这没有用。Eclipse看不到插件(透视图未显示) 我尝试使用“帮助”->“安装新软件”->“本地存档”,但始终显示“找不到软件” 您能帮我准备好将插件安装