我正在创建一个SPA使用React和Express。我正在尝试包括使用MSAL.js的身份验证,并查看了微软SPA教程。我已经能够使用@msal-react来实现这一功能。虽然这确实会执行身份验证,但它不会保护REST免受未经身份验证的用户的访问。
我发现Active Directory Javascript Nodejs Web API似乎提供了一种使用Passport和seem策略来保护REST的方法,但是显示如何将其与客户端结合起来的链接似乎被打破了。
我不知道如何将客户端上的身份验证与REST连接起来。据我所知,必须传递身份验证令牌,但我不知道如何传递。
服务器端示例代码有:
// API endpoint exposed
app.get("/api",
passport.authenticate('oauth-bearer', {session: false}),
(req, res) => {
console.log('Validated claims: ', req.authInfo);
// Service relies on the name claim.
res.status(200).json({
'name': req.authInfo['name'],
'issued-by': req.authInfo['iss'],
'issued-for': req.authInfo['aud'],
'scope': req.authInfo['scp']
});
}
);我在客户端试图做的是获取帐户信息:
import {
useAccount,
useMsal
} from "@azure/msal-react";
...
const { accounts } = useMsal();
const account = useAccount(accounts[0] || {});从认证后的account来看,我认为account.idTokenClaims可能有必要的东西,但没有运气。
我被困住了,因为我不确定我是否对Bearer策略的工作方式有根本的误解,我是否不正确地使用MSAL或Passport (或两者),或者这是否是一个配置问题。我很感激你的帮助!
发布于 2021-02-01 22:12:59
https://stackoverflow.com/questions/65971268
复制相似问题