首页 > 解决方案 > 有没有办法在不使用其 UI 的情况下使用 KeyCloak 身份验证?

问题描述

所以,我正在构建一个 API 系统。我想使用 KeyCloak 进行身份验证和用户管理,因为它有一个很好的访问控制。我正在将它与 Ktor 集成,我希望我的用户使用他们自己的 UI。或者至少,我想制作 UI。

我读过主题定制,但这不是我想要的。我还了解到 KeyCloak UI 紧密集成在他们的代码中。我只是希望知道至少当其中一个客户端应用程序是移动应用程序时,我是否可以将例如 android UI 用于整个登录流程?

如果不可能,我认为不太可能,是否有任何其他用于访问控制的库或框架,最好是与 Ktor 一起使用的库或框架?

标签: authenticationkotlinkeycloakrbacktor

解决方案


如果您不想使用 Keycloak UI 也不想创建自己的自定义主题,您可以利用资源所有者密码凭据授予流程。

为此,请创建一个新客户端或使用现有confidential客户端。确保将Direct Access Grants Enabled开关切换到 ON。

在此之后从您的客户端(网页、CLI、移动设备)获取令牌。curl为了简单起见,我在这里使用jq

KCHOST=https://yourkeycloak.com
REALM=your-realm
CLIENT_ID=your-confidential-client
CLIENT_SECRET=xxxxxxx-yyyyyyyy-zzzzzzzzz

ACCESS_TOKEN=`curl \
  -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" \
  -d "grant_type=client_credentials" \
  "$KCHOST/auth/realms/$REALM/protocol/openid-connect/token"  | jq -r '.access_token'`

PS 为了调试,我创建了一个名为brauzie的 CLI 工具,它可以帮助您获取和分析您的 JWT 令牌(范围、角色等)。它可用于公共和机密客户。你也可以使用 Postman 和https://jwt.io

HTH :)


推荐阅读