js_脚本之家,UI测试API报401无权限访问问题
分类:会员中心

主题素材呈报:

概述

当大家用swagger UI对Web API 实行测量检验时报401谬误

上少年老成篇大家介绍了哪些行使vue resource管理HTTP诉求,结合服务端的REST API,就可见十分轻便地营造三个增加和删除查改应用。那一个利用始终遗留了叁个主题材料,Web App在拜访REST API时,未有通过任何说明,这使得服务端的REST API是不安全的,只要有人知道api地址,就能够调用API对服务端的财富开展修改和删除。后天我们就来研究一下怎么整合Web API来界定能源的访谈。

小编们点开GET /api/services/app/Role/GetAll,输入参数

本文的显要内容如下:

 亚洲城ca88手机版注册 1

介绍传统的Web应用和基于REST服务的Web应用 介绍OAuth认证流程和密码情势创制二个依据ASP.NET Identity的Web API应用程序 基于$.ajax完结OAuth的登记、登陆、注销和API调用 基于vue-resource达成OAuth的挂号、登入、注销和API调用

点击Try it out!按钮,报401错误

正文的末梢示例是组成上风姿洒脱篇的CU大切诺基D,本文的登陆、注册、注销和API调用功用实现的。

 亚洲城ca88手机版注册 2

正文9个示范的源码已放置GitHub:

 

OAuth介绍

由来和消除方案

传统的Web应用

翻开右上角有个革命惊叹号的Logo

在古板的Web应用程序中,前后端是位于三个站点下的,大家能够由此会话来保存客商的新闻。

 亚洲城ca88手机版注册 3

举例说:三个简便的ASP.NET MVC应用程序,顾客登入成功后,大家将客户的ID记录在Session中,假如为Session["UserID"]。前端发送ajax哀告时,假诺这些乞求要求已登陆的顾客工夫访问,大家只需在后台Controller中验证Session["UserID"]js_脚本之家,UI测试API报401无权限访问问题。是否为空,就足以判明客户是或不是业已报到了。

点击查看原因是访谈API要求输入授权token值举办表达,token值是后台依照登陆顾客动态变化的,怎么样拿到呢?

那也是古板的Web应用可以逃脱HTTP面向无连接的措施。

 亚洲城ca88手机版注册 4

基于REST服务的Web应用

亚洲城ca88手机版注册,缓和方案生龙活虎:

明日无数行使,客商端和服务端是分手的,服务端是依赖REST风格构建的风流倜傥套Service,顾客端是第三方的Web应用,客商端通过跨域的ajax诉求获取REST服务的能源。

有个一向拿到授权token的API:/api/TokenAuth/Authenticate

然则REST 瑟维Stone常是被设计为无状态的,那意味大家无法依赖于Session来保存顾客新闻,也不能够利用Session["UserID"]这种措施鲜明客商地方。

亚洲城ca88手机版注册 5

清除这些主题素材的办法是怎么吧?常规的主意是应用OAuth 2.0。

输入客商名和密码就可以得到token

对于客商相关的OpenAPI,为了珍重客户数量的吴忠和隐衷,第三方Web应用访谈客户数量前都亟待显式的向客户征采授权。比较于OAuth 1.0,OAuth 2.0的辨证流程进一层简约。

亚洲城ca88手机版注册 6

专项使用名词介绍

获取结果,注意选用时前边加上 Bearer 空格

在精通OAuth 2.0从前,大家先驾驭多少个名词:

亚洲城ca88手机版注册 7

Resource:能源,和REST中的能源概念近似,有些财富是访谈受保险的 Resource Server:寄存能源的服务器 Resource Owner:财富全部者,本文中又称为用户User Agent:顾客代理,即浏览器 Client: 访问财富的顾客端,也等于应用程序 Authorization Server:认证服务器,用于给Client提供访谈令牌的服务器 Access Token:访问财富的令牌,由Authorization Server器付与,Client访问Resource时,需提供Access Token Bearer Token:Bearer Token是Access Token的意气风发种,另黄金时代种是Mac Token。 Bearer Token的行使格式为:Bearer XXXXXXXX

除恶务尽方案二:

Token的门类请参考:

大家得以直接登陆客户端查看访谈API的token值就可以

一时候认证服务器和能源服务器能够是风流倜傥台服务器,本文中的Web API示例正是这种应用处境。

自己以admin登入成功后,F12 查看浏览器访谈后台token值,在Network下随意点击三个伸手数据到后台央浼API的链接(注:作者用的是谷歌(Google卡塔 尔(阿拉伯语:قطر‎chrome 浏览器卡塔尔国

OAuth认证流程

 亚洲城ca88手机版注册 8

在驾驭那多少个词以往,大家用那多少个名词来编个有趣的事。

小编们在地点的Headers的Request Headers里面包车型地铁Authorization查看到授权token新闻

简化版本

Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjIiLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiYWRtaW4iLCJBc3BOZXQuSWRlbnRpdHkuU2VjdXJpdHlTdGFtcCI6IjY3NDhlNDQ2LTI4YWUtYWRjNi0zNmU2LTM5ZTIzMGFhNzA3MSIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd3MvMjAwOC8wNi9pZGVudGl0eS9jbGFpbXMvcm9sZSI6IkFkbWluIiwiaHR0cDovL3d3dy5hc3BuZXRib2lsZXJwbGF0ZS5jb20vaWRlbnRpdHkvY2xhaW1zL3RlbmFudElkIjoiMSIsInN1YiI6IjIiLCJqdGkiOiI0N2U0Y2YwNC05ODYyLTQ4MjItOTBhOC01Njk1NWUwYWE1M2UiLCJpYXQiOjE1MTE0NDU3MjUsIm5iZiI6MTUxMTQ0NTcyNSwiZXhwIjoxNTExNTMyMTI1LCJpc3MiOiJzYWFzIiwiYXVkIjoic2FhcyJ9.eXDes4LNkV4dkcFy-GTSF6kGDTK3a0blS3I6O7c2HuQ

本条传说的简化版本是:顾客访谈财富。

将以此授权消息copy到大家后台实行授权

简化版的有趣的事唯有三个结实,下边是以此传说的求实版本:

 亚洲城ca88手机版注册 9

顾客通过浏览器展开顾客端后,顾客端必要客商给与授权。 客商端能够直接将授权央求发给顾客,只怕发送给贰此中级媒介,比如认证服务器。 客户同意付与客商端授权,顾客端收到客户的授权。 授权形式决定于顾客端应用的形式,以至表明服务器所辅助的格局。 客商端提供身份音讯,然后向认证服务器发送哀求,申请访谈令牌 认证服务器验证客商端提供的地点消息,假若申明通过,则向客商端发放令牌 客商端使用访问令牌,向财富服务器央求受保证的财富能源服务器验证访谈令牌,假如可行,则向客商端开放资源

 

如上多少个步骤,是较为关键的一个,即客户怎样才干给客商端授权。有了这么些授权未来,顾客端就足以赢得令牌,进而通过临牌获取能源。那也是OAuth 2.0的运作流程,详细的情况请参考:

再点开销现已授权成功

客商端的授权形式

 亚洲城ca88手机版注册 10

顾客端必得获得客商的授权,才具获取令牌。

下一场大家再开展测验,Response Code已重回200,测验通过。在后台打断点就能够调整

OAuth 2.0概念了多种授权格局:

 亚洲城ca88手机版注册 11

授权码形式 简化情势 密码方式(resource owner password credentials卡塔尔顾客端格局

 

本文的演示是依据密码方式的,笔者就只简介这种格局,其余3本人就不介绍了。

密码形式

密码形式(Resource Owner Password Credentials Grant卡塔尔国中,客商向客商端提供温馨的顾客名和密码。顾客端应用那些音信,向服务端申请授权。

在这种情势中,顾客必需把自个儿的密码给客户端,不过顾客端不可存款和储蓄密码。那常常用在客户对顾客端中度信赖的情形下,比如客商端是操作系统的风度翩翩部分,也许由八个着名集团出品。

密码嘛事的试行步骤如下:

客户向客户端提供顾客名和密码。

客商端将顾客名和密码发给认证服务器,向前面一个央浼令牌。

注解服务器确认精确后,向客商端提供访问令牌。

步骤中,顾客端发出的HTTP伏乞,满含以下参数:

grant_type:表示授权类型,此处的值固定为"password",必选项。 username:表示客户名,必选项。 password:表示客户的密码,必选项。 scope:表示权限限制,可选项。

留意:在背后的顾客端示例中,除了提供username和password,grant_type也是必需钦赐为"password",否则不能够获得服务端的授权。

服务端意况计划

例如您是前端开荒职员,况且未触及过ASP.Net Web API,能够跳过此段子。

Authentication选择Individual User Accounts

制造这几个Web API工程时,VS会自动引进Owin和AspNet.Identity相关的库。

校勘ValuesController,除了IEnumerable Get()操作外,其余操作都剔除,并为该操作使用[Authorize]特点,那意味着客商端必需透过身份验证后本领调用该操作。

public class ValuesController : ApiController{ // GET: api/Values [Authorize] public IEnumerable Get() { return new string[] { "value1", "value2" }; }}

添加Model, Controller

CustomersController类有5个Action,除了2个GET乞求外,别的3个乞求分别是POST, PUT和DELETE。为这3个央浼加多[Authorize]特色,那3个要求必得通过身份验证本领访谈。

public class CustomersController : ApiController{ private ApplicationDbContext db = new ApplicationDbContext(); // GET: api/Customers public IQueryable GetCustomers() { return db.Customers; } // GET: api/Customers/5 [ResponseType] public async Task GetCustomer { Customer customer = await db.Customers.FindAsync; if  { return NotFound(); } return Ok; } // PUT: api/Customers/5 [Authorize] [ResponseType] public async Task PutCustomer(int id, Customer customer) { // ... } // POST: api/Customers [Authorize] [ResponseType] public async Task PostCustomer { // ... } // DELETE: api/Customers/5 [ResponseType] [Authorize] public async Task DeleteCustomer { // ... }}

让Web API以CamelCase输出JSON

在Global.asax文件中增进以下几行代码:

var formatters = GlobalConfiguration.Configuration.Formatters;var jsonFormatter = formatters.JsonFormatter;var settings = jsonFormatter.SerializerSettings;settings.Formatting = Formatting.Indented;settings.ContractResolver = new CamelCasePropertyNamesContractResolver();

启用CORS

在Nuget Package Manager Console输入以下命令:

Install-Package Microsoft.AspNet.WebApi.Cors

在WebApiConfig中启用CORS:

public static class WebApiConfig{ public static void Register(HttpConfiguration config) { var cors = new EnableCorsAttribute; config.EnableCors; // ... }}

在试行上述手续时,VS已经帮大家转移好了一些类

IdentityModels.cs:包括ApplicationDbContext类和ApplicationUser类,没有要求再创立DbContext类

public class ApplicationUser : IdentityUser{ // ...}public class ApplicationDbContext : IdentityDbContext{ // ...}

Startup.Auth.cs:用于配置OAuth的片段性质。

public partial class Startup{ public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; } public static string PublicClientId { get; private set; } // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 public void ConfigureAuth { // .. // Configure the application for OAuth based flow PublicClientId = "self"; OAuthOptions = new OAuthAuthorizationServerOptions { TokenEndpointPath = new PathString, Provider = new ApplicationOAuthProvider, AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"), AccessTokenExpireTimeSpan = TimeSpan.FromDays, // In production mode set AllowInsecureHttp = false AllowInsecureHttp = true }; // Enable the application to use bearer tokens to authenticate users app.UseOAuthBearerTokens; // .. }}

这个OAuth配置项,大家只用关爱此中的两项:

本文由亚洲城ca88com手机版发布于会员中心,转载请注明出处:js_脚本之家,UI测试API报401无权限访问问题

上一篇:DB2 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 生产环境下搭建mongodb复制集高可用环境,单机复
    生产环境下搭建mongodb复制集高可用环境,单机复
    情形描述:有三台ubuntu服务器,,每台服务器桐月经有mongodb实例。创制3个mongo2.4的新实例,分别作为四个复制集节点,同时保险了日前单节点情状的安居 规划:
  • 雪域17日旅行攻略,机票最低190元
    雪域17日旅行攻略,机票最低190元
    雪域17日旅行攻略,机票最低190元。冬辰参观去何方?许六人都不会首荐江西,因为太远.因为太冷,因为开支太高.因为高原反应 喜欢 评论 浏览 天数:1
  • 严肃的谈一谈非主流与杀马特
    严肃的谈一谈非主流与杀马特
    近些日子一贯在纠缠三个小说的内容,小编不精通该用什么样的办法表明出来。于是写了删,删了改,却依然未能使和煦称心如意。想着那年就快截至了,
  • 1的单节点安装
    1的单节点安装
    Win10上利用子系统搭建hadoop当地开辟情形及常见难点一蹴而就 服务器遭遇:Ubuntu15.04、jdk1.7、Hadoop2.7.1 1的单节点安装。说明 满心激励的备选攻读hadoop,没悟
  • 集聚温商力量,第十四届全国各地温州商会年会
    集聚温商力量,第十四届全国各地温州商会年会
    ca亚洲城666最新网址,  集聚温商力量,第十四届全国各地温州商会年会郑州温商再获殊荣。商家着重报讯(新闻报道工作者朱颜北) 前不久,来自全国各