Azure ad b2c Azure AD B2C连接用户使用Graph AD API更改密码

Azure ad b2c Azure AD B2C连接用户使用Graph AD API更改密码,azure-ad-b2c,azure-ad-graph-api,Azure Ad B2c,Azure Ad Graph Api,我们正在使用Azure AD B2C,我正在尝试为登录用户实现changePassword功能。我们遵循了本教程,并成功地使其生效。 但我们希望登录用户能够更改其现有密码(直接在应用程序中)。我们找到了此方法(),但未能使其正常工作 在有登录用户的AD B2C中使用AD Graph API的标准工作流是什么? 我有一个应用程序链接到B2C租户。我已经创建了Android和iOS应用程序,由于注册或登录政策,我能够连接并获得代币,这一点是确定的。。。 同时,我创建了一个服务应用程序来使用AdGra

我们正在使用Azure AD B2C,我正在尝试为登录用户实现changePassword功能。我们遵循了本教程,并成功地使其生效。 但我们希望登录用户能够更改其现有密码(直接在应用程序中)。我们找到了此方法(),但未能使其正常工作

在有登录用户的AD B2C中使用AD Graph API的标准工作流是什么? 我有一个应用程序链接到B2C租户。我已经创建了Android和iOS应用程序,由于注册或登录政策,我能够连接并获得代币,这一点是确定的。。。 同时,我创建了一个服务应用程序来使用AdGraphAPI(感谢上面的第一个链接)。 我们已经成功地测试了一些操作,如获取用户列表、查找特定用户、更改某些。。。。但是现在我想为连接的用户(第二个li)使用“changePassword”方法,但使用失败。我不知道要提供哪个访问令牌,两个测试(使用来自应用程序服务凭据的令牌或使用由于登录策略而收到的访问令牌)都失败了?? 另一个问题,我用PowerShell创建的应用程序服务在Azure门户中不可见是否正常

谢谢;)

另一个问题,我用PowerShell创建的应用程序服务在Azure门户中不可见是否正常

我们可以通过搜索appPrincipalId找到PowerShell创建的服务主体,如下所示:

$app = New-AzureRmADApplication -DisplayName "appPS2" -HomePage "https://adb2cfei.onmicrosoft.com/appPS2" -IdentifierUris "https://adb2cfei.onmicrosoft.com/appPS2" -Password "123"

New-AzureRmADServicePrincipal -ApplicationId $app.ApplicationId
POST: https://graph.windows.net/adb2cfei.onmicrosoft.com/me/changePassword?api-version=1.6

authorization: bearer {access_token}
content-type: application/json

{
"currentPassword":"{currentPassword}",
"newPassword":"{newPassword}"
}

更新 要执行Azure AD Graph的更改密码REST API,我们需要提供委托访问令牌。在这个场景中,我们可以使用资源所有者密码凭证流,它需要用户的用户名和密码进行身份验证。要使用此流,我们可以注册服务主体,如下所示:

$app = New-AzureRmADApplication -DisplayName "appPS2" -HomePage "https://adb2cfei.onmicrosoft.com/appPS2" -IdentifierUris "https://adb2cfei.onmicrosoft.com/appPS2" -Password "123"

New-AzureRmADServicePrincipal -ApplicationId $app.ApplicationId
POST: https://graph.windows.net/adb2cfei.onmicrosoft.com/me/changePassword?api-version=1.6

authorization: bearer {access_token}
content-type: application/json

{
"currentPassword":"{currentPassword}",
"newPassword":"{newPassword}"
}
然后我们需要登录Azure classic门户以授予代理权限
Directory.AccessAsUser.All
,如下图所示:

以下是使用资源所有者密码凭据流获取令牌的代码:

Post: https://login.microsoftonline.com/adb2cfei.onmicrosoft.com/oauth2/token

resource=https%3a%2f%2fgraph.windows.net&client_id={ $app.ApplicationId}&grant_type=password&username=fx%40adb2cfei.onmicrosoft.com&password={currentPassword}&client_secret=123
然后,我们可以使用此令牌更改登录用户的密码,如下所示:

$app = New-AzureRmADApplication -DisplayName "appPS2" -HomePage "https://adb2cfei.onmicrosoft.com/appPS2" -IdentifierUris "https://adb2cfei.onmicrosoft.com/appPS2" -Password "123"

New-AzureRmADServicePrincipal -ApplicationId $app.ApplicationId
POST: https://graph.windows.net/adb2cfei.onmicrosoft.com/me/changePassword?api-version=1.6

authorization: bearer {access_token}
content-type: application/json

{
"currentPassword":"{currentPassword}",
"newPassword":"{newPassword}"
}

关于门户中的位置,可以。但是我恐怕不理解您的其余答案。在本教程之后,我已经完成了您提到的助学金更新。我可以用Graph Api()重置密码。但是现在,如果我想为登录用户实现changePassword(例如:),那么我必须在头中添加什么访问令牌?我用我的B2C应用程序中的访问令牌进行了尝试,但它不起作用……很抱歉造成混淆。我会更新帖子,请让我知道它是否有用。对不起,我不确定我是否理解你说的话。我的实际过程允许我作为一个连接的广告B2C用户完成变更pwd:1。获取GRAPH API的令牌(感谢appID和appSecret)。2.使用用户objectID和我在第一步中获得的令牌请求用户信息。3.解析json并检索其中的UPN。4.为您在第一个答案中描述的应用程序服务请求令牌:UPN和当前密码。5.使用您描述的json(新旧pwd)和头中的令牌(步骤4)调用graph changepassword。有更短的流程吗?@user1523812没有。我认为我们没有任何可以跳过的步骤。