带有auth0的Node.js中的高级身份验证
#node #auth0

简介:

node.js提供了创建服务器端应用程序的理想环境,并有可能采用不同的身份验证策略。您可以使用的功能强大工具之一是Auth0,这是一种灵活的,可插入的解决方案,可在您的应用程序中添加身份验证和授权服务。该博客将使用Node.js。

探索Auth0的高级使用情况。

先决条件:

  1. node.js and express.js的基本知识
  2. 熟悉auth0
  3. 一个Auth0帐户

创建node.js应用程序:

为您的应用程序创建一个新目录,并使用package.json文件初始化它。这可以通过运行以下命令来完成:

mkdir myAuthApp && cd myAuthApp
npm init -y

设置auth0:

注册或登录到您的Auth0帐户。创建一个新的“常规Web应用程序”,并记下您的“域”,“客户端ID”和“客户端秘密”。这些值将在以后使用。

node.js中实现auth0:

通过运行:npm install express dotenv passport passport-auth0 express-session

安装必要的软件包

创建一个.env文件并添加以下行,用Auth0的凭证代替占位符。

AUTH0_CLIENT_ID=YOUR_CLIENT_ID
AUTH0_DOMAIN=YOUR_DOMAIN
AUTH0_CLIENT_SECRET=YOUR_CLIENT_SECRET
AUTH0_CALLBACK_URL=http://localhost:3000/callback
SESSION_SECRET=YOUR_RANDOM_VALUE

配置护照:

护照是Node.js的身份验证中间件。 Passport-auth0策略用于AUTH0实施。使用类似的auth0策略设置护照:

const passport = require('passport');
const Auth0Strategy = require('passport-auth0');

let strategy = new Auth0Strategy(
  {
    domain: process.env.AUTH0_DOMAIN,
    clientID: process.env.AUTH0_CLIENT_ID,
    clientSecret: process.env.AUTH0_CLIENT_SECRET,
    callbackURL: process.env.AUTH0_CALLBACK_URL || 'http://localhost:3000/callback'
  },
  function(accessToken, refreshToken, extraParams, profile, done) {
    return done(null, profile);
  }
);

passport.use(strategy);

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(user, done) {
  done(null, user);
});

保护路线:

为了保护路线,您可以使用“连接 - 确保login”软件包中的“ ensureLoggedIn”中间件。它将将未经身份的用户重定向到登录页面。

const ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn();
app.get('/user', ensureLoggedIn, (req, res) => {
    res.send(req.user);
});

结论:

auth0提供了强大的,高度可自定义的身份验证和授权服务。与node.js应用程序集成在一起很容易,并且在管理用户身份验证方面可以将很多工作脱离您的肩膀。上面的指南使您瞥见了Auth0的高级应用。始终记住要确保您的敏感数据安全,并且永远不会在客户端或公共存储库中揭露您的秘密。