2.11. 测试应用
有关以 dev 模式测试应用程序的信息,请参阅前面的在 dev mode 部分中运行该应用。
您可以使用 curl
来测试以 JVM 或原生模式启动的应用程序。
- 因为应用程序使用 Bearer 令牌身份验证,您必须首先从 Keycloak 服务器获取访问令牌来访问应用程序资源:
export access_token=$(\ curl --insecure -X POST http://localhost:8180/realms/quarkus/protocol/openid-connect/token \ --user backend-service:secret \ -H 'content-type: application/x-www-form-urlencoded' \ -d 'username=alice&password=alice&grant_type=password' | jq --raw-output '.access_token' \ )
注意
当将 quarkus.oidc.authentication.user-info-required
属性设置为 true
时,需要使用访问令牌来请求 UserInfo
,您必须在令牌授权请求命令中添加 scope=openid
查询参数,例如:
export access_token=$(\ curl --insecure -X POST http://localhost:8180/realms/quarkus/protocol/openid-connect/token \ --user backend-service:secret \ -H 'content-type: application/x-www-form-urlencoded' \ -d 'username=alice&password=alice&grant_type=password&scope=openid' | jq --raw-output '.access_token' \ )
前面的示例获取用户 alice
的访问令牌。
-
任何用户都可以访问
http://localhost:8080/api/users/me
端点,该端点会返回一个 JSON 有效负载,其中包含该用户的详细信息。
curl -v -X GET \ http://localhost:8080/api/users/me \ -H "Authorization: Bearer "$access_token
-
只有具有
admin
角色的用户才能访问http://localhost:8080/api/admin
端点。如果您尝试使用之前发布的访问令牌访问此端点,您可以从服务器获得403
响应。
curl -v -X GET \ http://localhost:8080/api/admin \ -H "Authorization: Bearer "$access_token
-
要访问 admin 端点,获取
admin
用户的令牌:
export access_token=$(\ curl --insecure -X POST http://localhost:8180/realms/quarkus/protocol/openid-connect/token \ --user backend-service:secret \ -H 'content-type: application/x-www-form-urlencoded' \ -d 'username=admin&password=admin&grant_type=password' | jq --raw-output '.access_token' \ )
有关编写依赖于 Keycloak 的 Dev 服务
的集成测试的详情,请参考 "OpenID Connect (OIDC) Bearer 令牌身份验证" 指南中的 Dev Services for Keycloak 部分。