标签: msal-react

测试 MSAL React 应用程序时模拟身份验证

我们的应用程序以标准方式封装在 MSAL 身份验证模板中@azure/msal-react- 关键代码段总结如下。

我们想使用反应测试库(或类似的东西)来测试应用程序的各个组件。当然,当SampleComponentUnderTest要通过测试正确呈现 React 组件(如下面的简单测试所示)时,它也必须包装在 MSAL 组件中。

是否有适当的方法来模拟 MSAL 身份验证过程以用于此类目的?无论如何,要在 MSAL 中包装待测组件并直接向该待测组件提供测试用户的凭据吗?任何对有用文档、博客文章、视频等的引用,为我们指明正确的方向,我们将不胜感激。

一个简单的测试

test('first test', () => {
  const { getByText } = render(<SampleComponentUnderTest />);
  const someText = getByText('A line of text');
  expect(someText).toBeInTheDocument();
});
Run Code Online (Sandbox Code Playgroud)

配置

export const msalConfig: Configuration = {
  auth: {
    clientId: `${process.env.REACT_APP_CLIENT_ID}`,
    authority: `https://login.microsoftonline.com/${process.env.REACT_APP_TENANT_ID}`,
    redirectUri:
      process.env.NODE_ENV === 'development'
        ? 'http://localhost:3000/'
        : process.env.REACT_APP_DEPLOY_URL,
  },
  cache: {
    cacheLocation: 'sessionStorage',
    storeAuthStateInCookie: false,
  },
  system: {
    loggerOptions: {
      loggerCallback: (level, message, containsPii) => {
        if …
Run Code Online (Sandbox Code Playgroud)

azure-ad-msal msal.js react-testing-library msal-react

12
推荐指数
1
解决办法
1万
查看次数

如何使用 Next.js 和 MSAL 进行服务器端渲染?

现在,我正在使用 MsalProvider根据用户登录的 Microsoft 帐户对用户进行身份验证。安装组件时会发生三件事:

  1. 应用使用@azure/msal-react从MSAL获取令牌
  2. 使用此令牌调用内部 API
  3. 然后,来自该 API 的数据将呈现在用户的浏览器上

由于我依赖于用户的 Microsoft 帐户凭据,因此所有内容都必须在客户端呈现吗?或者有没有一种方法可以在这里使用getServerSideProps(...)以便它可以 SSR?

azure reactjs azure-ad-msal next.js msal-react

8
推荐指数
0
解决办法
3434
查看次数

使用 loginPopup 时 Microsoft 身份验证反应“hash_empty_error”

我无法理解在尝试使用 Micrsoft Authentication 库 for React (PWA) 对用户进行身份验证时遇到的错误。我需要帮助理解为什么尝试使用 loginPopup 方法登录用户时失败。

在某些情况下,身份验证按预期工作,但在某些情况下却不起作用。任何形式的建议和/或帮助将不胜感激。

以下是我配置 microsoft 身份验证库的方式:

// create the microsoft signin configuration object
const msalConfig = {
  auth: {
    clientId   : process.env.REACT_APP_APP_CLIENT_ID,
    authority  : "https://login.microsoftonline.com/common/",
    redirectUri: window.location.origin,
  },
  cache: {
    cacheLocation: "sessionStorage",
  }
};

// initialize the user egent of the application 
const msalInstance = new msal.PublicClientApplication(msalConfig);
Run Code Online (Sandbox Code Playgroud)

这是我调用 loginPopup 方法的块,该方法应该返回一个承诺,该承诺在该函数完成时得到满足,或者在出现错误时被拒绝。

const handleMicrosoftSignin = async () => {
  try {
    // this function does not get fulfilled, hence a 'hash_empty-err' 
    let msalResponse = …
Run Code Online (Sandbox Code Playgroud)

single-page-application reactjs msal.js msal-react

7
推荐指数
1
解决办法
3320
查看次数

注销时绕过帐户选择屏幕@azure/msal-Angular V2

我正在使用@azure/msal-Angular版本 2 和Angular版本 13。这种情况是,当用户登录应用程序时,如果用户没有访问权限,则需要对用户进行授权,需要从应用程序中注销用户。这将通过调用 msalService.logoutRedirect() 在后台发生。调用注销功能时,将显示 Microsoft 帐户选择屏幕以注销而不是自动注销。有没有办法跳过帐户选择屏幕以退出。

azure-active-directory angular msal-angular msal-react

4
推荐指数
1
解决办法
5011
查看次数

自动刷新访问令牌

对于我的网站,我通过 microsoft 添加了一个简单的授权页面(使用 @azure/msal-react 库)。您可以在链接https://codesandbox.io/s/wizardly-williams-j4bo42查看演示版本

注册成功后,用户将被重定向到该网站。

我对这份工作很满意。但问题是授权期间收到的访问令牌仅存在一小时。告诉我如何才能自动更新访问令牌。

javascript reactjs msal-react

2
推荐指数
1
解决办法
1545
查看次数