写个OAuth2.0的请求端来测试自己的OAuth2.0服务端(二)

上一篇文章中,我们介绍了怎么创建自己的服务器,现在我们开始写个client端,来测试。

我们创建一个MVC项目,叫TestOAuthClient

1. 代码开始

1)第一步,我们创建一个MainController,在Index方法里面写我们的逻辑。

2)首先获取code,如果没有code,则证明是第一步请求。

3)第一步请求,附上client_id、response_type、redirect_uri、scope、state参数。

这里我们假如服务端的第一步请求认证的地址为:http://localhost:65006/OAuth2Server/Authorize

client_id是请求端在服务端申请的id;

response_type为code;

redirect_uri是告诉服务端,获取code之后返回的地址是什么;

scope自定义;

state自定义。

4)跳转到验证服务器。

5)验证服务器重定向会我们的请求端后(code不为空),请求获取token。

获取token需要传送返回的code、grant_type=authorization_code、client_id、client_secret

6)通过服务器返回的token,请求服务端获取用户信息。

代码就几行,如下:

        public ActionResult Index()
        {
            string code = Request["code"] ?? "";

            if (string.IsNullOrEmpty(code))
            {
                //第一步,请求获取code(请求OAuth服务器)
                string client_id = "testclientid";
                string response_type = "code";
                string redirect_uri = HttpUtility.UrlEncode("http://localhost:61481/Main/Index");
                string scope = "";
                string state = "";
                string url = string.Format
                    ("http://localhost:65006/OAuth2Server/Authorize?client_id={0}&response_type={1}&redirect_uri={2}&scope={3}&state={4}",
                   client_id, response_type, redirect_uri, scope, state);
                Response.Redirect(url);
                return null;
            }
            else
            {
                //第二步,获取code之后请求获取token(请求OAuth服务器)
                RestClient clientToken = new RestClient("http://localhost:65006/OAuth2Server/GetToken");
                IRestRequest requestToken = new RestRequest();
                requestToken.AddParameter("code", code);
                requestToken.AddParameter("grant_type", "authorization_code");
                requestToken.AddParameter("client_id", "testclientid");
                requestToken.AddParameter("client_secret", "testclientsecret");
                IRestResponse responseToken = clientToken.Execute(requestToken);
                string access_token = responseToken.Content.Replace("\"", "");

                //第三部,获取token之后,获取user信息(请求OAuth服务器)
                RestClient clientUserInfo = new RestClient("http://localhost:65006/OAuth2Server/UserInfo");
                IRestRequest requestUserInfo = new RestRequest();
                requestUserInfo.AddParameter("oauth_token", access_token);
                IRestResponse responseUserInfo = clientUserInfo.Execute(requestUserInfo);
                string userInfoContent = responseUserInfo.Content;
                //返回获取到的用户信息
                return this.Json("userInfoContent=" + userInfoContent, JsonRequestBehavior.AllowGet);
            }
        }

源代码如下: https://github.com/cjt321/TestOAuthClient/

2. 开始调试

1)请求端(TestOAuthClient)的地址为:http://localhost:61481/Main/Index

2)在浏览器上输入上面地址,会重定向到用户是否允许授权的页面。(此页面是服务端的页面)

当我们输入正确的用户名&密码之后,会发现,再请求端能获取到用户的信息。

到此,测试结束。

时间: 2024-08-26 08:26:11

写个OAuth2.0的请求端来测试自己的OAuth2.0服务端(二)的相关文章

[JavaEE]Get请求URI中带的中文参数在服务端乱码问题的解决方法

在Get请求中,如果请求参数中带有中文,如 http://localhost:8080/DinnerParty/shop/search?query=多伦多, 在服务端拿到的是乱码. 这是因为客户端提交过去的是UTF-8编码的数据,而服务端解析URi时可能使用的是 iso8859-1编码. 修改tomcat配置文件server.xml <Connector port="8080" protocol="HTTP/1.1"               connect

thymeleaf 无法正常解析页面(本地可以正常访问某个请求,并可以返回页面,但服务端访问出现找不到模板)

thymeleaf 无法正常解析页面(本地可以正常访问某个请求,并可以返回页面,但服务端访问出现找不到模板) 出错提示: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Er

在ASP.NET MVC下实现单个图片上传, 客户端服务端双重限制图片大小和格式, 服务端裁剪图片

在"MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件01-单文件上传"一文中,使用JSAjaxFileUploader这款插件实现了单文件上传,在chrome, firefox下运行良好,但在某些版本的IE浏览器(比如IE8,IE9)下却无法正常运行,这可能是因为JSAjaxFileUploader插件在编写时没有考虑到某些低版本IE浏览器导致的.本篇,就在ASP.NET MVC4下实现单个图片上传,具体功能包括: 1.在客户端选择图片,并限

SpringCloud02 Eureka知识点、Eureka服务端和客户端的创建、Eureka服务端集群、Eureka客户端向集群的Eureka服务端注册

1 Eureka知识点 按照功能划分: Eureka由Eureka服务端和Eureka客户端组成 按照角色划分: Eureka由Eureka Server.Service Provider.Service Consumer组成 Eureka Server:提供服务注册和发现(即:服务注册中心) Service Provider:服务提供方(即:为其他微服务提供数据资源的服务),将自身的服务信息注册到 Eureka Server 中去供 Service Consumer 使用 Service Co

java自动化测试成长日记-之CVS客户端和服务端安装和部署1:CVS服务端的配置和基本使用

CVS服务端的配置和基本使用 在做java自动化测试集成环境搭建的时候,无论怎样,你都会选择一个源代码管理工具,如:SVN,CVS,VSS等:但如果你使用Eclipse工具,建议你使用CVS源代码管理工具,因为它本身就自带了CVS客户端插件,可以直接使用(具体使用情况,可参考:java自动化测试成长日记-之CVS客户端和服务端安装和部署2:CVS客户端的配置和基本使用章节): 首先,你需要下载:cvsnt-2.5.03.2151安装包.msi,服务端安装软件(可在百度里面搜索找到,相应的资源).

用http请求thrift服务端出现了内存溢出的情况

记一次内存溢出的分析经历 - Janti - 博客园 https://www.cnblogs.com/superfj/p/8474288.html 说在前面的话 朋友,你经历过部署好的服务突然内存溢出吗? 你经历过没有看过Java虚拟机,来解决内存溢出的痛苦吗? 你经历过一个BUG,百思不得其解,头发一根一根脱落的烦恼吗? 我知道,你有过! 但是我还是要来说说我的故事.................. 背景: 有一个项目做一个系统,分客户端和服务端,客户端用c++写的,用来收集信息然后传给服务

Zabbix配置文件详解之服务端——zabbix_server

作为zabbix的部署,这里就不说了,网上一大堆文档,但关于配置文件的说明就比较少,这里列出服务端的配置文件zabbix_server的详细解释,感谢我主管的功劳. Zabbix Server端配置文件说明 # This is a configuration file for Zabbix Server process # To get more information about Zabbix, # visit http://www.zabbix.com ############ GENERA

移动App服务端架构设计

移动App服务端架构设计 我从事手机app服务端开发现在已经是3个年头,自己也整理出了一套相对好用的服务架构,写出来,跟大家一起分享.如有不足,还请多指教. 一:基础流程图. 其实有一点还需要加上,就是对json的压缩和加密,一来给用户节约流量,二来防止请求被截取破解我们的参数.具体先压缩后加密还是先加密后压缩这个问题看需求. 看到这个架构设计时,你们可能会说如果程序入口挂了,所有的服务都不可以用了. 所以这个架构的弱点在程序入口处,因此要有一(多)台机器做负载,负载的工具可以是HaProxy(

(二)Netty学习笔记之服务端启动

本文将不会对netty中每个点分类讲解,而是一个服务端启动的代码走读,在这个过程中再去了解和学习,这也是博主自己的学习历程.下面开始正文~~~~ 众所周知,在写netty服务端应用的时候一般会有这样的启动代码: (代码一) 1 EventLoopGroup bossGroup = new NioEventLoopGroup(1); 2 EventLoopGroup workerGroup = new NioEventLoopGroup(); 3 try { 4 ServerBootstrap b