如何在我的Electron React应用中集成Azure广告B2C登录?

lo8azlld  于 2022-12-08  发布在  Electron
关注(0)|答案(1)|浏览(169)

我正在尝试在我的Electron React App中集成Azure Ad B2C登录。我已经使用MSAL-React Wrapper library进行身份验证登录,它在开发模式下工作正常,因为有Web服务器,但在生产模式下不工作,因为生产中没有Web服务器。我甚至尝试运行此示例https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-node-samples/ElectronTestApp,但它不适用于Azure AD B2c租户。此外,我应该在windows http://localhost:3333/或msal 3cb 5 f0 ac-afd 2 -4579-9369-b26 bc 7212 f69://auth上为我的电子应用程序使用哪个重定向URI。我尝试了这两个,在Azure登录屏幕成功后都显示了一个空屏幕。
现在的问题是:我应该使用什么库在我的Electron(后端)+React(前端)应用程序中集成Azure AD B2c登录?以便用户使用Azure Portal登录,我的应用程序获得有效令牌。
我使用了以下MSAL配置

export const msalConfig: Configuration = {
  auth: {
    clientId: '3cb5f0ac-afd2-4579-9369-b26bsc7212f69',
    authority:
      'https://kazureapps.b2clogin.com/kaszureapps.onmicrosoft.com/B2C_1_SignIn',
    knownAuthorities: ['kazureapps.b2clogin.com'],
    redirectUri: 'msal3cb5f0ac-afd2-4579-9369-b2s6bc7212f69://auth',
    postLogoutRedirectUri: 'msal3cb5f0ac-afd2-4579-9369-b26bc7212f69://auth',
  },
};
sq1bmfud

sq1bmfud1#

·您可以尝试使用重定向方法登录,该方法使用MSAL React Wrapper元素,该元素允许您通过将特定组件 Package 在**'MsalAuthenticationTemplate'**组件中来保护这些组件。如果用户尚未登录,则此组件将调用登录,否则将呈现子组件。

‘ import { InteractionType } from "@azure/msal-browser";
    import { MsalAuthenticationTemplate, useMsal } from "@azure/msal-react";

    function WelcomeUser() {
const { accounts } = useMsal();
const username = accounts[0].username;

return <p>Welcome, {username}</p>
}

 // Remember that MsalProvider must be rendered somewhere higher up in the component tree
 function App() {
return (
    <MsalAuthenticationTemplate interactionType={InteractionType.Redirect}>
        <p>This will only render if a user is signed-in.</p>
        <WelcomeUser />
    </MsalAuthenticationTemplate>
  )
    }; ’

此外,完成上述操作以允许Azure AD B2C MSAL身份验证后,请确保已允许Azure AD B2C应用程序注册中的隐式授权流,并已添加自定义公共客户端协议作为重定向URI,如**'company://auth''msal://redirect'。而用于本地开发的'ADAL config'**应如下所示:-

‘ adalConfig: {
tenant: 'XXXXXXXXXXX',
clientId: 'XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
redirectUri: 'company://auth'
} ’

·由于用户交互(如按钮单击)而调用登录的建议方法是使用**'@ azure/msal-browser'**直接与 AuthenticatedTemplate 和/或 UnauthenticatedTemplate 组件配对,以分别向登录或注销用户呈现特定内容,如下例所示:-

‘ import { useMsal, AuthenticatedTemplate, UnauthenticatedTemplate } from "@azure/msal-react";

   function signInClickHandler(instance) {
    instance.loginRedirect();
  }

   // SignInButton Component returns a button that invokes a popup login when clicked
   function SignInButton() {
  // useMsal hook will return the PublicClientApplication instance you provided to MsalProvider
const { instance } = useMsal();

return <button onClick={() => signInClickHandler(instance)}>Sign In</button>
 };

  function WelcomeUser() {
const { accounts } = useMsal();
const username = accounts[0].username;

return <p>Welcome, {username}</p>
 }

  // Remember that MsalProvider must be rendered somewhere higher up in the component tree
  function App() {
   return (
    <>
        <AuthenticatedTemplate>
            <p>This will only render if a user is signed-in.</p>
            <WelcomeUser />
        </AuthenticatedTemplate>
        <UnauthenticatedTemplate>
            <p>This will only render if a user is not signed-in.</p>
            <SignInButton />
        </UnauthenticatedTemplate>
       </>
       )
    } ’

·因此,通过遵循以上指定的修改,您应该能够正确地将Azure AD B2C与电子React应用程序集成,因为电子应用程序使用javascript作为其基础。请参阅以下链接了解更多信息:-
https://learn.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-sign-in?tabs=react#sign-in-with-redirect
https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/324

相关问题