Jay*_*444 5 api https unauthorized access-token keycloak
我正在尝试通过其REST API与Keycloak进行交互。我有主领域和默认的admin用户,以及测试领域。首先,我获得了管理员帐户和测试领域的访问令牌:
let data = {
grant_type : 'password',
client_id : 'test-realm',
username : 'admin',
password : 'admin'
};
let headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
axios.post(
'https://someurl.com:8080/auth/realms/master/protocol/openid-connect/token',
qs.stringify(data),
headers
)
Run Code Online (Sandbox Code Playgroud)
没关系。然后,我尝试拨打电话来创建用户(或执行其他任何操作),然后收到401未经授权的错误:
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': `Bearer ${accessToken}`
};
data = {
rep: {
email: "test@email.com",
username: "test@email.com"
},
path: 'test-realm'
};
axios.post('https://someurl.com:8080/auth/admin/realms/test-realm/users',
qs.stringify(data),
headers
)
Run Code Online (Sandbox Code Playgroud)
这不是包含令牌的正确方法吗?访问令牌是您用来认证其他API调用的令牌吗?管理员帐户的令牌不应该用于通过主领域验证对其他客户端的呼叫吗?我必须在管理控制台中更改主领域中的某些设置吗?任何帮助表示赞赏。
Tob*_*nst 17
我收到 401 错误,因为我使用http://localhost:8080生成脱机令牌,然后尝试使用http://keycloak:8080请求 api ,这是不允许的。不幸的是日志没有告诉你这一点。
要调试 JWT 令牌,我建议使用https://jwt.io/
这不是包含令牌的正确方法吗?
这是正确的方法。
您只是做错了什么。请参考keycloak-request-tokenNode.js模块中的示例:
https://github.com/keycloak/keycloak-request-token/blob/master/index.js#L43
你用
client_id : 'test-realm'
Run Code Online (Sandbox Code Playgroud)
但是还有
client_id: 'admin-cli'
Run Code Online (Sandbox Code Playgroud)
在那里(不知道有没有关系)。
另外,要创建用户,您应该使用
'Content-Type': 'application/json'
Run Code Online (Sandbox Code Playgroud)
您可以在此处参考Keycloak REST API的Node.js示例:
https://github.com/v-ladynev/keycloak-nodejs-example/blob/master/lib/adminClient.js
其他有用内容的示例,例如:
可以在同一项目中找到:keycloak-nodejs-example
| 归档时间: |
|
| 查看次数: |
7257 次 |
| 最近记录: |