用户使用Active Directory B2C工作流注册,因此他们显示为会员
我想做的是像这里解释的那样更改用户密码
所以我的代码看起来像这样:var options = new TokenCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};
var userNamePasswordCredential = new UsernamePasswordCredential(
email, currentPassword, "my tenant id", "my client id", options);
var authentication = await userNamePasswordCredential.AuthenticateAsync();
var scopes = new[] { "User.Read" };
var graphClient = new GraphServiceClient(userNamePasswordCredential, scopes);
var user = await graphClient.Me
.Request()
.GetAsync();
await graphClient.Me
.ChangePassword(currentPassword, newPassword)
.Request()
.PostAsync();
我已经尝试了很多事情,但我总是得到相同的异常:
例外如下:
MsalClientException:不支持的用户类型'Unknown'。请参阅https://aka.ms/msal-net-up。
AuthenticationFailedException: UsernamePasswordCredential身份验证失败:不支持的用户类型"未知"。请参阅https://aka.ms/msal-net-up。
所以我的问题是,是否可以自动更改在ADB2C注册的用户的密码?
如果是,是什么导致了异常?
我知道我可以更改用户的密码更新PasswordProfile作为admin,但我想以某种方式验证他们知道他们的当前密码。
您不能使用Azure AD B2C帐户对Microsoft Graph API进行身份验证。
要执行此操作,必须从Azure Portal中的AAD Users刀片上创建一个普通的Azure AD帐户。这意味着,这对B2C用户根本不起作用。
对于Change Password流,创建一个用户可以自己执行的自助服务更改密码流。
或者,您必须创建一个受B2C保护的应用程序可以调用的API端点。API必须使用client_credentials流调用Graph API,并在密码配置文件上执行Update User操作。.