【发布时间】:2022-01-08 05:51:16
【问题描述】:
我正在尝试从 Keycloak 端点读取获取身份验证令牌并使用它来访问另一个资源。获取令牌不是问题,但在另一个请求的标头中传递它是一个不可能的壮举,至少在一个命令中:
curl \
-X POST \
-d 'client_id=app' \
-d 'username=username' \
-d 'password=password' \
-d 'grant_type=password' \
-d "client_secret=$APP_SECRET" \
'http://localhost:9000/auth/realms/realm/protocol/openid-connect/token' \
| \
jq -r '.access_token' \
| \
curl \
-X GET \
-H "Accept: application/json" \
-H "Authorization: Bearer @-" \ # <- read header value from stdin
-u "username:password" \
"http://localhost:8080/app/api/"
实现这一目标的替代方法是什么?
【问题讨论】:
-
这可能会有所帮助:
echo def | echo "abc$(</dev/stdin)ghi" -
@Cyrus 有点:回声 123 | echo "abc $(/stdin) def" zsh: 读取 /dev/stdin 时出错:输入/输出错误 abc def
-
将标签“bash”替换为“zsh”。希望对您有所帮助。
-
为什么不简单地分两步完成呢?提取令牌,存储在变量中并在下一个
curl? 中重新使用它 -
因为我不擅长 shell 脚本。 :)