`
01jiangwei01
  • 浏览: 542749 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 模仿客户端向spring security base认证发请求

 
阅读更多
使用jersey框架的客户端部分。模拟调用。代码如下 。
package jersey.authbase;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;

import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
/**
 * 
<dependencies>
     <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
     </dependency>
     <dependency> 
	    <groupId>org.glassfish.jersey.core</groupId> 
	    <artifactId>jersey-client</artifactId> 
	    <version>2.13</version> 
	</dependency> 
  </dependencies>
  jersey 客户端介绍
  https://jersey.java.net/documentation/latest/client.html
 *
 */
public class DemoClient {
	
	public static void main(String[] args) {
		new DemoClient().metho2Test();
		new DemoClient().metho4Test();
		new DemoClient().metho3Test();
	}
	public void metho1Test(){
	 
		final Client  client =  ClientBuilder.newClient();
		client.register(DemoClient.getHttpAuthenticationFeatureWithNonPreemptive("admin", "1126"));
		 String userName = "admin";  
		 String appUrl = "http://127.0.0.1:8080";  
         String url = String.format("%s/auth/rest/users/user/%s", appUrl,  userName);  
		 
		 final Response response = client.target(url).request().get();
		 System.out.println(response.getStatus()); 
		 System.out.println(response.readEntity(String.class));
	}
	public void metho2Test(){
		String username = "admin";
		String password = "1126";
		final Client  client =  ClientBuilder.newClient();
		 client.register(DemoClient.getHttpAuthenticationFeatureWithNonPreemptive(username, password));
		 
		 String appUrl = "http://127.0.0.1:8080";  
         String url = String.format("%s/auth/rest/users/getCurrentUser", appUrl); 
         final Response response = client.target(url).request().get();
		 System.out.println(response.getStatus()); 
		 System.out.println(response.readEntity(String.class));
	}
	public void metho3Test(){
		String username = "admin";
		String password = "1126";
		final Client  client =  ClientBuilder.newClient();
		 client.register(DemoClient.getHttpAuthenticationFeatureWithNonPreemptive(username, password));
		 
		 String appUrl = "http://127.0.0.1:8080";  
         String url = String.format("%s/auth/rest/userGroups/children", appUrl); 
         final Response response = client.target(url).request().get();
		 System.out.println(response.getStatus()); 
		 System.out.println(response.readEntity(String.class));
	}
	
	public void metho4Test(){
		String username = "admin";
		String password = "1126";
		final Client  client =  ClientBuilder.newClient();
		 client.register(DemoClient.getHttpAuthenticationFeatureWithNonPreemptive(username, password));
		 
		 String appUrl = "http://127.0.0.1:8080";  
         String url = String.format("%s/auth/rest/users/current", appUrl); 
         
         final Response response = client.target(url).request().get();
		 System.out.println(response.getStatus()); 
		 System.out.println(response.readEntity(String.class));
	}
	
	/**
	 * 每次调用都要更换用户名\密码
	 */
	public void test(){
		final Client  client =  ClientBuilder.newClient();
		final Response response = client.target("http://localhost:8080/rest/homer/contact").request()
			    .property(HttpAuthenticationFeature.HTTP_AUTHENTICATION_BASIC_USERNAME, "homer")
			    .property(HttpAuthenticationFeature.HTTP_AUTHENTICATION_BASIC_PASSWORD, "p1swd745").get();

	}
	
	public static  HttpAuthenticationFeature getHttpAuthenticationFeatureWithNonPreemptive(String username,String password){
		HttpAuthenticationFeature feature = HttpAuthenticationFeature.basicBuilder() 
			    .nonPreemptive().credentials(username, password).build();
		return feature;
		
	}
	public HttpAuthenticationFeature getHttpAuthenticationFeatureWithNonPreemptive(){
		HttpAuthenticationFeature feature = HttpAuthenticationFeature.basicBuilder().build();
		return feature;
	}

}

 

分享到:
评论

相关推荐

    SpringBoot+SpringSecurity处理Ajax登录请求问题(推荐)

    SpringBoot+SpringSecurity处理Ajax登录请求问题 SpringBoot+SpringSecurity处理Ajax登录请求问题是SpringBoot开发中的一個常见问题,本文将详细介绍如何使用SpringBoot+SpringSecurity处理Ajax登录请求问题。 ...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    而Spring Security 则是 Java 开发中广泛使用的安全框架,用于实现认证和授权。当我们将这两者结合时,我们可以创建一个强大的统一登录认证鉴权系统。 首先,让我们深入了解Spring Cloud Gateway。这是一个基于...

    Spring Security 资料合集

    - Spring Security 可以与OAuth2框架集成,提供第三方服务的认证和授权,支持资源服务器、认证服务器和客户端的角色。 8. **Spring Security ACL**: - 对象级权限管理(ACL)允许开发者对应用内的具体对象实施细...

    Spring Security 源码

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于Java应用程序。它提供了全面的安全解决方案,包括用户认证、授权、CSRF防护、会话管理等。在深入研究Spring Security的源码之前,我们需要...

    springSecurity双模认证

    在"Spring Security双模认证"中,我们关注的是同时支持基于客户端证书和表单登录的两种认证方式。 1. **客户端证书认证**: 客户端证书认证是一种安全的网络身份验证方法,它使用X.509数字证书来确认用户身份。在...

    最详细Spring Security学习资料(源码)

    Spring Security是一个功能强大且高度可定制的身份验证和授权框架,专门用于保护Java应用程序的安全性。它构建在Spring Framework基础之上,提供了全面的安全解决方案,包括身份验证、授权、攻击防护等功能。 Spring...

    Spring Security OAuth2认证授权示例详解

    Spring Security OAuth2是一个强大的安全框架,它为Web应用程序提供了安全认证和授权的功能。OAuth2则是一种开放标准,允许用户授权第三方应用访问他们存储在另一服务提供商的数据,而无需分享他们的用户名和密码。...

    spring security 4.0.0所需jar包

    例如,`spring-security-core`负责基本的认证和授权逻辑,`spring-security-web`处理与Web安全相关的请求过滤,而`spring-security-config`则简化了在Spring应用上下文中定义安全规则的过程。 使用时,开发者可以...

    SpringBoot+SpringSecurity+WebSocket

    3. 集成SpringSecurity:配置SpringSecurity的WebSecurityConfigurerAdapter,设置登录认证、权限控制等规则。确保WebSocket连接也需要经过SpringSecurity的认证。 4. 客户端支持:在前端JavaScript中使用WebSocket ...

    SpringSecurity.pdf

    Spring Security为开发者提供了一个完整的安全解决方案,它不仅包括了安全框架核心的认证和授权,还包含了防止跨站请求伪造(CSRF)、点击劫持、会话固定等安全威胁的防护机制。Spring Security的配置灵活,可以通过...

    Springboot整合Spring security+Oauth2+JWT搭建认证服务器,网关,微服务之间权限认证及授权

    在Spring Security中,我们可以使用OAuth2提供者模式,创建一个认证服务器,它处理客户端的授权请求,生成访问令牌。常见的OAuth2流程包括授权码(Authorization Code)流、隐式(Implicit)流、客户端凭证(Client ...

    Spring Security+OAuth2 精讲,打造企业级认证与授权

    本课程"Spring Security+OAuth2 精讲,打造企业级认证与授权"深入浅出地讲解了这两个框架的使用和集成,旨在帮助开发者构建安全、高效的应用系统。 Spring Security是Spring生态系统中的一个强大安全框架,它提供了...

    SpringSecurity笔记,编程不良人笔记

    SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话管理以及安全相关的功能,可以帮助开发者构建安全的Web应用。在本笔记中,我们将深入探讨Spring...

    Spring Security认证权限管理

    2. 请求到达Spring Security的Filter Security Interceptor,该拦截器会检查请求是否需要认证。 3. 如果需要认证,请求会被转发到Authentication Provider。 4. Authentication Provider验证用户名和密码,如果验证...

    Spring Security集成CAS客户端实例

    确保它们正确配置并运行,能够处理来自客户端的认证请求。这部分不涉及具体代码,但需要理解服务端的配置,如服务注册、票证生命周期、SSL设置等。 6. **客户端代码实现**:在`otastac-remote-api`、`otastac-api`...

    spring security oauth2.0 (讲义+代码)

    资源所有者是拥有受保护资源的用户,客户端是请求访问资源的应用,资源服务器是存储并提供受保护资源的地方,而授权服务器负责验证资源所有者的身份,并向客户端发放访问令牌。 Spring Security OAuth2.0 提供了...

    视频配套笔记_Spring Security OAuth2.0认证授权_v1.1.rar

    Spring Security OAuth2.0 是一个广泛使用的Java安全框架,它为构建安全的Web应用程序提供了强大的支持。OAuth2.0是授权框架的一个标准,允许第三方应用在用户授权的情况下访问其私有资源,而无需共享用户的登录凭证...

    spring-security cookie认证

    Spring Security 是一个强大的安全框架,用于Java和Spring应用程序。它为Web应用提供了全面的安全解决方案,包括身份验证、授权以及会话管理。在这个“spring-security cookie认证”主题中,我们将深入探讨如何利用...

    springboot springsecurity动态权限控制

    Spring Boot简化了Spring应用的初始搭建以及开发过程,而Spring Security则提供了全面的安全管理解决方案,包括认证、授权等。在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在...

    java学习之SpringSecurity配置了登录链接无权限

    由于SpringSecurity的异常处理和mvc的异常处理是不一样的,认证类异常和权限异常了,并不会被全局异常捕获,而是SpringSecurity内部自己做了处理逻辑。 思路分析 我已经将本次请求的url添加到忽略名单里面了,起始...

Global site tag (gtag.js) - Google Analytics