项目:asp.net zero 4.2.0 .net core(1.1) 版本

我们做项目的时候可能会遇到需要提供api给app调用,ABP动态生成的WebApi提供了方便的基于JWT标准的Token访问方式供我们访问API,不用在代码上做任何改动,很方便有木有!

一.什么是JWT

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
 
这里就不详细介绍JWT了,JWT的详细介绍可以查看简书的这篇文章,写得非常详细:http://www.jianshu.com/p/576dbf44b2ae
 

二.ABP的WebApi访问控制

asp.net zero core是通过IdentityServer4来实现的认证、授权,关于IdentityServer4介绍可以查看我前面的博文 ASP.NET Core身份认证服务框架IdentityServer4-整体介绍
 
下面我简单画了一张图来表示流程,其中API访问认证就是有IdentityServer4来实现的,主要有两种认证方式,一种是通过Cookie主要用于通过浏览器访问,一种是通过Token访问,主要用于APP、或者其他服务访问。
三.申请Token
 
http://localhost:4999 项目地址
 
ABP已经为我们实现好了Token获取和验证。
 
需要注意的是配置ServerRootAddress,如下图

 
 
1.首先运行webapi项目(asp.net zero core项目说明
 
访问地址 http://localhost:4999/api/TokenAuth/Authenticate 申请Token,提交参数:用户名、密码
 
{
"userNameOrEmailAddress":"admin",
"password":""
}

返回结果:

 {
"result": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyIiwibmFtZSI6ImFkbWluIiwiQXNwTmV0LklkZW50aXR5LlNlY3VyaXR5U3RhbXAiOiJhMGU5M2Q0Yi01ZDk3LTFiZDktMTRkYS0zOWUwOTk4ODVhOTgiLCJyb2xlIjoiQWRtaW4iLCJodHRwOi8vd3d3LmFzcG5ldGJvaWxlcnBsYXRlLmNvbS9pZGVudGl0eS9jbGFpbXMvdGVuYW50SWQiOiIxIiwianRpIjoiODJkOTQ3M2EtMGE0Yy00MWZhLWI4ZDMtMzUzODJkMjJkOGFmIiwiaWF0IjoxNTAzNDY4NjM2LCJuYmYiOjE1MDM0Njg2MzYsImV4cCI6MTUwMzU1NTAzNiwiaXNzIjoiQWJwWmVyb1RlbXBsYXRlIiwiYXVkIjoiQWJwWmVyb1RlbXBsYXRlIn0.DnqpCFB2hjeYtEKd-RnJe4i4DmZVfo7EVnTXjrE18oY",
"encryptedAccessToken": "wNYmO41/48SHNstaLVXxHCCre29BZQl1NhC6NM3R3rwZiL572M4gBaHf6sHsTGZfcntBdt0YdGxxOmZDW4iy5jqe38W4yYK8C/ZyrckjUp2HPGDmagvdis58EyNMpU3nSRtiAxQDeAI9GbjKTvJK8UALab3hu556RViMrW+sbfD6HYigjq8CLQVBA5R83I4MwVGFWK2UXTBm3s7vfMr3TB15clrtMORUi6LxUCXaN4osbXSmoPSqtypvEfD/jDFAiXbqJaeIO/bwImWsbtZdFngCPgn5qtJ0OMb6XEFCs8YoBsZk4eA5dUqw/aji2wGLFEp9jNiDyiJ32IRLd8/Jc6J2zqd/zq2V7T53Yd3wVN9EvzZQ433LHWxEIVdaZT4LZQdkSbnXLbGNsQ2NHDpCmfTlr020TknJiC7EvrhsIam9qluWnUJ1XQbHhV+QKpLGWKmDAYC6V83wmmZVe0nEy19Kyerds65dsF2TZDXLOfibnqAQ8l+hnxFG5g33bjuia3mV2QyaAJ0YjPORgNyeJRlJAruT22Pls9ydIwDJJGGIQ5WLP0LkFYgH15qsL0bnNSUxcjChQ8gyva+MkVJ6GS+SLEumyCa5gLA6PrSGkrnTd7ssDQskbvv/B2E4UbI2Mol/yLwmtmy4rIRVhZikz9HbuqZjuNyGbKhhLnb/ZOo=",
"expireInSeconds": ,
"shouldResetPassword": false,
"passwordResetCode": null,
"userId": ,
"requiresTwoFactorVerification": false,
"twoFactorAuthProviders": null,
"twoFactorRememberClientToken": null,
"returnUrl": null
},
"targetUrl": null,
"success": true,
"error": null,
"unAuthorizedRequest": false,
"__abp": true
}

其中 accessToken 就是我们申请的token。

四.使用Token访问api

在请求头中加入 Authorization, 值为'Bearer ' + token 中间有个空格,请注意

Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyIiwibmFtZSI6ImFkbWluIiwiQXNwTmV0LklkZW50aXR5LlNlY3VyaXR5U3RhbXAiOiJhMGU5M2Q0Yi01ZDk3LTFiZDktMTRkYS0zOWUwOTk4ODVhOTgiLCJyb2xlIjoiQWRtaW4iLCJodHRwOi8vd3d3LmFzcG5ldGJvaWxlcnBsYXRlLmNvbS9pZGVudGl0eS9jbGFpbXMvdGVuYW50SWQiOiIxIiwianRpIjoiZWYzOGMzZDgtNzBkNC00YjkzLWFmNDAtMDYwZGJkNmI1YjEzIiwiaWF0IjoxNTAzNDY3NzUzLCJuYmYiOjE1MDM0Njc3NTMsImV4cCI6MTUwMzU1NDE1MywiaXNzIjoiQWJwWmVyb1RlbXBsYXRlIiwiYXVkIjoiQWJwWmVyb1RlbXBsYXRlIn0.yXV9BBWb2dxN_o8WFPWH8GrPjP2gn0FavhyCOMf3Gaw

返回结果:

调用成功!

ABP从入门到精通(5):使用基于JWT标准的Token访问WebApi的更多相关文章

  1. ABP从入门到精通(4):使用基于JWT标准的Token访问WebApi

    项目:asp.net zero 4.2.0 .net core(1.1) 版本 我们做项目的时候可能会遇到需要提供api给app调用,ABP动态生成的WebApi提供了方便的基于JWT标准的Token ...

  2. 基于JWT标准的用户认证接口实现

    前面的话 实现用户登录认证的方式常见的有两种:一种是基于 cookie 的认证,另外一种是基于 token 的认证 .本文以基于cookie的认证为参照,详细介绍JWT标准,并实现基于该标签的用户认证 ...

  3. ABP从入门到精通(1):aspnet-zero-core项目启动及各项目源码说明

    一.ABP的简单介绍 ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用最佳实践 ...

  4. ABP从入门到精通(2):aspnet-zero-core 使用MySql数据库

    关于 asp.net zero core 项目的启动及说明,请观看我前面的博文 http://www.cnblogs.com/stulzq/p/7237153.html 本操作对于ABP默认项目应该也 ...

  5. ABP从入门到精通(3):aspnet-zero-core 使用Redis缓存

    一.Redis是什么? redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset ...

  6. ABP从入门到精通(6):快速重命名解决方案

    SolutionRenamer SolutionRenamer 是一个解决方案快速重命名工具.经测试重命名一个全新asp.net zero core项目(ABP asp.net zero,.net c ...

  7. ABP从入门到精通(5):.扩展国际化语言资源

    ABP的有些组件使用的该组件自带的语言包资源,所以在有些时候会因为我们当前使用的语言对应的语言包不全,而造成日志一直记录WARN.ABP给我们提供了扩展语言包资源的接口,可以解决这个问题. 以下示例代 ...

  8. 基于JWT(Json Web Token)的ASP.NET Web API授权方式

    token应用流程 初次登录:用户初次登录,输入用户名密码 密码验证:服务器从数据库取出用户名和密码进行验证 生成JWT:服务器端验证通过,根据从数据库返回的信息,以及预设规则,生成JWT 返还JWT ...

  9. ASP.NET WebApi 基于JWT实现Token签名认证

    一.前言 明人不说暗话,跟着阿笨一起玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NET WebServi ...

随机推荐

  1. JavaScript 第一课

    今天进入到了js的阶段,了解到了JavaScript是一个很重要的阶段,所以要好好的理清每一个知识点 JavaScript的使用:   在<head>标签里应用<script> ...

  2. Java xml 解析

    1. XML框架结构 Java SE 6 平台提供的 XML 处理主要包括两个功能:XML 处理(JAXP,Java Architecture XML Processing)和 XML 绑定(JAXB ...

  3. Python如何实现单步调试

    遇到大型python项目,如何定位问题和监控程序的运行状态是一个程序员必须掌握的技能,今天小编为你带来python程序的单步调试方法,方便易用,简单易记! 首先你需要在所调试程序的开头中:import ...

  4. gtest 操作指南

    首先,下载gtest-17.0,CSDN上就可以免费下载. 然后,打开gtest-17.0下的msvc文件夹,运行gtest.sln,右键解决方案,选择生成解决方案,此时会在gtest-17.0/ms ...

  5. 在linux中安装git,并将代码发布到github

    楼主Git小白,今天刚刚学习了git,虽然在工作中也许用不到,但是在学习的时候肯定会用到的,毕竟一个程序员首先就要整理自己的知识点,将美丽的代码分享与大家. 楼主是将Git安装在阿里云的centos7 ...

  6. JMeter 监控和记录&常用功能

    使用https连接时,如果对应站点的CA 证书错误,会直接报连接不到服务器的错误,org.apache.commons.httpclient.NoHttpResponseException,把错误证书 ...

  7. ThreadLocal源码分析(转)

    阅读总结: ThreadLocal内部使用静态map存储,每个变量对应一个hashcode,不需要指定key值,后台动态生成,good! 每个变量ThreadLocal内部分配Entry,获取值时,通 ...

  8. JARVIS 手机监控局域网内PC

    JARVIS 通过反向的Socket连接,实现通过手机(或任何可以发送Http请求的设备)对局域网内PC的监控.在外时可以远程监视家里PC任务的执行情况,甚至远程唤醒家里的PC提前打开游戏也可以实现( ...

  9. MySQL优化 - 所需了解的基础知识

    时隔一年半,期间一直想写但却觉得没有实质性的内容可记录,本文为 [高性能MySQL] 的学习日志整理分享(感兴趣建议读原书). 优化应贯穿整个产品开发周期中,开发过程中考虑一些性能问题与影响,总比出问 ...

  10. zookeeper-3.4.5安装&3台机器安装之后 ./zkServer.sh status 之后会显示“Error contacting service. It is probably not running.”的解决办法

    安装文件上传工具:yum install lrzsz成功安装后有如下的提示:Complete![root@server01 apps]# yum install lrzszLoaded plugins ...