Articles of kerberos

基于查询string的Apache权限

我有一个需要身份validation的Apache服务器,但有一些需要被允许所有的调用。 closures这些调用是基于一个查询string,例如: /foo/api.php?Token=123&Task=DoStuff&Result=json 我教了一个LocationMatch,这将工作,所以我解决了这个configuration: <LocationMatch ^/foo/api.php\?.*(Task=DoStuff).*> Order Allow,Deny Allow from All </LocationMatch> 但是这不让我通过authentication(意味着我得到了一个401)。 如果我只是过滤^/foo/api.php我得到通过authentication,但是这不够严格。 任何人有任何想法如何configuration这个查询查询string中的任务参数? 对于身份validation,我们正在使用Kerberos,这是强制在整个网站这是我们的遏制confb LoadModule auth_kerb_module modules/mod_auth_kerb.so <Directory /var/www/html> Options FollowSymLinks AllowOverride All AuthType Kerberos Require valid-user AuthName "Kerberos Login" KrbMethodNegotiate on KrbMethodK5Passwd on KrbAuthRealms FOO.LOCAL KrbServiceName HTTP/server.foo.local@foo.LOCAL Krb5KeyTab /etc/httpd/conf/http.keytab Satisfy Any Order deny,allow Deny from all Allow from 192.168.72.90 Allow from 192.168.72.91 […]

npm安装mongoose导致gyp和kerberos错误(找不到gssapi / gssapi.h文件)

Ubuntu 14.04 nodejs版本是用这些命令安装的v4.1.1 : curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash – sudo apt-get install -y nodejs 通过mongodb文档教程安装的mongodb 接下来我尝试通过做安装mongoose sudo npm install mongoose 我收到以下错误: > kerberos@0.0.14 install /root/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos > (node-gyp rebuild) || (exit 0) gyp ERR! build error gyp ERR! stack Error: not found: make gyp ERR! stack at F (/usr/lib/node_modules/npm/node_modules/which/which.js:73:28) gyp ERR! stack at […]

PHP的 – 如何使用Kerberoscurl

我正在尝试使用curl进行一些操作,但是我必须使用的网站使用Kerberos身份validation。 因此,我必须启用默认禁用的curl的SPNEGOfunction。 这是我的phpinfo的摘录: cURL support enabled cURL Information 7.19.7 Age 3 Features AsynchDNS No Debug No GSS-Negotiate Yes IDN Yes IPv6 Yes Largefile Yes NTLM Yes SPNEGO No SSL Yes SSPI No krb4 No libz Yes CharConv No Protocols tftp, ftp, telnet, dict, ldap, ldaps, http, file, https, ftps, scp, sftp Host x86_64-redhat-linux-gnu SSL Version […]

通过Kerberos或任何安全协议validationLinux客户端应用程序到Windows服务器应用程序

我需要一些指导或关键字我可以用于我的额外的研究。 假设有用C ++编写的客户端和服务器应用程序。 有可能将blob从客户端传递到服务器,反之亦然。 在Windows上,我们可以引入Kerberos利用率,生成,处理这样的blob,接受它,模拟线程等。在msdn上有一些例子。 这不是那么简单,但我已经设法使其工作。 但是,如果我的客户端运行在Linux机器上呢? 最简单和不安全的身份validation方式是通过blob以原始格式传递用户的用户名/域名/密码。 但是,如果我想使用Kerberos? 所以,问题是: 我需要在客户端Linux机器上有什么先决条件? 我的第一个想法是关于某种桑巴/ winbind东西安装在那里。 我听说通过Kerberos对Windows AD进行了sambavalidation。 有什么好的例子在Linux上执行Kerberos握手? 我知道在MIT网站上有一些例子。 我应该使用这些吗? 我想这并不是一件容易的事情,而是通过正确的方式进行testing(实际上我从我的Windows体验中知道它)。

如何在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() { […]

在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他们的凭据到应用程序中。