Я создаю веб-приложение, которое использует Azure AD для входа в систему и хочет встроить PowerBI в клиент, написанный на React.
У меня есть простое экспресс-приложение, использующее node-openid-client и passport для аутентификации в конечной точке Azure AD v2.Это затем выдает приложение реакции, а затем мы перенаправляем его клиенту.Проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить 1 токен, который имеет разрешения как для моего приложения, так и для Power BI.Когда я добавляю разрешения 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");
}
)
Если чего-то не хватает, просто спросите, и я добавлю его