因此,我正在构建一个API系统。我想使用KeyCloak进行身份验证和用户管理,因为它具有不错的访问控制。我将其与Ktor集成在一起,并且希望我的用户使用他们自己的UI。或者至少,我要制作UI。
我已经读过主题自定义,但这不是我想要的。我还知道KeyCloak UI已紧密集成在他们的代码中。我只是想知道至少在客户端应用程序之一是移动应用程序时,我是否可以在整个登录流程中使用例如android UI?
如果不可能,我认为这不太可能,是否还有其他用于访问控制的库或框架,最好是与Ktor一起使用的库或框架?
答案 0 :(得分:1)
如果您不想使用Keycloak UI或创建自己的自定义主题,则可以利用Resource Owner Password Credentials Grant流。
为此,请创建一个新客户端或使用一个现有的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'`
P.S。为了进行调试,我创建了一个名为brauzie的CLI工具, 可以帮助您获取和分析JWT令牌(作用域,角色等)。它可能 适用于公共和机密客户。你也可以 使用Postman和https://jwt.io
HTH:)
答案 1 :(得分:0)
您还可以按照here中的说明使用Keycloak Admin Client。