首页 > 解决方案 > 使用 Python 从 Keycloak 检索用户信息时出现客户端错误

问题描述

将 Keycloak 与 python 和烧瓶一起使用来进行身份和访问管理。

这是发生问题的代码部分:

from keycloak import Client
app = flask(__name__)
kc=Client()

.
.
.

app.route('/login')
def login():
    .
    .
    .
    access_token = kc.access_token
    userinfo = kc.fetch_userinfo(access_token) #the main issue
    session['user'] = userinfo

    return jsonify(userinfo)

if __name__ == "__main__":
    app.run()

所以对于“userinfo”部分,会出现错误:requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: http://localhost:8080/auth/realms/linkedin_login/protocol/openid-connect/userinfo

如果您有使用 keycloak 的经验,您是否知道是否需要更改任何内容才能授权在 keycloak 中使用 userinfo?谢谢!

标签: pythonkeycloak

解决方案


如果您来自 Keycloak 的 Client() 是 KeycloakAdmin 实例(我正在使用https://pypi.org/project/python-keycloak/),则错误可能来自尝试使用管理凭据访问用户信息。

如果您的 Client() 再次是来自(https://pypi.org/project/python-keycloak/)的 KeycloakOpenID,则可能是权限问题。您可以在 keycloak 界面中检查您设置的用户是否设置了角色映射>领域管理>领域管理(或根据您要授予他的权限而设置的等效项)。

无论如何,可以在https://www.keycloak.org/docs/latest/server_admin/index.html找到一个非常有用的文档

最后,这可能是题外话,但如果您从用户信息中访问特定的自定义字段,客户端范围面板将帮助您添加它们。


推荐阅读