kcadm 创建的客户端始终未经授权

kcadm created client is always unauthorized

我正在尝试为应用程序自动设置 Keycloak 服务器。其中一部分是使用管理 CLI 设置 Keycloak 客户端:

kcadm.sh create clients -r MyRealm -s clientId=my-client -s enabled=true

这似乎行得通;我可以使用管理控制台看到客户端存在。但是,如果我尝试将该客户端与 Java 客户端一起使用(创建 Keycloak 对象),即使只读操作也会因 HTTP 401 Unauthorized 而失败。我做错了什么?

经过多次试验,我发现了问题的原因。如果您使用 UI 创建客户端,则 UI 会将客户端设置为 public 客户端 并启用 直接访问授权 默认。然而,admin CLI 不会,这会导致通过 Java 客户端的访问被拒绝。您必须在使用管理 CLI 创建客户端时显式设置它们:

kcadm.sh create clients -r MyRealm -s clientId=mc-client -s enabled=true -s directAccessGrantsEnabled=true -s publicClient=true