问题标签 [spring-security-kerberos]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1911 浏览

azure-active-directory - 如何在 Azure Active Directory 中使用 kerberos 身份验证实现单点登录

使用 Azure Active Directory 当我为我的 Web 应用程序应用单点登录时,我能够成功地执行基于密码的单点登录。

但是当我使用集成 Windows 身份验证(主要用于 kerberos 身份验证)时,我无法配置它。我很困扰。

谁能指导我如何为 Web 应用程序启用 kerberos 身份验证。或者请向我发送任何示例链接,如何为 Web 应用程序设置 kerberos 身份验证。

谢谢!

0 投票
1 回答
2808 浏览

spnego - Kerberos:上下文发起者的 GSSContext 名称为空

我正在尝试通过 Kerberos/SPNEGO 在我的应用程序中集成 SSO,如此处所述https://docs.spring.io/spring-security-kerberos/docs/1.0.2.BUILD-SNAPSHOT/reference/htmlsingle/#samples- sec-server-win-auth

我的 context.xml 看起来像这样:

当显式打开登录表单并输入 AD 凭据时,我可以访问我的应用程序的秘密部分(所以它似乎一般工作)。

当我尝试在没有先前显式登录的情况下访问机密部分(例如 /myapp/administration)时,我得到一个 BadCredentialsException,并显示“上下文启动器的 GSSContext 名称为空”。

我认为异常表明从客户端发送回 Kerberos 的 TGT 已修改/未按预期进行,因此不假定客户端可信赖以接收服务票证。但我不太确定这是否正确。

所以....我错过了什么?

0 投票
2 回答
2971 浏览

spring - 用于 REST API (Tomcat) 的 Spring Security Kerberos SSO

这是我的问题:

上下文:-Windows Server 2012 与 ActiveDirectory -Tomcat -Rest API (Spring)

我目前正在尝试限制 REST 请求。我希望只有特定的 AD 组才能访问特定资源。我仅限于 Kerberos 身份验证。

系统配置

  1. 在域“Tomcat”中创建用户
  2. setspn -a HTTP/apirest.domain@DOMAIN
  3. 使用 ktpass 生成一个 tomcat.keytab

API 休息配置

我正在使用 github 上的 spring 安全示例,您可以在此处找到:

https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples/sec-server-win-auth

我知道有一个入口点,这在我的上下文中不需要(API Rest)。我选择了这个示例,因为它似乎使用了 windows 身份验证上下文并使用它在 spring 安全上下文中自动对我进行身份验证。紧接着,发送一个 ldap 请求以提取有关登录用户的所有信息。就我而言,我需要提取组。

我也在使用:

https://github.com/GyllingSW/kerberos-demo

使用类“RoleStrippingLdapUserDetailsMapper.java”而不是“ActiveDirectoryLdapAuthoritiesPopulator”来提取用户的角色。此实现还提供 localhost 身份验证,但 NTLM 令牌的问题似乎在 spring security 的最后一次提交中得到修复。

我不确定这是否是做我想做的事情的正确方法。

我的身份验证似乎失败了,我的日志中只有一件事出错了..

“未设置属性 'userDn' - 匿名上下文将用于读写操作”

问题

  1. 我必须使用 tomcat 帐户运行我的 tomcat 服务吗?(似乎是,是的)
  2. 我是否使用 Kerberos 安全性做正确的事情?
  3. 如何摆脱匿名上下文?
  4. 匿名上下文似乎是在 Tomcat 启动后立即设置的。我想在我的用户(例如,user1)请求其余 API(EntryPoint 或其他)之后获取上下文

如果有不清楚的地方告诉我,我会尝试重新制定!

谢谢,

0 投票
1 回答
21 浏览

java - 在窗口机器上找出远程用户登录时间的方法

我有一个要求,要求用户在 Windows 机器上登录时间,一旦用户启动应用程序,我应该捕获它。仅供参考,我们使用的是 SSO,服务器端应用程序是用 java 编写的,客户端是 react js。我在这里先向您的帮助表示感谢

0 投票
0 回答
906 浏览

java - 设置 Spring Security Kerberos - spn 和 keytab

在尝试将示例 Spring Security kerberos 应用程序集成到我的实际应用程序之前,我正在尝试使其运行。这是我正在运行的应用程序:https ://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples/sec-server-win-auth/src/main

我已经设置了 spn,并创建了 keytab,在运行应用程序时,我尝试使用 chrome 访问,我得到一个错误 500

在服务器控制台上显示为:

我可以从代码中看到,当getSrcName()GSSContext返回 null 时会发生这种情况。

现在我只在我的笔记本电脑上运行,尝试让它工作。运行 spring 应用程序的 java 进程在我用来登录的同一 Windows 帐户下运行。DNS 已配置,以便我可以使用laptop-name.mycompany.com以下是我为 spn 和 keytab 所做的访问我的笔记本电脑:

setspn -A HTTP/laptop-name.mycompany.com:8080 myWindowsUsername

ktpass -princ HTTP/laptop-name.mycompany.com:8080@MYCOMPANY.COM -pass password123 -mapuser myWindowsUsername@mycompany.com -out keytab.keytab -ptype KRB5_NT_PRINCIPAL

security我添加的 java 目录中krb5.conf,其中包含以下内容:

我不确定这是否是一个问题,但是当我使用 kinit 验证密钥表时,我在输出的底部看到了这个

输出还表明主体是-V@MYCOMPANY.COM看起来不正确的。

对于 keytabs 和 GSS api 的使用,我还是个新手。我不确定这是否是我的 keytab 生成、spn 设置或我的系统配置的问题,任何帮助都会非常感激。

0 投票
1 回答
5432 浏览

kerberos - 如何防止浏览器发送 NTLM 凭据?

我正在一个网站上工作,我们希望使用 Spring Security Kerberos 使用 Kerberos 身份验证。所以,我们不支持 NTLM。当用户发出未经身份验证的请求时,服务器将回复带有标头 WWW-Authenticate: Negotiate 的 HTTP 401。

问题:对于某些用户/配置,浏览器将发送 NTLM 凭据。服务器不一定在 Windows 上运行,因此它无法处理 NTLM 凭据。

据我了解,“协商”的意思是“请尽可能向我发送 Kerberos,否则发送 NTLM”。是否有其他设置显示“仅向我发送 Kerberos”?或者有什么方法可以告诉浏览器该站点只支持 Kerberos?

作为后续,为什么浏览器没有可用的 Kerberos?在这种情况下,他们登录到同一个域。也许他们的凭据已经过期?

0 投票
0 回答
232 浏览

java - Java 中 OSI PI 中的 Kerberos 身份验证

在身份验证方面,我是新手Kerberos

我可以通过提供用户名和密码直接从浏览器登录访问 API url。我通过启用debug日志签入事件查看器,它给了我以下输出:

我试图通过遵循这些文章在 Java 中以编程方式实现,但对 conf 文件krb5.conflogin.conf这些文件中提到的文件有些困惑:

1) http://www.chrisweldon.net/sharepoint/sharepoint-rest-api-authentication-from-java/

2) https://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html

这些文件是需要我自己创建还是会出现在服务器上?

0 投票
0 回答
320 浏览

java - 使用 GenericJackson2JsonRedisSerializer 时未提供有效凭据

我正在尝试使用 spring-kerberos-core 和 spring-data-redis 编写应用程序。

当我使用 JdkSerializationRedisSerializer 时,在第二个应用程序中出现错误

这是合乎逻辑的,因为我创建了自己的类,它在第一个应用程序中扩展了 org.springframework.security.core.userdetails.User 的 User.class,而第二个应用程序不知道它。

但是当我使用 GenericJackson2JsonRedisSerializer 时,我得到了异常:

这是我对 Bean 的辩护:

UPD1 也许我得到的错误是另一个异常的结果

0 投票
0 回答
945 浏览

sql-server - Spring Boot JavaKerberos 身份验证问题

我正在尝试使用 JavaKerberos 连接到 SQL-Server。我的 Jaas conf 文件如下所示:

这是我得到的错误

这就是“ /etc/krb5.conf ”的样子

0 投票
1 回答
2927 浏览

python - 未指定的 GSS 失败:... kvno [Number] 在 keytab 中找到但不是 enctype rc4-hmac

我正在尝试运行验证来自客户端的授权令牌的代码。我在一个函数中编写了这段代码:

但是代码在rc = kerberos.authGSSServerStep(state, token)(标记代码中的行)处失败,并出现以下错误:

还将此错误扔到屏幕上:

我的问题是:为什么我会收到此消息?我在 Active Directory 中配置的用户标记为已This account supports Kerberos AES 256 bit encryption启用,并且使用enctypekeytab创建的文件。/crypto AES256-SHA1

为什么我的服务器(ubuntu 机器Ubuntu 18.04上的 docker-)试图用rc4-hmacenctype 对它进行加密?我该如何解决?

编辑也许我的问题应该是:谁告诉我enctype应该在哪个阅读keytab