Articles of kerberos

如何在Tomcat / linux服务器上configurationKerberos?

我正在尝试在运行在Linux上的Tomcat上的Java web-app中设置Kerberos身份validation。 我正在使用spring security kerberos扩展。 我在用着: jdk 1.7u75 spring-security-kerberos 1.0.0.RELEASE MS活动目录 在我的本地开发机器(Windows)上一切运行良好。 但是,在将应用程序部署到一台linux机器后,身份validation不再起作用。 我强烈怀疑我的Kerberosconfiguration有问题: [libdefaults] default_realm = INT.MYCOMPANY.DE ccache_type=4 kdc_tymesync=1 forwardable=true proxiable=true [realms] INT.MYCOMPANY.DE = { admin_server = xyz.mycompany.de kdc = xyz.mycompany.de } [domain_realm] .INT.MYCOMPANY.DE = INT.MYCOMPANY.DE int.mycompany.de = INT.MYCOMPANY.DE .int.mycompany.de = INT.MYCOMPANY.DE .mycompany.de = INT.MYCOMPANY.DE mycompany.de = INT.MYCOMPANY.DE [logging] #kdc = console (服务器和领域名称已更改) Spring安全configuration: […]

使用httpclient \ kerberos以编程方式设置用户名,而不是提示

我有一个linux \ java6客户端,它将通过KERBEROS向sharepoint2010进行身份validation,然后使用Apache Commons HttpClient 4.2发送HTTP REST Web服务 如果我在连接我的客户端运行之前,从命令行"kinit myuser@mydomain"运行平滑。 我的问题是,如果我不运行kinit,我得到一个用户名提示。 如何在不提示用户名的情况下以编程方式进行身份validation,而无需运行命令行程序? (我创build和keytab,并在login.conf中定义它,以便照顾密码提示,而不是用户promt) public static void main(String[] args) throws Exception { System.setProperty("java.security.auth.login.config", "login.conf"); System.setProperty("java.security.krb5.conf", "krb5.conf"); System.setProperty("sun.security.krb5.debug", "true"); System.setProperty("javax.security.auth.useSubjectCredsOnly","false"); DefaultHttpClient httpclient = new DefaultHttpClient(); try { httpclient.getAuthSchemes().register(AuthPolicy.SPNEGO, new SPNegoSchemeFactory()); Credentials use_jaas_creds = new Credentials() { public String getPassword() { return null; } public Principal getUserPrincipal() { […]

匿名,身份validation,模拟和委托有什么区别,为什么委托需要Kerberos?

当我们的客户安装我们的软件时,他们经常select“拆分式安装”,其中服务在一个盒子上运行,数据库在另一个盒子上。 服务可能会与其他服务交谈,或者数据库可能包含需要与另一个数据库交谈的存储过程。 这导致我们进入了Kerberos和SetSPN的黑暗世界。 我正准备给支持小组发送一封电子邮件,打破Windows支持的各种authentication级别的差异,但是我意识到我的知识对于模拟和委托之间的区别有点模糊,而且我很粗略到Kerberos。 任何人都可以启发我吗?

在Windows下将pypi的Kerberos添加到Anaconda

完整的小白菜,所以将不胜感激一步一步的解决scheme。 我想添加Kerberos包到Anaconda,但不知道如何去做。 我已经尝试使用conda命令行: pip install kerberos但是失败了。 有谁知道如何去做呢? 这是来自pip的错误日志: C:\Users\woodas\AppData\Local\Continuum\Anaconda\Scripts\gcc.bat -DMS_WIN64 -mdll -O -Wall -IC:\Users\woodas\AppData\Local\Continuum\Anaconda\include -IC:\Users\woodas\AppData\Local\Continuum\Anaconda\PC -c src/kerberos.c -o build\temp.win-amd64-2.7\Release\src\kerberos.o '{' is not recognized as an internal or external command, operable program or batch file. gcc.exe: error: '{': No such file or directory gcc.exe: error: is: No such file or directory gcc.exe: error: not: No such […]

IIS:将Kerberos用于不在域中的客户端计算机

一台不属于域(但是在networking上)的计算机是否可以通过IIS8发布的网站进行身份validation,其中该网站的身份validation仅与“Negotiate:Kerberos”的单个提供程序“Windows身份validation”(并禁用内核模式身份validation)? 我问,因为我正在尝试做到这一点,但我不能通过身份validation到网站(但单独尝试将身份validation传递到数据库)。 我在客户端的响应中看到了“WWW-Authenticate:Negotiate”标题,但客户端似乎只在随后的(重新)请求中发送“NTLM Type1:Negotiation”(NTLMS Type1:Negotiation)(NTLMSSP)。 无论是我还是不正确地解释Fiddler2的结果! 我正在使用Kerberos,因为大多数客户端将是域计算机,我需要将用户凭据从Web应用程序传递回数据库。 我希望能够对非域名计算机做同样的事情,他们只会被提示input一个用户名/域名/密码,这个用户名/域名/密码将被validation并转换成服务器上的Kerberos票据。 请注意,出于testing目的,Windows 8既是服务器又是客户端。 在生产中,服务器将是Windows 2008 Server R2,客户端将主要是Windows 7(尽pipe会有一些Windows 8客户端)。

在Silverlight中获取当前的Windows用户名

是否有可能使用Silverlight获取当前login用户的用户名? 您可以假定用户具有Windows操作系统,并且Silverlight应用程序托pipe在Internet Explorer中。 使用ASP.NET从服务器端获取身份不是一个选项,这个Silverlight应用程序将托pipe在一个静态HTML文件上。

Kerberos双跳在ASP.NET 4.0和SQL2008R2中

我有一个ASP.NET 4.0应用程序,我需要将身份validation转发到数据库。 为了这个请求的帮助,让我们调用Web服务器“app1”和数据库服务器“sql1”。 SQL2008R2数据库服务作为自定义域帐户“SqlServer”下的命名实例“SQL2008R2”运行。 该服务器正在运行Windows Server 2008 R2企业版。 我为此创build了一个SPN … setspn -a MSSQLSvc/sql1.mydomain.local:SQL2008R2 SqlServer ASP.NET应用程序在集成pipe道模式下使用自定义域帐户“WebApplicationUser”在应用程序池下运行。 它目前运行在运行Windows 7 Enterprise的笔记本电脑上,但最终将托pipe在Windows Server 2008 R2标准版上。 我已经为应用程序创build了2个SPN(在我正在运行的Windows 7机器上)… setspn -a http/app1 WebApplicationUser setspn -a http/app1.mydomain.local WebApplicationUser 在Active Directory用户和计算机中,我select了“WebApplicationUser”帐户,并使用任何协议(我也尝试使用Kerbero)启用了“MSSQLSvc / sql1.mydomain.local:SQL2008R2”的约束委派。 该应用程序在IIS 7.5中设置,并且设置为禁用匿名,基本,摘要和表单,同时启用“ASP.NET模拟”和“Windows”。 Windows身份validation已closures“扩展保护”并启用“内核模式身份validation”。 提供商是按照“协商”和“NTLM”的顺序。 ASP.NET应用程序使用EF,并将连接stringconfiguration为使用集成安全性。 <connectionStrings> <add name="MyContext" connectionString="metadata=res://*/Data.MyModel.csdl|res://*/Data.MyModel.ssdl|res://*/Data.MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=sql1.mydomain.local\sql2008r2;Initial Catalog=MyDatabase;Persist Security Info=false;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> </connectionStrings> 我的networkingconfiguration既指定Windows身份validation和模拟,因为我使用asynchronous页面,我也已启用inpersonation策略stream动… […]

在Java或命令行实用工具中使用本机SSPI API获取服务的Kerberos票据有没有办法?

我想在Java中使用Kerberos实现单点login,并已成功地使用Windowslogin中的故障单创build了服务的故障单。 不幸的是,我只能在启用registry项“allowtgtsessionkey”时创build该票证。 我收到一个exception,只要我禁用它,消息“标识符不符合期望值(906)”。 registry项logging在http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/Troubleshooting.html和http://support.microsoft.com/kb/308339上 。 不幸的是我没有访问我的应用程序将被使用的计算机上的registry,所以我正在寻找一种方法来做到这一点,而不必修改它。 当我在Internet Explorer或Mozilla Firefox上通过SPNEGO进行单点login时,他们会在我的票据caching中创build一个服务票据,所以肯定有办法在不设置registry项的情况下执行此操作。 有没有人有一个想法如何在Java中做到这一点? 感谢您的帮助,memminger 更新:我放弃这个问题。 Windowsregistry项禁止访问Ticketcaching内的票证(更确切地说:主体)。 Windows上的Java使用自己的GSSAPI实现,我想这需要访问票证来创build一个服务票据。 SSPI Windows API可以完全访问Ticketcaching,因此可以创build服务票据。 这个API被Web浏览器使用,但是它没有被Java使用(根据http://java.sun.com/developer/technicalArticles/J2SE/security/#3 )。 当我在访问过一次网页后禁用了SSPI(所以创build了一个服务票据)后,我仍然可以访问这个页面,所以使用命令行实用工具就足以使用SPPI API创build服务票据了。 对于我们来说,这意味着我们可以放弃单点login(这对我们来说是不可接受的),或者我们在应用程序的客户端进行authentication(因为我们只能读出用户名,而不能validation服务器),这是一个重大的安全风险。 另一个例子是安全约束越强,安全漏洞就越大,因为它们变得太复杂了。

使用SSPI从Windows上运行的Java应用程序获取SSO

我有一个在Windows上运行的Java应用程序,需要使用Kerberos / SPNEGO进行身份validation。 我知道如何configurationJAAS来实现这一目标,但是我发现Java(JDK6和JDK7beta)Kerberos实现缺less一些我需要的重要function。 例如,支持推荐或使用DNS来找出主机的领域(我有一个多领域的环境)。 是否有第三方模块可以使用Windows本机SSPI来实现身份validation? 我们已经经历了configuration我们的Windows客户端在我们的环境中工作的麻烦,不用再为Java做这件事了。 我知道Waffle和它的WindowsLoginModule,但它似乎没有做SSO,因为它要求用户重新input他们的凭据到应用程序中。

什么是Kerberos?

我想学习使用kerberos的 Hadoop安全性。 我已经从这个博客configuration了kerberos,但不知道在这方面的工作。 我想知道它是如何工作的? 如何使用它在Windows上的hadoop。 如何为Windowsconfiguration它。 给我任何教程链接或概念来理解它。