我正在构建一个使用Azure AD进行登录的Web应用程序,并希望将PowerBI嵌入用React编写的客户端中。
我有一个简单的快速应用程序,它使用node-openid-client和passport来向Azure AD v2终结点进行身份验证。然后呈现出一个React应用程序,然后我们在客户端上对其进行补水。我面临的问题是我无法获得同时具有我的应用程序和Power BI权限的1个令牌。当我在声明中添加Power BI权限时,它甚至会将令牌的访问者从我的应用程序更改为PowerBI(00000009-0000-0000-c000-000000000000),因此它无法验证。
我正在客户端中使用此软件包:https://www.npmjs.com/package/react-powerbi
有什么办法可以获取覆盖Azure AD应用程序中所有在客户端上使用的权限的令牌?
相关代码:
Issuer.discover(`https://login.microsoftonline.com/${TENANT_ID}/v2.0`)
.then(async adIssuer => {
const eidClient = new adIssuer.Client({
redirect_uri: REDIRECT_URI,
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
token_endpoint_auth_method: "client_secret_basic"
});
passport.use(
"oidc",
new Strategy(
{
client: microsoftClient,
params: {
client_id: CLIENT_ID,
redirect_uri: REDIRECT_URI,
scope: "openid",
response_type: "code",
response_mode: "query",
state: "testing",
nonce: 10000
}
},
(tokenset, user, done) => {
done(null, {
access_token: tokenset.access_token,
id_token: tokenset.id_token,
expires_at: tokenset.expires_at,
id: tokenset.sub,
...user
});
}
)
);
})
.catch(e => console.error(e));
app
.get("/auth", passport.authenticate("oidc"))
.get(
"/auth/cb",
passport.authenticate("oidc", {
successRedirect: "/",
failureRedirect: "/login"
}),
(req, res) => {
res.status(401).send("Login");
}
)
如果有任何遗漏,请问,我将其添加