代码之家  ›  专栏  ›  技术社区  ›  Duncan Groenewald

在不使用浏览器UI的情况下,如何从WPF/C#应用程序对用户进行身份验证?

  •  0
  • Duncan Groenewald  · 技术社区  · 2 年前

    我试图在不使用浏览器的情况下,使用WFP/C#应用程序中的MFA来验证Azure AD的用户,因此使用自定义WPF用户界面。

    AWS Cognito提供了一个身份验证/质询流,用户在其中登录,Cognito向他们的手机发送令牌,并质询用户输入令牌。

    Azure AD中是否有类似的身份验证流,如果有,我在哪里可以找到允许使用自定义WPF/C#用户界面的示例。

    设备无法访问浏览器。我能找到的所有例子似乎都是调用浏览器与手机上的Microsoft Authenticator应用程序一起进行身份验证。这很好,因为我预计我们会在WPF UI中显示Authenticator号码,用户会在手机上接受。

    以下是验证/挑战流的示例-这在Azure AD中可能吗?

    作为替代方案,我如何使用嵌入式WebView2组件进行基于浏览器的身份验证?

     private void LoginUsingWPFUI()
     {
    
         string username = "xxxx";  // Obtained from UI
    
         string password = "Password";  // Obtained from UI
    
         var AuthService = AuthService("TenantID", "Otherparams..");
    
         AuthService.ChallengeCallback = ChallengeCallback;
    
         // Login using username and password
    
         var result = LoginToAzureADWorkAccount(username, password);
    
    
     }
    
     public void ChallengeCallback(AuthChallenge challenge)
     {
         switch (challenge.Token)
         {
             case "PresentTokenToUser";
                 ShowToken(challenge.Token);
                 // Auth Challenge
                 break;
             case "ChallengeAcceptedHideToken":
                 HideToken();
                 // Login sucessfull
                 break;
             default:
                 // Login failed...
                 break;
         }
           
     }
    
    0 回复  |  直到 2 年前
        1
  •  0
  •   Duncan Groenewald    2 年前

    好的,最后我找到了这个例子,专门用于设备代码获取令牌。设备显示一个代码,用户需要转到 https://microsoft.com/devicelogin 网页,提示他们输入设备上显示的代码。

    然后,这会要求他们使用正常的身份验证方法使用Azure AD帐户登录。

    整洁,因为根本不需要在设备中输入任何内容。

    https://learn.microsoft.com/en-au/azure/active-directory/develop/scenario-desktop-acquire-token-device-code-flow?tabs=dotnet