OAuth2.0 授权模式,基于HttpClient 实现

2023-11-07

功能代码如下:

package com.zzg.ucas.config;

import java.io.IOException;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

/**
 * oauth2 客户端工具类
 * 
 * @author zzg
 *
 */
public class OAuthClientUtil {
	static String accessTokenURL = "http://cas.example.org:8099/cas/oauth2.0/accessToken";
	static String client_id = "key";
	static String client_secret = "secret";
	static String username = "admin";
	static String password = "123456";
	
	// 基于password 模式
	public static void main1(String[] args) {
		String grant_type = "password";
		CloseableHttpClient httpClient = HttpClients.createDefault();
		String url = "http://cas.example.org:8099/cas/oauth2.0/accessToken?client_id=" + client_id + "&grant_type="
				+ grant_type + "&username=" + username + "&password=" + password;
		HttpPost httpPost = new HttpPost(url);
		HttpResponse response = null;
		try {
			response = httpClient.execute(httpPost);
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String result = "";
		if (response.getStatusLine().getStatusCode() == 200) {
			try {
				result = EntityUtils.toString(response.getEntity(), "UTF-8");
				// 解析token的json数据
				System.out.println("result:" + result);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	// 基于client_credentials
	public static void main2(String[] args) {
		String grant_type = "client_credentials";
		CloseableHttpClient httpClient = HttpClients.createDefault();
		String url = "http://cas.example.org:8099/cas/oauth2.0/accessToken?client_id=" + client_id + "&grant_type="
				+ grant_type + "&client_secret=" + client_secret;
		HttpPost httpPost = new HttpPost(url);
		HttpResponse response = null;
		try {
			response = httpClient.execute(httpPost);
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String result = "";
		if (response.getStatusLine().getStatusCode() == 200) {
			try {
				result = EntityUtils.toString(response.getEntity(), "UTF-8");
				// 解析token的json数据
				System.out.println("result:" + result);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	
	// 基于refresh_token
	public static void main3(String[] args) {
		String grant_type = "refresh_token";
		String refresh_token = "RT-1-W7-9xisPcnQqLfyH2RIpAnnc7aWVPOtP";
		CloseableHttpClient httpClient = HttpClients.createDefault();
		String url = "http://cas.example.org:8099/cas/oauth2.0/accessToken?client_id=" + client_id + "&grant_type="
				+ grant_type + "&client_secret=" + client_secret + "&refresh_token=" + refresh_token;
		HttpPost httpPost = new HttpPost(url);
		HttpResponse response = null;
		try {
			response = httpClient.execute(httpPost);
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String result = "";
		if (response.getStatusLine().getStatusCode() == 200) {
			try {
				result = EntityUtils.toString(response.getEntity(), "UTF-8");
				// 解析token的json数据
				System.out.println("result:" + result);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	// 基于/oauth2.0/profile, 获取用户信息
	public static void main(String[] args) {

		String access_token = "AT-2-ArvJnVOylh-qizLsOBv0UrqCzEEjyJuP";
		CloseableHttpClient httpClient = HttpClients.createDefault();
		String url = "http://cas.example.org:8099/cas/oauth2.0/profile?access_token=" + access_token;
		HttpGet httpGet = new HttpGet(url);
		
		HttpResponse response = null;
		try {
			response = httpClient.execute(httpGet);
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String result = "";
		if (response.getStatusLine().getStatusCode() == 200) {
			try {
				result = EntityUtils.toString(response.getEntity(), "UTF-8");
				// 解析token的json数据
				System.out.println("result:" + result);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OAuth2.0 授权模式,基于HttpClient 实现 的相关文章

  • 实战:CAS搭建

    一 CAS服务器的搭建 1 下载CAS服务器的源码 xff0c 我下载的是CAS Maven WAR Overlay 的分支4 2 X版本 注 xff1a 如若不想了解查找下载地方过程 xff0c 请直接参见 xff08 3 xff09 的
  • 锁与CAS详解

    一 悲观锁与乐观锁 乐观锁和悲观锁问题 xff0c 是出现频率比较高的面试题 本文将由浅入深 xff0c 逐步介绍它们的基本概念 实现方式 含实例 适用场景 xff0c 以及可能遇到的面试官追问 xff0c 希望能够帮助你打动面试官 乐观锁
  • 搭建Cas服务

    环境要求 JDK 1 8CAS 5 3tomcat 9 1 cas项目下载地址 xff1a https github com apereo cas overlay template tree 5 3 2 使用idea导入cas overla
  • cas 配置相关

    默认配置 span class token comment span span class token comment CAS Cloud Bus Configuration span span class token comment sp
  • 单点登录CAS学习(一):初识单点登录

    一 单点登录应用场景 不少业主单位随着自身的发展 建立不少业务支撑系统 往往会采用不同的开发商进行系统开发和建设 因此必然形成如下一种局面 工作人员需要登录多个业务系统才能将自己的工作全部完成 给工作人员带来了额外的负担 因此单点登录变应运
  • Java 手动分页

    功能需求背景 今天负责短信后台定时任务时 需要定时向用户发送短信信息 但数据库记录的待发送记录数量比较大 无法一次查询出结果 需要手动分页 手动分页核心功能代码 Date now DateUtils getBeforeMouth new D
  • CAS 未认证授权服务 不允许使用CAS来认证您访问的目标应用

    资源环境 CAS服务端 CAS 5 3 2 服务端 CAS客户端 Spring Boot CAS 客户端 访问过程 1 CAS 客户端访问本地项目指定端口 http localhost 9100 cas index 2 CAS 客户端调整至
  • SpringBoot 搭建CAS 客户端 和CAS 服务端

    第一步 搭建CAS5 3 服务端 Github 下载CAS5 3 服务端版本 https github com apereo cas overlay template tree 5 3 注意 最新的master分支使用的需要java11 该
  • Java 常用功能代码片段(空格分割,lis和数组之间的相互转换)

    1 以空格方式分割字符串 str Hello I come from china String splited str split s 2 字符串数组转换为List 实现方式一 使用Stream中的Collector收集器 String a
  • Solr 检索结果集List<SolrDocument> 转换为指定业务对象总结

    前提说明 从solr结果集中取数据 取到了结果集 但是结果集是一个map 而我想要得到的是一个对象 怎么处理呢 我总计如下三种方法 第一种 solrDocument中提供了一个获取每个field对应值的方法 使用此方法获取所有的field对
  • cas 5.2.0登陆界面添加验证码和校验功能

    本文分为4个部分 1 登录界面添加验证码 2 自定义登录对象 增加一个验证码字段 3 自定义cas的登录流程 完成自定义校验 4 返回自定错误信息 1 配置验证码 生成验证码 使用google的kaptcha 需引入jar的包如下
  • Java 获取过去12个月日期

    业务功能要求 查询前12个月的相关数据统计 前 12个月日期 LocalDate today LocalDate now for long i 0L i lt 11L i LocalDate localDate today minusMon
  • cas5.3.2单点登录-Cas Server开启Oauth2.0协议(二十)

    原文地址 转载请注明出处 https blog csdn net qq 34021712 article details 82290876 王赛超 学习Cas这么久了 一直在按照CAS自身的协议接入 Cas的强大在于有官方的插件 可以支持其
  • CAS 服务票证验证失败

    我已点击链接http lukesampson com post 315838839 cas on windows localhost setup in 5 mins 则cas服务器工作正常 登录url为http 10 1 1 26 8080
  • 如何实施单点登录

    我想实现 SSO 单点登录 我发现了很多关于 CAS OpenID 和许多不同事物的链接和文章 我真的迷失了那么我应该使用 CAS 吗 我安装了 CAS Server 并将其部署到 Tomcat 中 你下一步怎么做 或者这是错误的 您能解释
  • Grails:Spring Security CAS 在 2.2.3 中工作,但在 2.3.0 中不起作用

    我有一个使用 Groovy 2 0 的 Grails 2 2 3 项目 我使用 Spring Security 将其设置为使用 CAS 进行身份验证 使用 LDAP 进行用户角色 当我运行应用程序时 一切都按预期进行 任何人都允许访问 ap
  • 如何使用第三方 CAS 身份验证从独立的 React 前端和 django 后端(相同域,不同端口)对用户进行身份验证?

    我正在设置 django 后端Django REST framework用于提供API 通过第三方CAS服务器实现身份验证 目前我的后端认证已经成功实现 使用django cas ngpackage 这意味着我可以为不同的用户组实现不同的权
  • 使用 Spring Security 和 CAS 单点注销

    使用纯 Spring Java 配置 我在让 Spring 和 CAS 执行单点登录时遇到问题 我使用以下配置进行单点登录 我使用一个简单的 JSP 页面对 url 进行表单 POSThttps nginx shane com app lo
  • 使用 django-cas-ng 在管理站点上进行身份验证

    我在用着Django Cas NG https github com mingchen django cas ng用于验证用户身份的框架 主要问题是管理页面仍然使用默认的登录视图 到目前为止使用的方法 1 使用环境变量 来自文档 CAS A
  • CAS 注销和 cookie 消除

    我刚刚制作了一个 HelloWorld servlet 并在其上实现了 CAS 我能够毫无问题地登录 并且 CAS 在我的浏览器中设置 3 个 cookie CASGT 并为 cas 设置 2 个 JSESSIONID 1 另一个为 hel

随机推荐