authentication - 有没有办法在不使用其 UI 的情况下使用 KeyCloak 身份验证?
问题描述
所以,我正在构建一个 API 系统。我想使用 KeyCloak 进行身份验证和用户管理,因为它有一个很好的访问控制。我正在将它与 Ktor 集成,我希望我的用户使用他们自己的 UI。或者至少,我想制作 UI。
我读过主题定制,但这不是我想要的。我还了解到 KeyCloak UI 紧密集成在他们的代码中。我只是希望知道至少当其中一个客户端应用程序是移动应用程序时,我是否可以将例如 android UI 用于整个登录流程?
如果不可能,我认为不太可能,是否有任何其他用于访问控制的库或框架,最好是与 Ktor 一起使用的库或框架?
解决方案
如果您不想使用 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 :)
推荐阅读
- c# - 在 Windows 窗体中迭代用户控件时出现问题
- php - Composer\Repository\InvalidRepositoryException 第 1 行解析错误:
- python - 有没有办法让这段代码更快?
- c++ - 如何使用 Legacy OpenGL 绘制不同颜色的线条?
- r - 如何在R中的for循环中获取具有相同名称的列表中向量的平均值
- ajax - 会话到期时如何在 laravel 中显示弹出消息,然后再重定向到登录页面?
- android - 淡入淡出的正确编码(逐字)
- swift - 在 SWIFT 4.0 中触发通知后如何添加附加操作?
- export - Kentico v10 是否可以将 CMS 媒体库中的文件批量导出到 PC 上的文件夹中?
- r - dplyr 通过多列的并集分组