是否有人使用 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";
我已经为此苦苦挣扎了好几天(实际上是三天)。我有一个 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";