Keycloak 是否可以从 public 客户端访问资源服务器

Keycloak is it possible acess resource server from public client

我是 keycloak 的新手,我想知道是否可以创建 public 客户端然后授权客户端并获取访问令牌。然后使用该访问令牌并创建资源服务器的 UMA 票证并检查客户端是否有权使用相同的授权访问资源

我用这个turtorial https://gruchalski.com/posts/2020-09-05-introduction-to-keycloak-authorization-services/

如果您直接重新授权到资源服务器,它就会起作用。 但是我想使用一个授权来检查可能属于不同资源服务器的资源的权限

我使用此代码获取访问令牌:

    export access_token=`curl --silent -u public-client:1 \
        -k -d "grant_type=password&username=${USER_NAME}&password=${USER_PASSWORD}&scope=email profile" \
        -H "Content-Type:application/x-www-form-urlencoded" \
        ${KEYCLOAK_TOKEN_URL} | jq '.access_token' -r`

然后我尝试将同一用户授权给不同的客户端:

    curl --silent -X POST \
      ${KEYCLOAK_TOKEN_URL} \
      -H "Authorization: Bearer ${access_token}" \
      --data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" \
      --data "audience=resource-server-1"

但我收到“客户端不支持权限” 也许有人知道我需要配置什么才能让它工作,或者即使它能工作?

根据我的阅读,您需要两个客户。一个public,另一个保密。
然后在配置为机密的客户端中设置所有 fine-grained authz 然后在 audience 参数中设置先前配置为机密的客户端 ID。