将PowerBI嵌入经过Azure AD v2验证的应用程序中

时间:2018-12-04 09:45:47

标签: azure-active-directory powerbi openid powerbi-embedded

我正在构建一个使用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");
  }
)

如果有任何遗漏,请问,我将其添加

0 个答案:

没有答案