问题标签 [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.
azure-active-directory - 如何在 Azure Active Directory 中使用 kerberos 身份验证实现单点登录
使用 Azure Active Directory 当我为我的 Web 应用程序应用单点登录时,我能够成功地执行基于密码的单点登录。
但是当我使用集成 Windows 身份验证(主要用于 kerberos 身份验证)时,我无法配置它。我很困扰。
谁能指导我如何为 Web 应用程序启用 kerberos 身份验证。或者请向我发送任何示例链接,如何为 Web 应用程序设置 kerberos 身份验证。
谢谢!
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 已修改/未按预期进行,因此不假定客户端可信赖以接收服务票证。但我不太确定这是否正确。
所以....我错过了什么?
spring - 用于 REST API (Tomcat) 的 Spring Security Kerberos SSO
这是我的问题:
上下文:-Windows Server 2012 与 ActiveDirectory -Tomcat -Rest API (Spring)
我目前正在尝试限制 REST 请求。我希望只有特定的 AD 组才能访问特定资源。我仅限于 Kerberos 身份验证。
系统配置
- 在域“Tomcat”中创建用户
- setspn -a HTTP/apirest.domain@DOMAIN
- 使用 ktpass 生成一个 tomcat.keytab
API 休息配置
我正在使用 github 上的 spring 安全示例,您可以在此处找到:
我知道有一个入口点,这在我的上下文中不需要(API Rest)。我选择了这个示例,因为它似乎使用了 windows 身份验证上下文并使用它在 spring 安全上下文中自动对我进行身份验证。紧接着,发送一个 ldap 请求以提取有关登录用户的所有信息。就我而言,我需要提取组。
我也在使用:
https://github.com/GyllingSW/kerberos-demo
使用类“RoleStrippingLdapUserDetailsMapper.java”而不是“ActiveDirectoryLdapAuthoritiesPopulator”来提取用户的角色。此实现还提供 localhost 身份验证,但 NTLM 令牌的问题似乎在 spring security 的最后一次提交中得到修复。
我不确定这是否是做我想做的事情的正确方法。
我的身份验证似乎失败了,我的日志中只有一件事出错了..
“未设置属性 'userDn' - 匿名上下文将用于读写操作”
问题
- 我必须使用 tomcat 帐户运行我的 tomcat 服务吗?(似乎是,是的)
- 我是否使用 Kerberos 安全性做正确的事情?
- 如何摆脱匿名上下文?
- 匿名上下文似乎是在 Tomcat 启动后立即设置的。我想在我的用户(例如,user1)请求其余 API(EntryPoint 或其他)之后获取上下文
如果有不清楚的地方告诉我,我会尝试重新制定!
谢谢,
java - 在窗口机器上找出远程用户登录时间的方法
我有一个要求,要求用户在 Windows 机器上登录时间,一旦用户启动应用程序,我应该捕获它。仅供参考,我们使用的是 SSO,服务器端应用程序是用 java 编写的,客户端是 react js。我在这里先向您的帮助表示感谢
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 设置或我的系统配置的问题,任何帮助都会非常感激。
kerberos - 如何防止浏览器发送 NTLM 凭据?
我正在一个网站上工作,我们希望使用 Spring Security Kerberos 使用 Kerberos 身份验证。所以,我们不支持 NTLM。当用户发出未经身份验证的请求时,服务器将回复带有标头 WWW-Authenticate: Negotiate 的 HTTP 401。
问题:对于某些用户/配置,浏览器将发送 NTLM 凭据。服务器不一定在 Windows 上运行,因此它无法处理 NTLM 凭据。
据我了解,“协商”的意思是“请尽可能向我发送 Kerberos,否则发送 NTLM”。是否有其他设置显示“仅向我发送 Kerberos”?或者有什么方法可以告诉浏览器该站点只支持 Kerberos?
作为后续,为什么浏览器没有可用的 Kerberos?在这种情况下,他们登录到同一个域。也许他们的凭据已经过期?
java - Java 中 OSI PI 中的 Kerberos 身份验证
在身份验证方面,我是新手Kerberos
。
我可以通过提供用户名和密码直接从浏览器登录访问 API url。我通过启用debug
日志签入事件查看器,它给了我以下输出:
我试图通过遵循这些文章在 Java 中以编程方式实现,但对 conf 文件krb5.conf
和login.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
这些文件是需要我自己创建还是会出现在服务器上?
java - 使用 GenericJackson2JsonRedisSerializer 时未提供有效凭据
我正在尝试使用 spring-kerberos-core 和 spring-data-redis 编写应用程序。
当我使用 JdkSerializationRedisSerializer 时,在第二个应用程序中出现错误
这是合乎逻辑的,因为我创建了自己的类,它在第一个应用程序中扩展了 org.springframework.security.core.userdetails.User 的 User.class,而第二个应用程序不知道它。
但是当我使用 GenericJackson2JsonRedisSerializer 时,我得到了异常:
这是我对 Bean 的辩护:
UPD1 也许我得到的错误是另一个异常的结果
sql-server - Spring Boot JavaKerberos 身份验证问题
我正在尝试使用 JavaKerberos 连接到 SQL-Server。我的 Jaas conf 文件如下所示:
这是我得到的错误
这就是“ /etc/krb5.conf ”的样子
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-hmac
enctype 对它进行加密?我该如何解决?
编辑也许我的问题应该是:谁告诉我enctype
应该在哪个阅读keytab
?