使用承载令牌保护无状态服务
如果适配器配置了仅承载配置选项,策略执行者将根据承载令牌的权限决定是否允许或拒绝访问受保护资源的请求。
- 传递RPT作为承载令牌的HTTP GET示例
GET /my-resource-server/my-protected-resource HTTP/1.1
Host: host.com
Authorization: Bearer ${RPT}
...
在这个例子中,应用程序中的一个keycloak.json文件类似于以下内容:
具有仅承载配置选项的WEB-INF / keycloak.json示例
...
"bearer-only" : true,
...
授权响应
当客户端尝试使用缺少访问受保护资源的权限的承载令牌访问资源服务器时,资源服务器将使用401状态代码和WWW验证标头进行响应。WWW-Authenticate标头的值取决于资源服务器正在使用的授权协议。
以下是使用UMA作为授权协议的资源服务器的响应示例:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: UMA realm="photoz-restful-api",as_uri="http://localhost:8080/auth/realms/photoz/authz/authorize",ticket="${PERMISSION_TICKET}"
另一个例子,当资源服务器正在使用授权协议时:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: KC_ETT realm="photoz-restful-api",as_uri="http://localhost:8080/auth/realms/photoz/authz/entitlement"
一旦客户端收到来自服务器的响应,它将检查状态代码和WWW-Authenticate头以从Keycloak Server获取RPT。