Tag: 认证

与Web服务的相互身份validation

目前,只要客户端使用Web浏览器访问网站,我就成功实现了相互身份validation安全性,因为浏览器会为您处理所有证书交换。 现在,我需要创建一个安全的界面,用户可以使用服务器所需的相互身份validation通过HTTPS访问Web服务。 首先,有没有人知道的资源可以帮助我吗? 我已经找了很长时间,一无所获。 任何其他人可以给我如何解决这个问题的提示? 其次,我认为我最大的障碍是我对如何处理证书缺乏了解。 如何协商接受服务器的密钥并将自己的密钥提供给服务器? 这是Java。

使用HttpClient 4.0.1与x509证书进行相互身份validation

有没有人有关于如何使用HTTPClient 4.0.1通过x509证书执行客户端身份validation的任何友好提示? 感谢您的时间。

如何在给定LdapContext的ldap whith java中检查用户密码?

我有一个Web应用程序,用户必须登录。密码存储在LDAP服务器中。 有关LDAP服务器的所有信息都作为外部jndi资源存储在应用程序服务器(glassfish)中。 所以我的应用程序对LDAP服务器一无所知,只得到像这样的LdapContext: @Resource(name = “ldap/users”) private LdapContext ctx; 使用此上下文,可以轻松更改或读取为用户存储的信息,但如何检查其密码? 通常我会做一个新连接来检查用户密码。 喜欢这个: Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.jndi.ldap.LdapCtxFactory”); env.put(Context.PROVIDER_URL, “ldap://localhost:389/o=JNDITutorial”); env.put(Context.SECURITY_AUTHENTICATION, “simple”); env.put(Context.SECURITY_PRINCIPAL, “cn=S. User, ou=NewHires, o=JNDITutorial”); env.put(Context.SECURITY_CREDENTIALS, “mysecret”); DirContext ctx = new InitialDirContext(env); 但由于我不知道这个参数我不能这样做。 那么如何使用我的LdapContext检查用户的密码是否正确? 密码以加密方式存储(ssha),所以我不能只比较属性。 谢谢拉斐尔

REST HTTP身份validation – 如何?

所以,我正在使用RESTeasy和Google App Engine开发REST Web服务。 我的问题与GAE没有关系,但我提到它只是为了重要。 事实上,我需要保护我的资源和我自己的用户(不是谷歌的)。 保护REST Web服务似乎是一个非常有争议的主题,或者至少是一个非常“自由”的主题。 REST没有对此事项施加任何标准。 根据我在网络和文献上的研究,我认为至少有3种方法可能适用于我的应用程序: HTTP Basic (使用SSL) HTTP摘要 (使用SSL) OAuth的 OAuth似乎是最完整的方法。 但我不认为需要这么复杂,因为我不需要授权任何第三方应用程序。 它是仅由我自己的客户端应用程序使用的Web服务。 HTTP Basic和HTTP Digest在Web上显示为最简单的,但事实是我从未使用RESTeasy找到它们的具体实现,例如。 我在RESTeasy的文档中找到了这个页面和这个页面 。 它们确实非常有趣,但它们对此主题(HTTP Basic或Digest)几乎没有任何说明。 所以,我在这里问: 如何使用RESTeasy中的HTTP Basic或Digest保护我的WebService? 也许它很简单,在文档或其他任何地方都不值得一提? 此外,如果有人能够就保护RESTful Web服务的问题向我提供一些见解,那么它可能会有所帮助。 我选择了正确的方法吗?

Java Orkut登录

我想在java中使用ORKUT( http://www.ORKUT.com )主页的页面源。 但它需要在访问ORKUT的任何页面之前登录到ORKUT。 我该怎么做。 它不应该介于两者之间的浏览器

HTTP基本身份validation而不是TLS客户端认证

以下答案来自这个问题; 获奖答案实际上并未解决问题。 它仅在数据传输的上下文中提及SSL,并不实际涵盖身份validation。 您真的要求安全地validationREST API客户端。 除非您使用TLS客户端身份validation,否则SSL本身不是REST API的可行身份validation机制。 没有客户端authc的SSL仅对服务器进行身份validation,这与大多数REST API无关。 如果您不使用TLS客户端身份validation,则需要使用类似基于摘要的身份validation方案(如Amazon Web Service的自定义方案)或OAuth甚至HTTP Basic身份validation(但仅限SSL)。 因此,考虑到我将使用没有客户端认证的HTTPS我的问题是海报说如果我们不使用客户端SSL认证服务器并不真正知道它与谁交谈。 我在这里理解的是,如果我使用身份validation令牌来访问服务器对客户端进行身份validation。 然后, 即使该令牌与我的服务器数据库中的用户ID配对,服务器也不知道谁正在发送令牌。 首先 1 – 这是一个真正的问题吗? 如果我特别使用Https?(没有TLS客户端身份validation) 2-而且最重要的是,假设这是一个重要的安全缺陷; 如海报所述,Http基本身份validation如何帮助? Http基本身份validation只是在标头中发送编码的用户名密码。 因此,当客户端收到令牌( 在他发送用户名密码后作为回报),然后对于其余的请求,他将在此标头中使用此令牌而不是密码,一切都很好吗? 仍然服务器不知道请求来自何处,也许服务器在其数据库中具有匹配用户的有效令牌但未知谁真正发送它。 (虽然我仍然很难看到令牌会被https窃取并被其他人使用!) 每当我带这个主题时,我都会得到答复。“嗯..你发送一个令牌,但服务器不知道谁发送令牌,不是很安全”所以我理解这一点,因为浏览器保持一种认证,服务器知道哪里请求来自正确的地方然后我可以确定与该令牌配对的用户(从我的数据库检查)是“非常正确” 或者也许在这里讲的是不正确的

在Spring 3.1中通过IP地址进行身份validation:最明智的方法吗?

我使用Spring Security 3.1实现了LDAP身份validation。 我的security.xml文件发布在下面。 我需要更改我的身份validation过程,以便当用户从“白名单”(保存在数据库表中)中的IP地址进入站点时,该用户应该自动使用Spring 3.1进行身份validation,然后重定向远离登录屏幕(不是我的想法,我被告知这样)。 如果用户不是来自白名单IP地址之一,则应强制他/她在登录页面上进行LDAP身份validation。 我是Spring和Spring Security的新手,所以我参阅了Spring 3.1参考文档并阅读了第I部分的所有内容。在那里,我阅读了一些建议,如果您有任何特殊的身份validation需求,您应该阅读第II部分的体系结构和实现 。 我做到了,非常缓慢并记笔记。 但是,由于我是所有这一切的新手,我不确定我是否完全理解我需要做什么以及最聪明的方法。 更新3:我得到了骨架代码,这是我最终得到的文件 我的自定义AuthenticationProvider实现,用于通过IP地址进行身份validation // Authentication Provider To Authenticate By IP Address With Allowed IPs // Stored in a db table package acme.com.controller.security; //import acme.com.controller.security.CustomUserInfoHolder; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.authentication.WebAuthenticationDetails; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper; import org.springframework.security.core.authority.mapping.NullAuthoritiesMapper; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import […]

无法通过代理隧道。 代理通过https返回“HTTP / 1.1 407”

我面临着java6 / 8的奇怪行为。 我尝试隧道通过需要基本用户身份validation的代理。 通过标准的java Authenticator执行此操作。 如果我尝试访问https url作为第一个url,则抛出exception: java.io.IOException:无法通过代理进行隧道传输。 代理返回“需要HTTP / 1.1 407代理身份validation” 但是,如果我首先访问http URL,然后访问https URL,则https访问可以正常工作。 鉴于该代码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.Authenticator; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.PasswordAuthentication; import java.net.Proxy; import java.net.URL; public class ProxyPass { public ProxyPass( String proxyHost, int proxyPort, final String userid, final String password, String url […]

通过Java API从远程主机进行HDFS访问,用户身份validation

我需要通过Java API从远程桌面使用HDFS集群。 一切正常,直到写访问。 如果我正在尝试创建任何文件,我会收到访问权限exception。 路径看起来不错,但exception表示我的远程桌面用户名,这当然不是我需要访问所需的HDFS目录。 问题是: – 有没有办法在Java API中使用“简单”身份validation来表示不同的用户名? – 您能否在Java API示例中指出hadoop / HDFS中的身份validation/授权方案的一些很好的解释? 是的,我已经知道’whoami’在这种情况下可能会使用shell别名重载但我宁愿避免像这样的解决方案。 此处的具体细节是我不喜欢通过SSH和脚本使用管道等一些技巧。 我想使用Java API执行所有操作。 先谢谢你。

使用Java Spring连接到MongoDB 3.0

我在使用Spring访问带有凭据的MongoDB时遇到了问题。 虽然没有凭据,它就像一个魅力,使用它们只是失败说 Failed to authenticate to database [yourdatabase], username = [yourusername], password = [x******z] 必须是因为新的auth默认值,您可以在http://docs.mongodb.org/manual/core/authentication/中阅读 在3.0版中更改:SCRAM-SHA-1是从3.0系列开始的MongoDB版本的默认机制。 问:有人发现了一种使用Spring凭证的方法吗? 您使用哪个版本的spring-data-mongodb来制作技巧?