【问题标题】:API authorization flow with Hapijs and oauth 2使用 Hapijs 和 oauth 2 的 API 授权流程
【发布时间】:2016-11-28 14:57:36
【问题描述】:

我们正在使用 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、roles

    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
           });
       }
    });
    

【问题讨论】:

    标签: oauth-2.0 authorization hapijs


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 2015-12-16
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 2016-10-15
      • 1970-01-01
      相关资源
      最近更新 更多