标签: gssapi

Java GSS-API服务票证未使用Java保存在凭据高速缓存中

我使用GSS-API创建了2个演示Kerberos客户端.一个在Python3中,第二个在Java中.两个客户端似乎大致相同,并且两者都"起作用",因为我获得了我的Java GSS-API服务主体接受的服务票证.

但是在测试时我注意到Python客户端将服务票据保存在kerberos凭证缓存中,而Java客户端似乎没有保存票证.

我使用"klist"来查看凭证缓存的内容.

我的客户使用FreeIPA作为Kerberos环境在Lubuntu 17.04虚拟机上运行.我正在使用OpenJDK 8 u131.

问题1: Java GSS-API是否不保存凭证缓存的服务票证?或者我可以更改我的代码吗?

问题2:服务票据未保存到缓存这一事实是否有任何缺点?

我的假设是缓存的服务票据减少了与KDC的交互,但评论了如何使用Windows Java客户端保存Kerberos服务票证?建议事实并非如此,但是这个Microsoft技术说明"每次想要访问这个特定服务器时,客户端都不需要返回KDC".

问题3:来自python客户端的缓存服务票证在几分钟后消失 - 在到期日之前很久.是什么导致他们消失?

Python代码

#!/usr/bin/python3.5

import gssapi
from io import BytesIO

server_name = 'HTTP/app-srv.acme.com@ACME.COM'
service_name = gssapi.Name(server_name)

client_ctx = gssapi.SecurityContext(name=service_name, usage='initiate')
initial_client_token = client_ctx.step()
Run Code Online (Sandbox Code Playgroud)

Java代码

System.setProperty("java.security.krb5.conf","/etc/krb5.conf");
System.setProperty("javax.security.auth.useSubjectCredsOnly","false");

GSSManager manager = GSSManager.getInstance();
GSSName clientName;
GSSContext context = null;

//try catch removed for brevity
GSSName serverName = 
      manager.createName("HTTP/app-srv.acme.com@ACME.COM", null);

Oid krb5Oid = new Oid("1.2.840.113554.1.2.2");

//use default credentials
context = manager.createContext(serverName,
    krb5Oid,
    null, …
Run Code Online (Sandbox Code Playgroud)

java kerberos gssapi

4
推荐指数
1
解决办法
1722
查看次数

使用Java实现的Kerberos SSO

我正在尝试创建一个JAVA程序,它将获取我的Windows用户凭据,然后连接到我的unix盒上的kerberos并进行身份验证并允许我使用服务,例如LDAP服务器.

我发现的所有示例都倾向于在运行中询问我的密码,我不希望这样 - 我希望能够运行该程序并且'如果通过魔法'即可通过kerberos认证.

任何链接和示例表示赞赏.

java windows-xp kerberos gssapi single-sign-on

3
推荐指数
1
解决办法
2623
查看次数

解密OpenLDAP密码

我的OpenLDAP中有一组用户,我希望从中获取一些信息,例如"cn"和"userPassword".

但是,当我检索这些详细信息时,密码不是纯文本,即使它在我的LDAP服务器中设置为此密码.

任何想法如何解决这个问题?

java ldap openldap gssapi jaas

3
推荐指数
1
解决办法
1万
查看次数

Linux 中的 Paramiko 错误:“ImportError:无法导入 GSS-API/SSPI 模块”

我在我的机器上遇到了这个问题,我花了几个小时来解决这个问题,我希望它可以帮助其他遇到同样问题的人。

python paramiko gssapi

3
推荐指数
1
解决办法
3583
查看次数

使用Microsoft IE中的Active Directory SSO到Java服务器时,为什么会出现GSS异常?

我正在为Java Web应用程序构建一个Active Directory单点登录身份验证系统(使用SPNEGO/Kerberos),一切都可以正常使用Firefox或(据报道)Safari,但Internet Explorer会导致异常:

GSSException: Channel binding mismatch (Mechanism level: ChannelBinding not provided!)
Run Code Online (Sandbox Code Playgroud)

事实上,我认为IE在安装Windows补丁之前有效.

java kerberos active-directory spnego gssapi

2
推荐指数
1
解决办法
5388
查看次数

子错误代码 568 对 Active Directory 的 LDAP 错误 49 意味着什么

我正在编写一些使用 SASL GSSAPI 对 Active Directory 进行身份验证的 Java 代码。大多数情况下,这段代码运行良好,但对于一位用户,我得到了响应:

javax.naming.AuthenticationException: [LDAP: error code 49 - 8
0090304: LdapErr: DSID-0C0904D1, comment: AcceptSecurityContext error, data 568,
v1772 ]
Run Code Online (Sandbox Code Playgroud)

我知道 49 表示这是一个身份验证失败,并且相关的子代码是 568,但我只知道该数据的以下含义:

  • 525 - 未找到用户
  • 52e - 无效的凭据
  • 530 - 此时不允许登录
  • 532 - 密码已过期
  • 533 - 帐户已禁用
  • 701 - 帐户已过期
  • 773 - 用户必须重置密码

到目前为止,我无法从 Microsoft 找到这些错误代码的权威来源(此列表是从论坛帖子拼凑而成的),而且我找不到与该 568 错误相关的任何内容。

有谁知道这是什么意思?

编辑:看起来这个列表的来源来自 IBM 的这个文档

java jndi ldap active-directory gssapi

1
推荐指数
1
解决办法
3047
查看次数