Tag: security

在Freemarker模板中检查Spring安全角色和已记录的用户名

有谁知道freemarker标签来检查freemarker文件中的spring安全角色和用户名? 我从网上的几个资源中发现以下代码将打印登录的用户名。 但它不是打印用户名,而是打印“登录为” logged in as 检查Freemarker文件中的角色也无法正常工作。 有没有人以前做过?

Java和C#应用程序之间的SSL通信

我的目标是在Java服务器和用C#编写的客户端之间建立安全通信。 java服务器代码: System.setProperty(“javax.net.ssl.keyStore”,”cert/mySrvKeystore”); System.setProperty(“javax.net.ssl.keyStorePassword”,”myPassword”); SSLServerSocketFactory sslserversocketfactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); SSLServerSocket sslserversocket = = (SSLServerSocket) sslserversocketfactory.createServerSocket(2389); while(true) { System.err.println(“server w8 new connection”); try { SSLSocket sslsocket = (SSLSocket) sslserversocket.accept(); //sslsocket.startHandshake(); in = sslsocket.getInputStream(); out = sslsocket.getOutputStream(); out.flush(); String response = new String(receiveMessage()); while (response != “end”) { System.out.println(“Server recv=”+response); response = new String(receiveMessage()); sendMessage((“echo=”+response).getBytes()); } } […]

java密钥库和密码设置

我在java keystores和keytool上有以下问题。 我假设密钥库可能有多个证书。 正如我所尝试的那样,通过keytool,我可以创建一个密钥库,并且要访问这个密钥库,我必须设置密码。 另外,要访问每个证书条目,我必须设置密码。 是否必须为密钥库和条目使用相同的密码? 如果不是(我认为这是合理的假设)为什么以下代码: char[] pwd = new char[]{‘s’,’e’,’c’,’r’,’e’,’t’}; KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); ks.load(new FileInputStream(“myPersonal.keystore”), pwd); kmf.init(ks, pwd);//fails here with exception 给我以下例外? Exception in thread “main” java.security.UnrecoverableKeyException: Cannot recover key at sun.security.provider.KeyProtector.recover(Unknown Source) at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source) at sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source) at java.security.KeyStore.getKey(Unknown Source) secret是访问我通过keytool创建的密钥库myPersonal.keystore的密码。 其中有2个条目,用于证书,1个DSA和1个RSA。 每个密码库都有不同的密码(和彼此)。 现在代码是正确的,因为如果我使用一个密钥库,其中一个证书条目具有与密钥库相同的密码,则没有exception,程序运行正常。 那么这里的问题是什么? 我不应该有不同的密码? 我不应该有很多证书? 或者是什么?

简单地测试Spring Boot Security

我正在努力测试受Spring Security保护的URL的访问控制。 配置如下所示: http .authorizeRequests() .antMatchers(“/api/user/**”, “/user”).authenticated() .antMatchers(“/api/admin/**”, “/templates/admin/**”, “/admin/**”).hasAuthority(“ADMIN”) .anyRequest().permitAll(); 测试类看起来像这样: package com.kubukoz.myapp; import com.kubukoz.myapp.config.WebSecurityConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.security.web.FilterChainProxy; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import javax.transaction.Transactional; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = {MyApplication.class, WebSecurityConfig.class}) […]

使用bouny castle正确创建带有中间证书的新证书

所以我的问题如下, 基本上我想使用充气城堡(jdk16版本1.46)创建证书链。 我对bouncy castle和java.security很新,所以如果我的方法可能完全错误,但无论如何这就是我所做的: 到目前为止,我能够创建一个自签名证书,我将其用作根证书。 这是使用以下代码完成的: //—–create CA certificate with key KeyPair caPair = Signing.generateKeyPair(“DSA”, 1024, null, null); 这基本上创建了密钥对,如果需要,两个空选项用于提供者和安全随机。 Map<ASN1ObjectIdentifier, Entry> caMap = new HashMap<ASN1ObjectIdentifier, Entry>(); caMap.put(X509Extensions.BasicConstraints, new AbstractMap.SimpleEntry(true, new BasicConstraints(true))); //——this creates the self signed certificate X509Certificate caCert = X509CertificateGenerator.generateX509Certificate(serial, “CN=CA”, “CN=CA”, start, end, “SHA1withDSA”, caPair.getPrivate(), caPair.getPublic(), null, caMap); 这将创建具有提供的属性的证书。 serial =简单地以毫秒为单位的当前时间 start =基本相同(可能有1或2毫秒的差异) […]

Spring Security实体字段级安全性

我有一个Spring MVC应用程序,它提供了一个视图,显示了Customer实体的所有字段,如名称,地址,电话号码等。应用程序具有各种角色,如ROLE_USER和ROLE_ADMIN 。 具有ROLE_USER用户只能看到客户名称,因为具有ROLE_ADMIN用户可以看到所有客户字段。 目前,我实现此方法的方法是使用Thymeleaf视图,该视图利用SpringSecurityDialect根据用户的角色限制对某些字段的访问: 虽然这种方法非常好但感觉不对,但很难测试。 我想针对控制器编写测试,该控制器使用具有不同角色的主体调用控制器方法,例如testViewCustomerAsRoleAdmin和testViewCustomerAsRoleUser 。 这是无法validation的,因为控制器将Customer返回到完全填充的视图,并且每个字段都可通过getter访问。 我所追求的是实体级别的某种字段级安全性,我可以使用Spring Security注释: @PreAuthorize(“hasRole(‘ROLE_ADMIN’)”) public String getPhoneNumber() { return phoneNumber; } 如果在未经授权的情况下尝试访问该字段时,这可能会引发AccessDeniedException ,这将是理想的。 泽西项目似乎有这种概念, 这里提到这里和这里的一个例子。 但它似乎仅限于基于角色的安全性,而不是@PreAuthorize提供的完整SpEL支持 有没有办法或使用Spring Security实现此类事情,我知道安全上下文或SpEL评估上下文在实体中不可用,因为它们不是Spring管理的。 如果没有,是否还有其他方法可以让我实现同样的目标? 编辑: 我不知道内部的Spring Security框架,但似乎可以在ApectJ模式下使用Spring AOP来检测域(实体)类的方法。 这将是获取AccessDecisionManager并传递身份validation(可能从SecurityContextHolder获得)以及域类方法(如果存在)上的注释内容的情况。 有没有人有做这种事情的经验?

在没有默认java.policy文件的情况下运行Java Security Manager

我不想修改我的java主目录中的任何内容,但是,我担心有时我的默认java.policy文件可能过于宽松。 当我使用-Djava.security.manager选项运行java时,有没有办法让我使用指定的策略文件作为唯一的策略文件? 如果我添加-Djava.security.policy=myPolicy.policy选项,除了默认策略文件之外,它-Djava.security.policy=myPolicy.policy使用我的策略文件 – 这很糟糕,因为它看起来仍然授予默认策略文件中授予的所有权限。

创建我的第一个JDBC领域(Glassfish V3)

我想为我的网络应用程序创建一个JDBC领域。 由于我的用户彼此非常不同,我需要只有一个表,包含域的用户名和密码,我决定在我的数据库中创建一个名为ROLE的新表(与其他用户表的oneToOne关系)。 这就是我的用户域模型的样子: 我正在按照本教程http://blog.gamatam.com/2009/11/jdbc-realm-setup-with-glassfish-v3.html但我被卡住了,我不知道如何继续。 我将发布我在glassfish服务器上制作的配置以及我的文件sun.resources.xml,这样你就可以纠正我,如果我犯了任何错误: 在上面的配置中我有一些疑问,我真的不明白我应该在Group表和Group name Column上做什么。 我在下面的教程中说我应该在文件sun-web.xml中添加安全角色,我想这样做,但我不知道在配置中放什么。 这正是我添加到该文件但我认为这是不正确的。 我应该在该文件中添加角色映射以及如何配置它? /GroupBuySystem Keep a copy of the generated servlet class java code. 该教程的人说他不需要web.xml,但我确实需要该文件。 我应该添加什么web.xml? 这是我的第一个jdbc领域,我很困惑:)

如何在不使用Spring启动和使用单独的Apache tomcat服务器的情况下在Spring WS中配置双向SSL连接?

我需要以双向SSL连接安全机制向服务器发送soap请求消息,并且还处理来自服务器的Soap响应。 我使用Spring MVC和Spring ws,它完全使用注释配置并需要配置用于向服务器发送soap请求的双向SSL连接。如何在我的Spring MVC Web服务应用程序中使用双向SSL连接,以便通过SSL将我的soap消息发送到服务器?

如何解决“证书无效且无法用于validation本网站的身份”错误?

问题是, 如何解决“证书无效且无法用于validation本网站的身份”错误? 。 以下是详细信息: 我有一个已经正常工作的签名小程序,直到我将Java更新为8u25(1.8.0_25-b18)。 现在,应用程序显示一条警告消息“您要继续吗?与此网站的连接不受信任”。 此消息中还有一条注释,“ The certificate is not valid and cannot be used to verify the identity of this website ”。 小程序加载没有问题。 但是,当用户尝试使用该应用程序的特定function时,将显示警告消息。 发生这种情况时我检查了java控制台,并在这些行后面显示此警告消息: security: Obtain certificate collection in SSL Root CA certificate store security: Invalid certificate from HTTPS server network: Cache entry not found [url: https://sub.domain.net:9876, version: null] 该应用程序从另一个域下载,例如“ https://app.domain.net/ …..”,因此不会从“ […]