首页 > 编程语言 >JAVA Http Basic auth获取token

JAVA Http Basic auth获取token

时间:2023-09-12 11:56:49浏览次数:30  
标签:Http String auth token params split new target

本文主要参考:https://www.cnblogs.com/xiaocandou/p/7991927.html

应用在获取 token 时,可以向 api 管理平台发起一个 HTTP POST 请求,内容如下: • 请求地址: https://****.com/token • 请求内容: grant_type=client_credentials • 请求 Content-type: application/x-www-form-urlencoded • 身份验证: Basic Auth,用户名为 Consumer ID,密码为 Consumer Key
              @Override
		  public String reFreshToken(ParkBean park) 
		  {
			  String token="";//token有效期为24小时
			  String coscoUrl=WcPropertyUtil.getInstance().getValue("coscoUrl");//https://***.com:8443
			  String[] split = coscoUrl.split(":");
			//  System.out.println(split[0] +"  " +split[1].substring(2,split[1].length())+" "+split[2]);
			  
					//HttpHost target = new HttpHost("***.com", 8443,"https");
			    //分解出域名及端口和https
			       HttpHost target = new HttpHost(split[1].substring(2,split[1].length()), Integer.valueOf(split[2]),split[0]);
			        CredentialsProvider credsProvider = new BasicCredentialsProvider();
			        String user=park.getJrdm();//"LcXLUfRXv49ZZlu99jX7fsHafCAa";
			        String password= park.getKeypwd()  ;//"Pnf269RTrdydqUhqe5nGjGtLj_Ma";
			        credsProvider.setCredentials(
			                new AuthScope(target.getHostName(), target.getPort()),
			                new UsernamePasswordCredentials(user, password));
			        CloseableHttpClient httpclient = HttpClients.custom()
			                .setDefaultCredentialsProvider(credsProvider).build();
			    	try {
			            // Create AuthCache instance
			            AuthCache authCache = new BasicAuthCache();
			            // Generate BASIC scheme object and add it to the local
			            // auth cache
			            BasicScheme basicAuth = new BasicScheme();
			            authCache.put(target, basicAuth);

			            // Add AuthCache to the execution context
			            HttpClientContext localContext = HttpClientContext.create();
			            localContext.setAuthCache(authCache);
			            //https://***.com:8443/api/token 
			            HttpPost httppost = new HttpPost(coscoUrl+"/api/token");
			    		HttpEntity reqEntity = null;
			    		JSONObject  json = new JSONObject();
			    		json.put("grant_type", "client_credentials");
			    		List<NameValuePair>  params =toCharge(json);
			    	
			   
			    			if(null!=params && !params.isEmpty())reqEntity = new UrlEncodedFormEntity(params, "UTF-8");
			    			httppost.setEntity(reqEntity);
			    			System.out.println("Executing request " + httppost.getRequestLine() + " to target " + target);
				           
				                CloseableHttpResponse response = httpclient.execute(target, httppost, localContext);
				                try
					              {
				                	HttpEntity entity = response.getEntity();
				        			if (entity != null) {
				        				String result  = EntityUtils.toString(entity, encoding);
				        				log.debug("***返回值***:"+result);
				        				JSONObject jsonObject = JSONObject.fromObject(result);
				        				//{"access_token":"eef0908c-a167-3148-b9dc-2318ecc6b22c","scope":"am_application_scope default","token_type":"Bearer","expires_in":3600}
				        					
				        			 } 
					              }
			        			 finally {
			                         response.close();
			                     }

			                }catch(Exception e)
		                    {
			                	log.debug("获取token失败 "+e.getMessage());
		                    }finally {
		                    	if(httpclient!=null)
		                    	{
		                    		try {
										httpclient.close();
									} catch (IOException e) {
										// TODO Auto-generated catch block
										e.printStackTrace();
									}
		                    	}
								
								 
			                }
			            
			 
			 	return token;
			 	 
		  }

    

public static List<NameValuePair> toCharge( JSONObject params) {
List<NameValuePair> listParam = new ArrayList<NameValuePair>();
if(params!=null&&params.size()>0)
{
for(Iterator it = params.keySet().iterator();it.hasNext();){ ////这个返回key集合的对象
String key = (String) it.next();
if(params.get(key)!=null){
listParam.add(new BasicNameValuePair(key, String.valueOf(params.get(key))));
}
}
}
return listParam;
}


  

 

  

       

标签:Http,String,auth,token,params,split,new,target
From: https://www.cnblogs.com/fuanyu/p/17695793.html

相关文章

  • XMLHttpRequest xhr请求
    1.属性①readyState:xhr的状态码。②status:http状态码。③statusText:http状态说明文本。④response:响应。(可通过xhr.response获取响应体数据)⑤responseType:响应类型。⑥responseURL:响应的URL路径。⑦responseText:响应的文本数据。⑧responseXML:响应的XML数据。......
  • SpringCloud为啥要采用HTTP,不采用RPC
    1、首先SpringCloud开启WEB服务依赖于Tomcat,Tomcat内部采用HTTP协议,开发者编写JSON作为资源传输和响应,可以更加能灵活处理业务数据。2、RPC基于TCP协议,客户端和服务端需要三次握手,四次挥手进行数据传输。TCP是数据传输层,传输协议统一由服务端进行编写,进行二进制传输,依赖序列化和......
  • jwt自定义表签发、jwt多方式登录(auth的user表)
    jwt自定义表签发继承AbstractUser,直接使用自动签发token纯自己写的用户表,需要自己签发关于签发:1、通过user生成payload,jwt提供的方法,字段必须是username,传入user,返回payload2、生成token,jwt提供的方法,把payload放入token自定义表大致流程:先创建表需要什么建什......
  • 开源工具推荐:BurpSuite和HTTPSProxy
    在网络安全领域,安全测试是一项重要的任务,旨在评估系统和应用程序的弱点以及潜在漏洞。而中间人(Man-in-the-Middle,MITM)是其中常见且有效的技术之一。本文将介绍如何使用BurpSuite这个优秀的开源工具,在安全测试过程中实施MITM攻击,并借助其强大功能对HTTP/HTTPS流量进行拦截与分析。1......
  • jwt自定义表签发、jwt多方式登录(auth的user表)
    jwt自定义表签发models.pyfromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportAbstractUser#继承AbstractUser直接使用自动签发token#纯自己写的用户表,需要自己签发classUser(models.Model):username=models.CharField(max_length=32)......
  • jwt自定义表签发, jwt 多方式登录(auth的user表)
    1jwt自定义表签发1.1models.pyfromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportAbstractUser#继承AbstractUser直接使用自动签发token#纯自己写的用户表,需要自己签发classUser(models.Model):username=models.CharField(max_leng......
  • HTTP接口测试
    @Author:BasilGuo@Date:Feb.20,2021@Description:HTTP接口测试@Keyword:test,httpinterface@Type:tutorial学习方式:先方法,后工具(接口测试常用工具有SoupUI、JMeter)学习建议:了解接口是做什么的。理解接口的业务处理逻辑。熟悉接口核心的三组件:地址、入参、返......
  • 封装http请求工具
          ......
  • Salesforce Marketing Cloud 获取Token
    当我们要调用MarketingCloud的Api时,不管是SOAP还是REST都需要进行验权Authorization。如果我们需要使用v2版本去获取token,我们需要传递5个参数,其中有3个参数是必须要传递的,2个可选参数,参考官网的文档AccessTokenforServer-to-ServerIntegrations|MarketingCloudAPIsand......
  • 【TinyWebServer】05http连接处理(中)
    上篇对http连接的基础知识、服务器接收请求的处理流程进行了介绍,本篇将结合流程图和代码分别对状态机和服务器解析请求报文进行详解流程图部分:描述主,从状态机调用关系与状态转移过程代码部分:结合代码对http请求报文的解析进行详解流程图与状态机从状态机负责读取报文的一行,主......