是否有人使用 Microsoft.Identity.Client 1.1.0-preview 成功实现了 Azure Active Directory B2C 的身份验证?

Has anyone successfully implemented Azure Active Directory B2C for auth using Microsoft.Identity.Client 1.1.0-preview?

我已经为此苦苦挣扎了好几天(实际上是三天)。我有一个 AAD B2C 正在开发一个网络应用程序和一个 api。我无法在我的 Xamarin 移动项目中获取它 运行。我正在使用 UWP 项目来测试我的配置,因为它具有在 Windows 10 计算机上进行故障排除的最简单的应用程序。我正在使用 Visual Studio 2015 Pro。

我正在使用 Microsoft.Identity.Client 1.1.0 预览版。 我以此作为我尝试实施的起点。

https://github.com/Azure-Samples/active-directory-b2c-xamarin-native

现在项目将编译并启动。当我点击 Sign in 时,我得到了一个 WebView,但它看起来并不完全正确...... [屏幕截图中的第一张图片]

这是我的变量...

public class Constants
{
public static string ApplicationID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
public static string[] Scopes = {""};
public static string SignUpSignInPolicy = "B2C_1_Standard_SignUpSignIn";
public static string ResetPasswordPolicy = "B2C_1_Standard_PasswordReset";
public static string EditProfilePolicy = "B2C_1_Standard_EditProfile";

public static string Authority = "https://login.microsoftonline.com/[MyTennantName].onmicrosoft.com/B2C_1_Standard_SignUpSignIn";
public static string AuthorityEditProfile = "https://login.microsoftonline.com/[MyTennantName].onmicrosoft.com/B2C_1_Standard_EditProfile";

public static string ApiEndpoint = "https://[MyTennantName].onmicrosoft.com/apiservices";

public static UIParent UiParent = null;
}

我的登录方法是....

async void OnSignInSignOut(object sender, EventArgs e)
{
    try
    {
        if (btnSignInSignOut.Text == "Sign in")
        {
            AuthenticationResult ar = await App.PCA.AcquireTokenAsync(Constants.Scopes, GetUserByPolicy(App.PCA.Users, Constants.SignUpSignInPolicy), Constants.UiParent);
            UpdateUserInfo(ar);
            UpdateSignInState(true);
        }
        else
        {
            foreach (var user in App.PCA.Users)
            {
                App.PCA.Remove(user);
            }
            UpdateSignInState(false);
        }
    }
    catch (Exception ex)
    {
        // Checking the exception message 
        // should ONLY be done for B2C
        // reset and not any other error.
        if (ex.Message.Contains("AADB2C90118"))
            OnPasswordReset();
        // Alert if any exception excludig user cancelling sign-in dialog
        else if (((ex as MsalException)?.ErrorCode != "authentication_canceled"))
            await DisplayAlert($"Exception:", ex.ToString(), "Dismiss");
    }
}

然而,在我输入密码之前,我得到了以下信息...... [屏幕截图中的第二张图片]

我的应用程序定义如下所示...[屏幕截图中的第三张图片]

我认为它无法识别我的租户并尝试使用 Microsoft 帐户登录。我已经仔细检查了我的租户名称和应用程序 ID。

Screenshots

我没有足够的声望 post 一张 link 和一张图片。

此外,Azure AD B2C api 应用程序适用于 Web 应用程序。我创建了一个 Web 应用程序,可以对 API.

进行身份验证和使用

您似乎在修改示例中的授权值时删除了 /tfp/ 部分。

您应该按如下方式更新您的值:

   public static string Authority = "https://login.microsoftonline.com/tfp/[MyTennantName].onmicrosoft.com/B2C_1_Standard_SignUpSignIn";
   public static string AuthorityEditProfile = "https://login.microsoftonline.com/tfp/[MyTennantName].onmicrosoft.com/B2C_1_Standard_EditProfile";