如何在具有自定义身份验证的django rest框架中使用keycloak

how to use keycloak in django rest framework with custom authentication

这个问题的更好标题是:如何在 django grpc 框架中使用 keycloak。

我想用keycloak处理用户注册。这是没有密钥斗篷的我的服务:

class UserService(Service):
    def Create(self, request, context):
        serializer = UserProtoSerializer(message=request)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        # some code for sending activation email
        return serializer.message

并且我使用的是自定义用户。 我在 keycloak 管理控制台中创建了一个领域和客户端。将这两者联系起来的最佳方式是什么?我可以尝试使用 drf-keycloak-auth or python-keycloak 吗?

对于自定义身份验证,最好使用 python-keycloak。您可以在 keycloak 和您的数据库中创建一个用户对象,并在其中保存有关用户的不同信息。

如果您按照 keycloak documentation 中的步骤进行操作,文档就基本清楚了。我不太明白的是 keycloak_admin.create_user 的输入参数,用于在名为 'test' 的领域中创建新用户。这是文档中令人困惑的代码:

keycloak_admin = KeycloakAdmin(server_url="http://localhost:8080/auth/",
                               username='example-admin',
                               password='secret',
                               realm_name="master",
                               user_realm_name="only_if_other_realm_than_master",
                               client_secret_key="client-secret",
                               verify=True) 

现在,在从 keycloak 文档跳到 python-keycloak 文档之前,您应该知道的是,您应该在新的领域管理角色中赋予一个用户。 check this link.

keycloak_admin = KeycloakAdmin(server_url="http://localhost:8080/auth/",
                               username='test@user.com',
                               password='123',
                               realm_name="test",
                               verify=True)

生成客户端密码检查:https://wjw465150.gitbooks.io/keycloak-documentation/content/server_admin/topics/clients/oidc/confidential.html