2016-05-14 84 views
0

我正在处理将UAA-API与我的java控制器链接的java客户端。 我一直在执行密码更改功能的问题。即使有邮差,我也无法得到理想的结果。使用UAA Rest API更改密码

以下是我怎么想提出请求: 我的API端点是:

https://2bcddc1b-01be-4d79-a2c4-ee583984f538.predix-uaa.run.aws-usw02-pr.ice.predix.io/Users/8f47875b-a1c8-47d4-bdde-79eb178eaed8/password 

以下是标题:

Content-Type: application/json 
Authorization: Bearer <user-access-token-generated after login> 
Pragma: no-cache 

每次我做它提供了以下响应的请求:

{ 
    "error": "access_denied", 
    "error_description": "Invalid token does not contain resource id (password)" 
} 

这是API:

https://github.com/cloudfoundry/uaa/blob/master/docs/UAA-APIs.rst#change-password-put-users-id-password 
+0

请求的内容是什么?您是否在用户访问令牌上尝试了“uaac令牌解码”?用户是否有适当的范围来更改客户密码? – j12y

+0

是的。登录的客户端具有scim.write以及scim.read权限以及范围,所以我认为权限不是问题。 P.S .:我创建Java控制器的唯一原因是避免使用UAA客户端。 –

回答

0

端点需要password.write作用域。

访问令牌包含范围。为了使访问令牌包含password.write范围,客户端和用户必须有password.write范围

password.write是默认的用户范围 - 所有用户都有它

在你的情况,收到令牌的客户端没有password.write,所以你访问令牌也不会有。

+1

谢谢。我意识到我的错误是写过的URL。它要求UAA用户名不是用户名。 –