小编Mat*_*tan的帖子

GSSException:修改了消息流(41)

我正在使用森林架构中的LDAP(所有服务器和我的服务器都是Windows).我使用NTLM身份验证绑定到AD.

我有一个JAVA代码,可以对LDAP服务器执行操作.

代码被包装为tomcat servlet.

直接运行JAVA代码(只是作为应用程序执行LDAP身份验证代码)时,绑定对本地域(本地域=我登录到Windows,并与此域的用户运行此进程)和外部域都有效.

当将JAVA代码作为servlet运行时,绑定工作并对来自一个域的用户进行身份验证,但如果我尝试对来自其他域的用户进行身份验证,则无法正常工作,它将无法工作(仅当我重新启动tomcat时它才会起作用).

我得到一个例外:

GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Message stream modified (41))]]
Run Code Online (Sandbox Code Playgroud)

我会提到它是相同的代码,具有相同的配置和相同的krb5文件.

编辑: 更多信息:

这是我的代码:

public void func(String realm, String kdc) {
    try {
      URL configURL = getClass().getResource("jaas_ntlm_configuration.txt");
        System.setProperty("java.security.auth.login.config", configURL.toString());

            System.setProperty("java.security.krb5.realm", realm);
            System.setProperty("java.security.krb5.kdc",kdc);

        // If the application is run on NT rather than Unix, use this name
        String loginAppName = "MyConfig";

        // Create login context
        LoginContext lc = new LoginContext(loginAppName, new SampleCallbackHandler());

        // Retrieve the information on the …
Run Code Online (Sandbox Code Playgroud)

java security ntlm kerberos gssapi

8
推荐指数
2
解决办法
9026
查看次数

忽略Axis客户端上的WCF服务的认证身份验证

我为WCF服务创建了一个轴客户端(客户端由Eclipse生成,使用WSDL作为输入).

使用HTTP时客户端工作正常.

使用HTTPS时,我收到以下异常:

javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径

我理解错误,但我不想给它一个证书所在的位置.

我想告诉Axis避免这一步(接受任何证书而不检查它).

我知道怎么用HttpsURLConnection(创建一个什么都不做的自定义验证器),但我不知道怎么用轴...(我怎么能告诉轴使用我的自定义验证器,或者更好,怎么能我告诉它完全忽略这一步骤.

有人能帮我吗?

谢谢,

玛坦

java security https wcf axis

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

GSSAPI 中的 javax.naming.AuthenticationException

我正在尝试使用 JAVA GSSAPI 执行 NTLM 绑定。

我收到此错误:

javax.naming.AuthenticationException:GSSAPI [根异常是 javax.security.sasl.SaslException:GSS 启动失败 [由 GSSException 引起:未提供有效凭据(机制级别:票证请求中的选项设置无效。(101))]]

我认为(不确定)它在过去有效。为了解决其他问题,我尝试了“kinit”。从那时起停止工作。我什至删除了缓存文件(在 Windows 中找不到 kclear),但仍然存在这个问题。

我该如何解决?

java security ntlm kerberos gssapi

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

从证书中读取替代名称

我想编写一个代码,从证书的“ 使用者备用名称”下的“ 其他名称”中读取“ 用户主体名称”

我有一个X509证书。

我做了(证书是X509Certificate对象):

Collection san = certificate.getSubjectAlternativeNames()
Run Code Online (Sandbox Code Playgroud)

如何获得用户主体名称?

谢谢!

java certificate ssl-certificate x509certificate x509

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

无法从AD获得TGT

我正在尝试使用JAVA从Active Directory获取TGT进行身份验证.

这是我的代码:

try
{
    URL localURL = super.getClass().getResource("jaas_ntlm_configuration.txt");
    System.setProperty("java.security.auth.login.config", localURL.toString());

    LoginContext localLoginContext = new LoginContext("GetLoginNameKerberos", new SampleCallbackHandler());

    localLoginContext.login();

    Subject localSubject = localLoginContext.getSubject();

    .....
}
catch (LoginException localLoginException) {
    localLoginException.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

此代码在一台服务器上运行,但在其他服务器上,它在"localLoginContext.login();"上失败.使用此输出:

>>>KinitOptions cache name is C:\Users\x\krb5cc_x
LSA: Found Ticket
LSA: Made NewWeakGlobalRef
LSA: Found PrincipalName
LSA: Made NewWeakGlobalRef
LSA: Found DerValue
LSA: Made NewWeakGlobalRef
LSA: Found EncryptionKey
LSA: Made NewWeakGlobalRef
LSA: Found TicketFlags
LSA: Made NewWeakGlobalRef
LSA: Found KerberosTime
LSA: Made NewWeakGlobalRef
LSA: Found String
LSA: Made NewWeakGlobalRef
LSA: …
Run Code Online (Sandbox Code Playgroud)

java security kerberos active-directory

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