【问题标题】:React Azure AD returned blank pageReact Azure AD 返回空白页
【发布时间】:2021-02-26 17:23:16
【问题描述】:

我有一个希望添加 Azure 登录身份验证的 React 应用程序。

在没有 Azure AD 的情况下调用 index.js 中的 App.js 的原始代码如下:

import React from 'react';
import ReactDOM from 'react-dom';
import 'index.css';
import App from 'App';
import * as serviceWorker from 'serviceWorker';
import { createStore } from 'redux'
import { Provider } from 'react-redux'
import reducer from 'store/reducer'

//, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
const store = createStore(reducer);

ReactDOM.render(
  <Provider store={store}>
    {/* <React.StrictMode> */}
    <App />
    {/* </React.StrictMode> */}
  </Provider>,
  document.getElementById('root')
);

serviceWorker.unregister();

添加 Azure AD 后:

import React from 'react';
import ReactDOM from 'react-dom';
import 'index.css';
import App from 'App';
import * as serviceWorker from 'serviceWorker';
import { createStore } from 'redux'
import { Provider } from 'react-redux'
import reducer from 'store/reducer'

import { AzureAD } from 'react-aad-msal';
import { authProvider } from './authProvider';

ReactDOM.render(
  <AzureAD provider={authProvider} forceLogin={true}>
     <App />
   </AzureAD>,
   document.getElementById('root'),
 );
serviceWorker.unregister();

以上代码可以通过我的组织Azure登录。但是登录成功后会显示一个空白页面,即使我尝试将&lt;App /&gt;更改为&lt;h1&gt;Hello World&lt;/h1&gt;仍然是空白。

您对此有何见解?非常感谢!

参考: https://medium.com/@pavelray/connect-your-react-app-with-azure-ad-using-3ddd39223d27 https://www.npmjs.com/package/react-aad-msal

【问题讨论】:

  • 你在 Azure AD 应用注册和代码中设置的重定向 URL 是什么?

标签: reactjs azure react-redux azure-active-directory


【解决方案1】:

我已经按照您提供的文档进行了测试,确实有效,但我做了一些我认为是错误的更改。在我看来,重定向 url 似乎有问题。

这是我的配置,请注意我使用的是“http://localhost:3000”而不是文档中提到的“https”。当然,我在 azure 门户中设置了相同的重定向 url。然后成功了,我可以在登录后重定向到主页。

import { MsalAuthProvider, LoginType } from 'react-aad-msal';

// Msal Configurations
const config = {
    auth: {
      authority: 'https://login.microsoftonline.com/common',
      clientId: '<client-id>',
      redirectUri: 'http://localhost:3000'
    },
    cache: {
      cacheLocation: "localStorage",
      storeAuthStateInCookie: true
    }
  };
   
  // Authentication Parameters
  const authenticationParameters = {
    scopes: [
    //   '<property (i.e. user.read)>',
    //   'https://<your-tenant-name>.onmicrosoft.com/<your-application-name>/<scope (i.e. demo.read)>'
        'user.read'
    ]
  }
   
  // Options
  const options = {
    loginType: LoginType.Popup,
    tokenRefreshUri: window.location.origin + '/auth.html'
  }
   
  export const authProvider = new MsalAuthProvider(config, authenticationParameters, options)

最后,我找到了a doc,上面写着Microsoft is currently in process of building an official @azure/msal-react library which will replace react-aad-msal,所以如果你准备改变主意,我认为本页中的samples 可以帮助你。它包含 one 使用 @azure/msal-react。

【讨论】:

  • 非常感谢。顺便问一下,我可以在配置中应用 OAuth2 吗?
  • 你的目的是什么?我怎么知道“配置”。您的意思是您想要一个使用 react 集成 azure ad 并通过访问令牌调用 microsoft api 的解决方案吗?如果是这样,我认为我最后提到的样品可以满足您的要求。
猜你喜欢
  • 2022-07-19
  • 2017-11-20
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多