OAuth2 是一种常用的认证授权协议,通过授权服务器颁发访问令牌,实现客户端访问资源服务器的权限控制。在 Express.js 中,我们可以使用第三方库来实现 OAuth2 认证,本文将介绍如何使用 passport
和 passport-oauth2
实现 OAuth2 认证。
安装和配置
首先,我们需要安装 passport
和 passport-oauth2
:
npm install passport passport-oauth2
然后,在 Express.js 应用中引入 passport
:
const express = require('express'); const passport = require('passport'); const app = express();
接下来,我们需要配置 passport
和 passport-oauth2
。首先,我们需要设置认证策略:
// javascriptcn.com 代码示例 const OAuth2Strategy = require('passport-oauth2'); passport.use(new OAuth2Strategy({ authorizationURL: 'https://example.com/oauth2/authorize', tokenURL: 'https://example.com/oauth2/token', clientID: 'CLIENT_ID', clientSecret: 'CLIENT_SECRET', callbackURL: 'http://localhost:3000/auth/callback' }, function(accessToken, refreshToken, profile, done) { // 处理认证成功后的逻辑 }));
其中,authorizationURL
和 tokenURL
分别为认证服务器的授权和令牌颁发 URL,clientID
和 clientSecret
为客户端标识和密钥,callbackURL
为认证服务器回调 URL。
然后,我们需要定义认证路由:
app.get('/auth', passport.authenticate('oauth2')); app.get('/auth/callback', passport.authenticate('oauth2', { failureRedirect: '/login' }), function(req, res) { // 认证成功后的逻辑 });
其中,/auth
路由用于发起认证请求,/auth/callback
路由用于处理认证回调。
最后,我们需要启用 passport
:
app.use(passport.initialize());
示例代码
下面是一个完整的示例代码:
// javascriptcn.com 代码示例 const express = require('express'); const passport = require('passport'); const OAuth2Strategy = require('passport-oauth2'); const app = express(); passport.use(new OAuth2Strategy({ authorizationURL: 'https://example.com/oauth2/authorize', tokenURL: 'https://example.com/oauth2/token', clientID: 'CLIENT_ID', clientSecret: 'CLIENT_SECRET', callbackURL: 'http://localhost:3000/auth/callback' }, function(accessToken, refreshToken, profile, done) { // 处理认证成功后的逻辑 })); app.get('/auth', passport.authenticate('oauth2')); app.get('/auth/callback', passport.authenticate('oauth2', { failureRedirect: '/login' }), function(req, res) { // 认证成功后的逻辑 }); app.use(passport.initialize()); app.listen(3000, function() { console.log('Server started on port 3000'); });
总结
本文介绍了在 Express.js 中如何使用 passport
和 passport-oauth2
实现 OAuth2 认证。通过配置认证策略和路由,我们可以轻松地实现 OAuth2 认证,并控制客户端访问资源服务器的权限。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657c1c75d2f5e1655d6df39d