我的平均堆栈应用程序使用Azure AD进行身份验证。我正在使用“Passport-Azure-AD”模块进行web api认证。根据这里的回复,我了解到
"use strict";
var passport = require('passport');
var OIDCBearerStrategy = require('passport-azure-ad').BearerStrategy;
var options = {
identityMetadata: 'https://login.microsoftonline.com/tenantid/.well-known/openid-configuration',
validateIssuer: true,
passReqToCallback: false,
loggingLevel: 'error'
};
function configure(app) {
app.use(passport.initialize());
app.use(passport.session());
passport.use(new OIDCBearerStrategy(options,
function(token, done) {
//is there anything else i need to do here?
return done(null, token.unique_name, token);
}));
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (id, done) {
done(null, id);
});
}
function authenticate(req, res, next) {
//is there anything else i need to do here?
passport.authenticate('oauth-bearer')(req, res, next);
}
server.js
下面的“UserService”用于从数据库获取用户,我想保护该API调用
"use strict";
var authentication = require('./AzureAuthenticationService');
var userService = require('./UserService');
// Initialize server
var express = require('express');
var app = exports.app = express();
authentication.configure(app);
// Set routes
app.get('/api/users',authentication.authenticate,userService.getUsers);
我是passport-azure-ad
的维护者。回答您的问题,是的,它将为您验证令牌。它通过调用代码中的jwtVerify来完成这一操作。你可以看到这是从哪里开始的。它将使用在配置中的元数据endpoint找到的密钥来解密令牌。
如果验证不成功,您将从代码中得到一个错误,如上面所示,并在此引用:
jwt.verify(token, PEMkey, options, function(err, token) {
if (err) {
if (err instanceof jwt.TokenExpiredError) {
log.warn("Access token expired");
done(null, false, 'The access token expired');
} else if (err instanceof jwt.JsonWebTokenError) {
log.warn("An error was received validating the token", err.message);
done(null, false, util.format('Invalid token (%s)', err.message));
} else {
done(err, false);
}
问题内容: 我正在努力验证Azure AD令牌签名。 当我在下面的“ jwks_uri”字段中查找正确的键描述时 https://login.microsoftonline.com/common/.well-known/openid- configuration 我检查所属密钥数据。 我尝试使用“ n”-模数和“ e”字段生成用于签名验证的公钥,但最终出现错误: 安慰: 我尝试了另一种使用“ x5
服务器:验证 问候
我有一个使用 Msal 库获取的 Azure AD JWT 令牌,但是当我尝试验证此令牌时出现问题: 客户端:共享点 Web 部件 另一方面,我有一个服务器应用程序(Java),其中验证了访问令牌 验证人: 法典 我的问题是,当我尝试验证此令牌时,我收到了此错误:使用算法验证时,令牌的签名无效:SHA256with RSA 我被困在这个,如果令牌是正确的,为什么我有这个错误? 问候
我在使用jwt.io验证我的azure广告访问令牌时获得无效签名(在手动检查后将转移到scala代码)。 我正在使用 curl 生成访问令牌: 虽然它为我提供了访问令牌,但响应不包含“Id_token”。不知道为什么。 我正在使用 BEGIN 和 END 证书包装 https://login.microsoftonline.com/common/discovery/keys 中的公钥。(如 htt
在前端,我通过登录流和auire令牌使用 然后向passport-azure-ad承载策略保护的endpoint发出请求,得到 我也在库里做了日志记录,上面写着: 我很困惑我现在该做什么,所以任何帮助都将非常感谢!
我正在学习Azure AD和Office 365,我想知道以下内容是否可行,如果可行,如何进行,因为我对文档的几个方面感到困惑: 假设一家名为Companyya的公司为其组织的用户提供Office 365。这些用户使用其Office 365 Cred使用Exchange/Outlook和Office登录(Office desktop)。 Companyya在内部托管了Active Director