有什么方法可以使用KeyCloak身份验证而不使用其UI?

时间:2019-02-28 06:32:07

标签: authentication kotlin keycloak rbac ktor

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

我已经读过主题自定义,但这不是我想要的。我还知道KeyCloak UI已紧密集成在他们的代码中。我只是想知道至少在客户端应用程序之一是移动应用程序时,我是否可以在整个登录流程中使用例如android UI?

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

2 个答案:

答案 0 :(得分:1)

如果您不想使用Keycloak UI或创建自己的自定义主题,则可以利用Resource Owner Password Credentials Grant流。

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

此后,从客户端(网页,CLI,移动设备)获取令牌。为简单起见,这里我使用curljq

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。