Postman授权设置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Postman授权设置相关的知识,希望对你有一定的参考价值。
参考技术A 很多时候,出于安全考虑我们的接口并不希望对外公开。这个时候就需要使用授权(Authorization)机制 授权过程验证您是否具有访问服务器所需数据的权限。 当您发送请求时,您通常必须包含参数,以确保请求具有访问和返回所需数据的权限。 Postman提供授权类型,可以轻松地在Postman本地应用程序中处理身份验证协议。Postman支持的授权协议类型如下:
Basic auth
基本身份验证是一种比较简单的授权类型,需要经过验证的用户名和密码才能访问数据资源。这就需要我们输入用户名和对应的密码。
案例:请求URL如下,授权账号为:
https://postman-echo.com/basic-auth
Digest Auth
Digest auth是一个简单的认证机制,最初是为HTTP协议开发的,因此也常叫做HTTP摘要。其身份验证机制非常简单,它采用哈希加密方法,以避免用明文传输用户的口令。摘要认证就是核实参与通信的两方都知道双方共享的一个口令。
当server想要查证用户的身份,它产生一个摘要盘问(digest challenge),并发送给用户。典型的摘要盘问例如以下:
Digest realm="iptel.org", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="", algorithm=MD5
这里包含了一组参数,也要发送给用户。用户使用这些参数,来产生正确的摘要回答,并发送给server。摘要盘问中的各个参数,其意义以下:
realm(领域):领域参数是强制的,在全部的盘问中都必须有。它是目的是鉴别SIP消息中的机密。在SIP实际应用中,它通常设置为SIP代理server所负责的域名。
nonce(现时):这是由server规定的数据字符串,在server每次产生一个摘要盘问时,这个参数都是不一样的(与前面所产生的不会雷同)。“现时”一般是由一些数据通过md5杂凑运算构造的。 这种数据通常包含时间标识和server的机密短语。这确保每一个“现时”都有一个有限的生命期(也就是过了一些时间后会失效,并且以后再也不会使用),并且是独一无二的 (即不论什么其他的server都不能产生一个同样的“现时”)。
algorithm(算法):这是用来计算的算法。当前仅仅支持MD5算法。
qop(保护的质量):这个参数规定server支持哪种保护方案。client能够从列表中选择一个。值 auth表示仅仅进行身份查验, auth-int表示进行查验外,另一些完整性保护。须要看更具体的描写叙述,请参阅RFC2617。
案例 :
请求URL: https://postman-echo.com/digest-auth
摘要配置信息如下:用户名密码和上面basic auth一样
Digest username="postman", realm="Users", nonce="ni1LiL0O37PRRhofWdCLmwFsnEtH1lew", uri="/digest-auth", response="254679099562cf07df9b6f5d8d15db44", opaque=""
执行请求结果如下:
OAuth 1.0
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
扩展资料:
案例
请求URL如下:请求方式为GET,Add authorization data to设置为:Request Headers
https://postman-echo.com/oauth1
参数配置为:
发送请求结果如下:
如果Consumer Secret错误则返回如下结果:
扩展资料: 各个授权协议文档
Hawk Authentication
Hawk Auth是一个HTTP认证方案,使用MAC(Message Authentication Code,消息认证码算法)算法,它提供了对请求进行部分加密验证的认证HTTP请求的方法。hawk方案要求提供一个共享对称密匙在服务器与客户端之间,通常这个共享的凭证在初始TLS(安全传输层协议)保护阶段建立的,或者是从客户端和服务器都可用的其他一些共享机密信息中获得的。
案例
请求URL如下: https://postman-echo.com/auth/hawk
密钥信息如下:
执行结果:
如果将key改为其他任意的字符则返回如下结果:
使用 Passport 授权时为 API 测试设置 Postman
【中文标题】使用 Passport 授权时为 API 测试设置 Postman【英文标题】:Setting Up Postman for API Testing When Using Passport Authorization 【发布时间】:2016-12-11 07:46:07 【问题描述】:在测试我的应用程序的 API 时试图让 Postman 工作时,我有点困惑。即,我正在使用 Passport 身份验证;但是,我不知道它默认为哪种类型或在我的代码中使用哪种类型。我怎样才能弄清楚这一点以及我应该在 Postman 中选择哪种类型?
这是相关的护照代码:
var login = require('./login');
var signup = require('./signup');
var User = require('../models/user');
module.exports = function(passport, path, nodemailer, sesTransport, EmailTemplate, templateDir, template)
// Passport needs to be able to serialize and deserialize users to support persistent login sessions
passport.serializeUser(function(user, done)
//console.log('serializing user: ');console.log(user);
done(null, user._id);
);
passport.deserializeUser(function(id, done)
User.findById(id, function(err, user)
//console.log('deserializing user:',user);
done(err, user);
);
);
// Setting up Passport Strategies for Login and SignUp/Registration
login(passport);
signup(passport, path, nodemailer, sesTransport, EmailTemplate, templateDir, template);
最后,我几乎所有的 API 点仅在用户登录时才起作用。如何通过保存授权凭据在 Postman 中模拟相同的行为?
编辑:
Perhaps this code is relevant as well:
module.exports = function(passport)
passport.use('login', new LocalStrategy(
passReqToCallback : true,
usernameField: 'email',
passwordField: 'password'
,
function(req, username, password, done)
// check in mongo if a user with username exists or not
User.findOne( 'email' : username ,
function(err, user)
// In case of any error, return using the done method
if (err)
return done(err);
// Username does not exist, log the error and redirect back
if (!user)
console.log('User Not Found with username '+username);
return done(null, false, req.flash('message', 'User Not found.'));
// User exists but wrong password, log the error
if (!isValidPassword(user, password))
console.log('Invalid Password');
return done(null, false, req.flash('message', 'Invalid Password')); // redirect back to login page
// User and password both match, return user from done method
// which will be treated like success
return done(null, user);
);
)
);
var isValidPassword = function(user, password)
return bCrypt.compareSync(password, user.password);
【问题讨论】:
您使用的是哪种护照认证策略?大多数人使用passport-http-bearer。 如何确定?我查看了代码,似乎没有任何参数。 可以是本地护照吗? 【参考方案1】:我没有运行本地身份验证策略的代码,但我认为以下邮递员设置应该适合您。
请求访问令牌;假设您的端点是 auth/local。
-
打开邮递员
创建一个 POST 请求
在授权选项卡下设置“无身份验证”
在正文选项卡下 -> 点击 x-www-form-urlencoded
添加一个名为email的键并输入用户email
添加一个名为 password 的密钥并输入电子邮件的相关密码
请参阅下面的令牌请求屏幕截图:
响应将返回一个 access_token。
要使用 access_token,只需创建一个 HTTP 请求,然后在 HEADER 选项卡中,添加键 Authorization 后跟“Bearer”的值
查看使用令牌请求截图:
【讨论】:
@MadPhysicist 让我知道这是否适合您。 您所指的“关联电子邮件密码”是什么? 我已经尝试了您建议的第一部分。在登录页面上,我有两个文本字段:电子邮件和密码。这些是我在执行 POST 请求时预先填写的键和值。但是,它返回(代码 200)并且似乎将整个登录页面(HTML 表单)返回给我。 @MadPhysicist 从您的登录端点返回的内容由您自己的代码确定。 Passport 仅执行身份验证并告诉您的应用程序执行身份验证的用户是否有效。通常,您的代码会继续生成唯一的访问令牌并将其作为响应传回给用户。然后,用户将使用此令牌在后续请求中代表他。检查端点中的代码。我怀疑你会有类似res.redirect('login-page-url')
“关联电子邮件机密” - 我的意思是用户的护照。【参考方案2】:
我使用它,它在邮递员中运行良好。 获得访问令牌的响应后 在授权选项卡下。从“类型”下拉列表中选择“不记名令牌”。并且带有字段的令牌将出现在右侧。输入访问令牌。
这适用于 Laravel REST API。
查看屏幕截图 Postman Auth Token passing
【讨论】:
【参考方案3】:我所做的是。首先通过邮递员发送登录请求。如果您查看响应,您应该会看到一个 cookie 选项卡。复制cookie的值
Postman Picture
当您想检查标头中的“受保护”路由时,您需要选择 cookie 并在值中粘贴您之前复制的值。
Cookie Header
【讨论】:
以上是关于Postman授权设置的主要内容,如果未能解决你的问题,请参考以下文章
将 Postman“获取新的授权令牌”转换为 curl 命令