更改密码操作在 Graph API 中引发异常 "Unsupported User Type 'Unknown'"
ChangePassword operation throws exception "Unsupported User Type 'Unknown'" in GraphAPI
用户使用 Active Directory B2C 工作流程注册,因此他们显示为成员
我想做的是像解释的那样更改用户密码 here
所以我的代码如下所示:
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: Unsupported User Type 'Unknown'. Please see
https://aka.ms/msal-net-up.
AuthenticationFailedException: UsernamePasswordCredential
authentication failed: Unsupported User Type 'Unknown'. Please see
https://aka.ms/msal-net-up.
所以我的问题是,是否可以自动更改在 ADB2C 中注册的用户的密码?
如果是,是什么导致了异常?
我知道我可以更改以管理员身份更新 PasswordProfile 的用户的密码,但我想以某种方式验证他们知道他们当前的密码。
您不能使用 Azure AD B2C 帐户向 Microsoft Graph 进行身份验证API。
您必须为此操作从 Azure 门户中的 AAD 用户边栏选项卡创建一个普通的 Azure AD 帐户。这意味着,这对 B2C 用户根本不起作用。
对于更改密码流程,创建一个 self service change-password flow 用户可以自己完成的流程。
或者,您必须创建一个 API 端点,B2C 保护的应用程序可以调用该端点。 API 必须在 密码配置文件 .
上使用 client_credentials flow to call Graph API and perform the Update User 操作
用户使用 Active Directory B2C 工作流程注册,因此他们显示为成员
我想做的是像解释的那样更改用户密码 here
所以我的代码如下所示:
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: Unsupported User Type 'Unknown'. Please see https://aka.ms/msal-net-up.
AuthenticationFailedException: UsernamePasswordCredential authentication failed: Unsupported User Type 'Unknown'. Please see https://aka.ms/msal-net-up.
所以我的问题是,是否可以自动更改在 ADB2C 中注册的用户的密码?
如果是,是什么导致了异常?
我知道我可以更改以管理员身份更新 PasswordProfile 的用户的密码,但我想以某种方式验证他们知道他们当前的密码。
您不能使用 Azure AD B2C 帐户向 Microsoft Graph 进行身份验证API。
您必须为此操作从 Azure 门户中的 AAD 用户边栏选项卡创建一个普通的 Azure AD 帐户。这意味着,这对 B2C 用户根本不起作用。
对于更改密码流程,创建一个 self service change-password flow 用户可以自己完成的流程。
或者,您必须创建一个 API 端点,B2C 保护的应用程序可以调用该端点。 API 必须在 密码配置文件 .
上使用 client_credentials flow to call Graph API and perform the Update User 操作