有没有人使用Microsoft.Identity.Client 1.1.0-preview成功实现Azure Activ



我已经为此苦苦挣扎了好几天(实际上是三天)。我有 AAD B2C 在 Web 应用程序和 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

现在,该项目将编译并启动。当我单击"登录"时,我得到一个 Web 视图,但它看起来并不完全正确。 [截图中的第一张图片]

这是我的变量...

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。

截图

我没有足够的声誉来发布多个链接和一张图片。

此外,Azure AD B2C API 应用程序适用于 Web 应用。我创建了一个可以进行身份验证并使用 API 的 Web 应用程序。

看起来在修改示例中的授权值时,您删除了/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";

最新更新