我正在制作一个机器人,我必须向一个GraphQL应用程序接口发出请求,而它是由Keycloak保护的。我在文档of this site中对其进行了初始化
var Keycloak = require('keycloak-connect');
const session = require('express-session');
var memoryStore = new session.MemoryStore();
const keycloak = new Keycloak({
store: memoryStore
},
{
url: "https://host.com",
realm: "app-realm",
clientId: "app-clientId"
})当我要进行查询时,我需要令牌在头中传递它,但不知道如何获得这个令牌。
const fetch = require('node-fetch');
var token = ''; // this is what i dont know how to get
var bearer = 'Bearer ' + token;
fetch("https://api-host/graphql",{
method:'POST',
headers: {
'Authorization': bearer,
"Content-Type":"application/json"
},
body: JSON.stringify({
query: `
{
services{
name
}
}
`
}),
})
.then(res => res.json())
.then(data => {console.log(data)} )发布于 2020-12-12 13:21:36
如果密钥罩客户端是机密的,则可以使用client_id和client_secret创建访问令牌;如果客户端是公共的,则可以使用OAuth代码授权流生成访问令牌
您可以使用令牌端点创建访问令牌。
示例cURL:
curl --request POST --url https://authserver/auth/realms/yourrealm/protocol/openid-connect/token --header 'Content-Type: application/x-www-form-urlencoded' --data 'grant_type=client_credentials&client_id=client_id&client_secret=client_secret'https://stackoverflow.com/questions/65243629
复制相似问题