登录已拒绝为此请求授权_Rest Assured篇:REST WebServices中的身份验证和授权

news/2024/7/6 2:02:16 标签: 登录已拒绝为此请求授权
点击上方蓝字 设为星标 f7468a4e39f2010653ed46319f2430c9.png
每天傍晚伴你一起成长!

4d0c9b28a4f00c098be9f75f64279045.png

REST WebServices 中的身份验证和授权REST API[1]上下文中的两个非常重要的概念。在大多数情况下,您将访问受保护的REST API。所谓安全,是指要求您提供身份证明的API。身份证明可以以

用户名和密码认证令牌秘钥生物识别技术和许多其他方式

在REST API的上下文中,我们将对前三个选项详细探讨。

什么是身份验证?并且授权在REST WebServices中起作用吗?

认证是一种证明您是以合法身份访问系统的过程。

例如,在登录电子邮件帐户时,您可以通过提供用户名密码来证明自己。如果您拥有用户名密码,那么您就是合法访问者。这就是身份验证的意思。

在REST API的上下文中,身份验证使用HTTP请求进行。

注意: 不仅是REST API,使用HTTP请求还会对通过HTTP协议运行的任何应用程序进行身份验证。

基本认证流程

以电子邮件登录为例,我们知道,为了验证我们自己的身份,我们必须提供用户名和密码。在使用用户名和密码的非常基本的身份验证流程中,我们还将在REST API调用中执行相同的操作。但是我们如何在REST请求中发送用户名和密码?

REST请求可以具有一个称为Authorization Header的特殊标头, 该标头可以包含某种形式的凭据(用户名和密码)。收到带有授权标头的请求后,服务器可以验证凭据,并可以让您访问私有资源。

让我们看一个例子,我们创建了一个API,该API需要有效的用户名和密码来访问资源。

端点:http : //restapi.demoqa.com/authentication/CheckForAuthentication

在下面的代码中,我们将尝试点击URL,然后查看得到的响应。

@Test
public void AuthenticationBasics()
{
 RestAssured.baseURI = "https://restapi.demoqa.com/authentication/CheckForAuthentication";
 RequestSpecification request = RestAssured.given();
 Response response = request.get();
 System.out.println("Status code: " + response.getStatusCode());
 System.out.println("Status message " + response.body().asString());
}

在上面的代码中,我们只是向端点发出HTTP GET请求。在此代码中,我们未添加任何授权标头。因此,预期的行为是我们将获得授权错误。如果运行此测试,您将获得以下输出。

Status code: 401
Status message: 
{
    "StatusID": "FAULT_USER_INVALID_USER_PASSWORD",
    "Status": "Invalid or expired Authentication key provided"
}

输出清楚地表明我们有“提供了无效或过期的验证密钥” 错误。这意味着没有身份验证信息或提供的信息无效。最终,服务器拒绝我们的请求并返回错误响应。

注意:请特别注意返回的状态代码。如果身份验证失败,服务器应以401未经授权的状态代码响应

尝试使用浏览器访问该URL。您应该得到一个用户名和密码提示。下图显示了当您从浏览器中访问此URL时应该获得的内容。

580bf7e132c088a6fdd016ea1d8ecc74.png

什么是授权?以及授权如何在REST WebServices中工作?

授权是授予某人访问权限的过程。如果您被授权,则可以访问该资源。现在要进行授权,您需要提供凭据,正如我们之前讨论的那样,该过程称为身份验证。因此,授权和认证是紧密相关的术语,通常可以互换使用。

在结束本教程之前,让我们在上述URL中查看私有资源的内容。为此,请输入以下凭据

用户名:ToolsQA

密码:TestPassword

服务器将能够进行身份验证,然后授权您访问私有资源内容。下图显示了成功认证后的内容。

9656d199311fcb8f635792806feb58bf.png

有了对身份验证和授权的基本了解, 下一篇章将讲述 REST API身份验证模型的特定类型。


END

时光,在物转星移中渐行渐远,春花一梦,流水无痕,没有在最想做的时候去做的事情,都是人生的遗憾。人生需要深思熟虑,也需要一时的冲动。

356072d96171fed825cd21c449bd8f70.gif

dd76f0e3d42ec7d13633926c5ca57a77.png

356072d96171fed825cd21c449bd8f70.gif


http://www.niftyadmin.cn/n/1450264.html

相关文章

C++与JAVA中迭代器的不同

1.C迭代器 #include <iostream> #include <vector> using namespace std;int main() {vector<int> vec;for(int i 0; i < 10; i) vec.push_back(i);for(std::vector<int>::iterator it vec.begin(); it ! vec.end(); it) {cout << "…

怎么学好python编程思维导图_Python学习思维导图(必看篇)

Python学习思维导图(必看篇) 更新时间&#xff1a;2017年06月26日 08:03:39 投稿&#xff1a;jingxian 下面小编就为大家带来一篇Python学习思维导图(必看篇)。小编觉得挺不错的&#xff0c;现在就分享给大家&#xff0c;也给大家做个参考。一起跟随小编过来看看吧 无意间碰到的…

CSS 中的简写到底有多少坑?以后不敢了...

大家好&#xff0c;我是零一&#xff0c;简写&#xff08;语法糖&#xff09;可能给我们编码带来了很多便利&#xff0c;但简写也会带来一些问题&#xff0c;今天来讨论一下 CSS 中的简写的"爱恨情仇" 为什么说是爱恨情仇呢&#xff1f;因为简写给我们带来了很多的便…

uva 10837 - A Research Problem(欧拉函数+暴力)

题目链接&#xff1a;uva 10837 - A Research Problem 题目大意&#xff1a;给定一个phin&#xff0c;要求一个最小的n&#xff0c;欧拉函数n等于phin 解题思路&#xff1a;欧拉函数性质有&#xff0c;p为素数的话有phipp−1;如果p和q互质的话有phip∗qphip∗phiq 然后根据这样…

J2ME基础入门教程(转)

如果您曾经到网站上查询有关Java 2 Micro Edition 的资料&#xff0c;十之八九会被一大堆的技术名词搞的一头雾水。什么 KVM &#xff0c;什么CLDC 、CDC 、MIDP &#xff0c;后面还冒出了Personal Java 、Embedded Java以及JES 等名词。虽然名为Java 的微小版本&#xff0c;可…

display:block; 块级元素。a,span标签设置宽度和高度

display:block;是让对象成为块级元素(比如a&#xff0c;span等) 转化后 可以对a或者span标签进行width和height设置&#xff0c;否则设置不了display有很多对象&#xff0c;具体可以参考http://www.w3school.com.cn/css/pr_class_display.asp一般都是用display:none和display:b…

jquery mysql php_Ajax+jQuery+PHP+MySQL实现无刷新发表评论应用

PS&#xff1a;演示做过特殊处理&#xff0c;不会保存用户提交的数据&#xff0c;只做演示。附件内为完整实例&#xff0c;数据会提交到数据库&#xff0c;并显示在前台。HTML部分首先我们放置一个评论表单和显示评论列表#comments发表评论昵称&#xff1a;评论内容&#xff1a…

Entity Framework 6.1-Code First

Entity Framework 6.1-Code First 原文:Entity Framework 6.1-Code First Code First-代码优先&#xff0c;先创建好领域模型。新建MyDbContext继承DbContext。根据代码自动生成数据库 Code First优点 1.可以自由的创建领域模型&#xff0c;基本不受EF框架的限制。自由的命名。…