如何使用Auth0 Management API nuget包获取用户密码?

时间:2017-12-21 01:52:29

标签: auth0

我们目前正在尝试对我们的网站进行更改,以便使用Auth0进行身份验证。作为其中的一部分,我正在重写我们用于管理用户的“配置”网站。用户现在将存储在Auth0中,因此配置网站必须能够在我的租户中添加和编辑Auth0用户。

配置网站使用Auth0 Management API nuget包:https://github.com/auth0/auth0.net

但我遇到了一个问题。我可以获得用户列表,我可以创建一个用户。我可以获取用户的详细信息并在屏幕上以编辑形式显示它们,但我无法保存所做的更改,因为当我尝试这样做时,我得到一个错误,我需要在UserUpdateRequest中提供密码。

但是当我得到用户的详细信息(client.Users.GetAsync(id))时,它不会给我一个密码属性。如果我可以从GetAsync(id)调用中获取密码,那么我可以将其添加到UserUpdateRequest。但是,如果我无法从GetAsync获取密码,我如何将密码放入UserUpdateRequest?我该如何保存用户?

我想我的最终问题是:如何使用Management API获取用户密码...以便稍后在调用Users.UpdateAsync时可以将其提供给UserUpdateRequest模型。或者如果我无法获得用户的密码,我可以在不知道密码的情况下以某种方式更新用户吗?

看起来Nuget Management API期望用户自己使用此方法(因此他们可以输入密码来更改其详细信息),而不是通过配置/管理网站运行的管理员用户知道用户密码。

C#User / Edit [HttpGet]动作方法,以获取用户并显示它们:

var token = GetAccessToken();
var apiClient = new ManagementApiClient(token, new Uri("https://MY_TENANT_ID.au.auth0.com/api/v2"));
var user = await apiClient.Users.GetAsync(id);
var userModel = MapUserToUserModel(user);
return View(userModel);

C#User / Edit [HttpPost]操作方法,用于保存对用户详细信息的更改:

var token = GetAccessToken();
var apiClient = new ManagementApiClient(token, new Uri("https://MY_TENANT_ID.au.auth0.com/api/v2"));
var updateReq = new UserUpdateRequest()
{
    UserName = model.UserId,
    Email = model.Email,
    Password = model.Password,
    EmailVerified = model.EmailVerified,
    AppMetadata = model.AppMetadata,
    UserMetadata = model.UserMetadata
};

var user = await apiClient.Users.UpdateAsync(model.UserId, updateReq);

0 个答案:

没有答案