使用 Azure AD,如何使用临时密码发送更改密码请求?

你的大脑计算机科学

关于 azure AD 和图形 API,我有一个具体问题。

我正在向 API 发出一个简单的更改密码请求。这适用于用户能够登录的情况。但是,如果用户通过门户将其密码重置为临时密码,则他们下次登录时需要更改密码。我遇到的问题是在尝试获取该用户的身份验证令牌时返回异常:

AADSTS50055: Force Change Password.

因此,如果我无法获得身份验证令牌,我应该如何使用 Graph API 发送更改密码请求,以便我的用户可以在我的应用程序中更改他们的密码?

下面是我为已经可以登录的用户更改密码的代码:

public SendPasswordChangeRequest(string userId, string newPass, string oldPass) {
    try {
        HttpClient http = new HttpClient();
        string action = string.Format("/users/{0}/changePassword", user.DistinguishedName);
        string url = string.Format("https://graph.windows.net/{0}{1}?api-version=1.6", tenantId, action);
        object bodyObject = new { currentPassword = oldPass, newPassword = newPass }; 
        string body = JsonConvert.SerializeObject(bodyObject);

        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
        request.Content = new StringContent(body, Encoding.UTF8, "application/json");

        AuthenticationContext authContext = new AuthenticationContext(string.Format("https://login.windows.net/{0}", tenantName));
        UserPasswordCredential credential = new UserPasswordCredential(userId, oldPass); //userId and oldPass are parameters passed in

        AuthenticationResult authResult = authContext.AcquireTokenAsync("https://graph.windows.net/", clientId, credential).Result;
        request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);

        HttpResponseMessage httpResponse = http.SendAsync(request).Result;
    }
    catch (Exception ex) {
        //authResult throws the error into here
        //Error returned from Azure AD:
        //AADSTS50055: Force Change Password.
    }
}
菲利普·西诺雷

简短的回答是:你不能。

这是一个很好的例子,说明为什么在您可以使用任何交互式身份验证流程的任何情况下不鼓励使用用户名/密码流程。来自OAuth 2.0 规范,这是该模式调用的内容(强调):

资源所有者密码凭证(即用户名和密码)可以直接用作授权许可来获取访问令牌。仅当资源所有者和客户端之间存在高度信任(例如,客户端是设备操作系统或高特权应用程序的一部分)并且其他授权授予类型不可用时,才应使用凭据(例如授权码)

如果您的应用程序是本机客户端应用程序(即富客户端应用程序),您应该调用其中一个AcquireToken流程,流程会使用 Azure AD 托管的登录页面弹出登录提示。这将为用户提供更改其密码的机会(并允许其他中断,例如多因素身份验证)。

对于其他方案(Web 应用程序、单页应用程序等),Azure AD 的身份验证方案有更多详细信息,可以在Azure Active Directory 开发人员指南 中找到示例和其他参考

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Azure AD使用图形API更改临时密码

来自分类Dev

如何使用C#针对Azure AD验证用户的密码

来自分类Dev

使用PowerShell更改Azure VM的密码

来自分类Dev

使用Azure AD Graph客户端API更改用户密码的权限问题

来自分类Dev

将 Azure AD B2C 与 Azure 移动应用一起使用时,如何设置密码策略?

来自分类Dev

使用Azure Graph API更改过期密码

来自分类Dev

使用Azure cli创建后如何检索服务主体密码?

来自分类Dev

如何使用 powershell 为用户获取 Azure SQL DB 密码

来自分类Dev

使用Azure AD的无头身份验证(用户/密码组合)

来自分类Dev

pyodbc是否支持使用AD访问令牌而不是用户/密码连接到Azure SQL DB?

来自分类Dev

是否可以使用Azure Ad Graph API实施“忘记密码功能”?

来自分类Dev

尝试使用外部域中的用户名更改本地 Azure AD B2C 用户的密码时出现错误 AADSTS50034

来自分类Dev

使用UrlEncodedFormEntity发送密码

来自分类Dev

如何使用devise发送重置密码链接?

来自分类Dev

如何使用devise发送重置密码链接?

来自分类Dev

如何使用密码请求获取节点的ID?

来自分类Dev

Azure AD用户的密码

来自分类Dev

如何在解析Android上使用旧密码更改密码

来自分类Dev

如何使用Adldap2-laravel软件包更改AD用户密码?

来自分类Dev

如何使用Perl更改mysql密码

来自分类Dev

如何使用Perl更改mysql密码

来自分类Dev

使用临时密码登录或使用密码登录L5

来自分类Dev

我可以在 Azure AD B2C 中使用“资源所有者密码授予”流程吗

来自分类Dev

如何使用 terraform 为 Azure 应用程序网关设置密码套件

来自分类Dev

如何使用NodeJS登录到Azure AD?

来自分类Dev

使用PHP安全发送密码

来自分类Dev

更改密码Azure AD B2C

来自分类Dev

使用Twitter API更改密码

来自分类Dev

使用编辑文本更改密码

Related 相关文章

  1. 1

    Azure AD使用图形API更改临时密码

  2. 2

    如何使用C#针对Azure AD验证用户的密码

  3. 3

    使用PowerShell更改Azure VM的密码

  4. 4

    使用Azure AD Graph客户端API更改用户密码的权限问题

  5. 5

    将 Azure AD B2C 与 Azure 移动应用一起使用时,如何设置密码策略?

  6. 6

    使用Azure Graph API更改过期密码

  7. 7

    使用Azure cli创建后如何检索服务主体密码?

  8. 8

    如何使用 powershell 为用户获取 Azure SQL DB 密码

  9. 9

    使用Azure AD的无头身份验证(用户/密码组合)

  10. 10

    pyodbc是否支持使用AD访问令牌而不是用户/密码连接到Azure SQL DB?

  11. 11

    是否可以使用Azure Ad Graph API实施“忘记密码功能”?

  12. 12

    尝试使用外部域中的用户名更改本地 Azure AD B2C 用户的密码时出现错误 AADSTS50034

  13. 13

    使用UrlEncodedFormEntity发送密码

  14. 14

    如何使用devise发送重置密码链接?

  15. 15

    如何使用devise发送重置密码链接?

  16. 16

    如何使用密码请求获取节点的ID?

  17. 17

    Azure AD用户的密码

  18. 18

    如何在解析Android上使用旧密码更改密码

  19. 19

    如何使用Adldap2-laravel软件包更改AD用户密码?

  20. 20

    如何使用Perl更改mysql密码

  21. 21

    如何使用Perl更改mysql密码

  22. 22

    使用临时密码登录或使用密码登录L5

  23. 23

    我可以在 Azure AD B2C 中使用“资源所有者密码授予”流程吗

  24. 24

    如何使用 terraform 为 Azure 应用程序网关设置密码套件

  25. 25

    如何使用NodeJS登录到Azure AD?

  26. 26

    使用PHP安全发送密码

  27. 27

    更改密码Azure AD B2C

  28. 28

    使用Twitter API更改密码

  29. 29

    使用编辑文本更改密码

热门标签

归档