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实现接口测试

如何在 POSTMAN 环境中添加授权标头?

postman使用--添加headers授权cookies

将 Postman“获取新的授权令牌”转换为 curl 命令

使用 Postman 进行 ASP.NET Web API 授权

Postman 上的授权类型 Bearer Token