【问题标题】:Change Azure B2C account password on behalf of a user代表用户更改 Azure B2C 帐户密码
【发布时间】:2023-01-05 19:18:31
【问题描述】:

我正在尝试更改在我的 Azure B2C 租户中创建的用户的密码。我正在使用 Microsoft.Graph C# SDK 进行 API 调用。

首先,我通过提供租户的详细信息来创建 GraphServiceClient:

var options = new TokenCredentialOptions
{
   AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};
    
var clientSecretCredential = new ClientSecretCredential("tenantId", "clientId",  "clientSecret", options);
    
_client = new GraphServiceClient(clientSecretCredential);

然后我使用客户端的内置方法来更改用户的密码:

await _client.Users["userId"].ChangePassword(currentPassword, newPassword).Request().PostAsync();

但我收到以下错误:

Microsoft.Graph.ServiceException:代码:Authorization_RequestDenied 消息:访问更改密码操作被拒绝。

是否可以代表用户更改密码?我在互联网上发现了关于这个主题的相互矛盾的信息。如果这是不可能的,那么执行此操作的有效方法是什么?

我有一个 SPA 前端应用程序,其中用户通过重定向流进行身份验证。然后将访问令牌传递到我的后端以授权请求。也许我可以使用此令牌以某种方式访问​​ MS Graph API 并更改密码?

注意:我想让用户在不离开我的 SPA 应用程序的情况下更改他们的密码。

【问题讨论】:

    标签: azure microsoft-graph-api azure-ad-b2c


    【解决方案1】:

    我在我的环境中尝试并得到以下结果:

    最初我尝试使用您的代码并得到相同的错误:

    根据MS-DOCS更改我们需要的密码Directory.AccessAsUser.All权限,它仅支持委托(工作或学校帐户)。

    尝试使用图形 API 在 B2C 租户中重置密码是不可能的不幸的是,因为没有Directory.AccessAsUser.All, B2C 租户不允许这种类型的密码重置。对于 B2C 租户,Graph API 包含权限。在 B2C 租户中,只有脱机访问和 openID 可作为委派权限使用。

    您可以在 B2C 租户中重置密码,管理员可以通过 Azure 门户或使用 Password Reset Policy 执行密码重置,还可以参考此 MS-Q&A 以更新 powershell 和邮递员中的密码。

    参考:

    "Upn from claims with value null is not a valid upn." - Microsoft Q&A 作者:amanpreetsingh-msft。

    【讨论】:

      猜你喜欢
      • 2018-01-16
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      相关资源
      最近更新 更多