Digest Auth 认证

本人写的Digest 认证一次通过,不需要按照常规的方式来 

 public void postMethod(String url, String query) {
		  try {

			  CredentialsProvider credsProvider = new BasicCredentialsProvider();
		        credsProvider.setCredentials(
		                new AuthScope("192.168.1.105", 9000),//请求地址 + 端口号
		                new UsernamePasswordCredentials("admin", "admin"));// 用户名 + 密码 (用于验证)
		        CloseableHttpClient httpclient = HttpClients.custom()
		                .setDefaultCredentialsProvider(credsProvider)
		                .build();
			  HttpPost postMethod = new HttpPost(url);//请求详细地址(如:http://192.168.1.105:9000/MotorVehicles)
			  StringEntity s = new StringEntity(query);//向后台传的json数据
			  s.setContentEncoding("utf-8");//编码
			  s.setContentType("application/json");//发送json数据需要设置contentType
			  postMethod.setEntity(s);
			  HttpResponse response = httpclient.execute(postMethod); //执行POST方法
			  
			  System.out.println("resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
			  
			  System.out.println("result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容
			 
			} catch (Exception e) {
				System.out.println("推送失败:"+e);
			}
		 
		  }

正常认证方式:

  1. 发送一个请求

        GET /auth/basic/ HTTP/1.1
        HOST: target
  2. 服务器返回401响应头,要求输入用户凭据

        HTTP/1.1 401 Unauthorized
        WWW-Authenticate: Digest realm="Digest Encrypt",nonce="nmeEHKLeBAA=aa6ac7ab3cae8f1b73b04e1e3048179777a174b3", opaque="0000000000000000",stale=false, algorithm=MD5, qop="auth"
  3. 输入凭据后再发送请求

        GET /auth/digest/ HTTP/1.1
        Accept: */*
        Authorization:  Digest username="LengWa", realm="Digest Encrypt",  qop="auth", algorithm="MD5", uri="/auth/digest/", nonce="nmeEHKLeBAA=aa6ac7ab3cae8f1b73b04e1e3048179777a174b3", nc=00000001, cnonce="6092d3a53e37bb44b3a6e0159974108b", opaque="0000000000000000", response="652b2f336aeb085d8dd9d887848c3314"
  4. 服务端验证通过后返回数据

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟进军大神陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值