使用Hapijs和oauth 2的API授权流程

时间:2016-11-28 06:20:10

标签: oauth-2.0 authorization hapijs

我们正在使用hapijs和oauth服务器进行身份验证。我们需要在hapijs中实现基于角色的授权。对于hapijs来说,这是好的。

  1. 注册身份验证方案

    server.auth.scheme('custom', function (server, options) {
    
         return {
    
            authenticate: function (request, reply) {
            // calling oauth flow for roles match
         }   
    });
    
  2. 注册身份验证策略&在server.route中添加auth,角色

    server.auth.strategy('default', 'custom');
    
    server.route({
        method: 'GET',
        path: API_Path,
        config: {
           roles: ['ADMIN', 'USER'],
           auth : 'default'
        },
        handler: function (request, reply) {                
           return reply.act({
               role: 'admin',
               cmd: 'getInfo',
               id: request.params.id
           });
       }
    });
    

1 个答案:

答案 0 :(得分:0)

您应该注册策略并验证这样的凭据。

const validate = function (request, username, password, callback) {
const user = users[username];
if (!user) {
    return callback(null, false);
}

Bcrypt.compare(password, user.password, (err, isValid) => {
    callback(err, isValid, { id: user.id, name: user.name });
});
};

server.auth.strategy(strategy_name, scheme_name, { validateFunc: validate });

您的身份验证应该有模式,范围,策略等选项

...
...
auth :{
    mode:'required',
    strategy:'strategy_name',
    scope: ['ADMIN', 'USER']
},
... 
...

您可以使用Bell